Está en la página 1de 15

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

PROGRAMACION ORIENTADA A OBJETOS

Unidad 1: Fase 1 - Análisis de requisitos

Presentación

Andrés Camilo Tautiva Vargas.

Director de Curso

FRANKLIN LIZCANO CELIS

CEAD: José Acevedo y Gómez


Ingeniería de Sistemas

Bogotá D.C

Febrero de 2020
1. Cuál es la diferencia entre programación estructurada y programación
orientada a objetos

Programación Estructurada

La programación estructurada nació como solución a los problemas que


presentaba la programación no estructurada, la cual se empleó durante mucho
tiempo antes de la invención de la programación estructurada.

Un programa no estructurado es un programa procedimental: las instrucciones


se ejecutan en el mismo orden en que han sido escritas. Sin embargo, este tipo
de programación emplea la instrucción "goto". Una instrucción "goto" permite
pasar el control a cualquier otra parte del programa. Cuando se ejecuta una
instrucción "goto" la secuencia de ejecución del programa continúa a partir de
la instrucción indicada por "goto". De esta forma, para comprender como
funciona un programa es necesario simular su ejecución. Esto quiere decir que
en la mayoría de los casos es muy difícil comprender la lógica de un programa
de este tipo. Algunos compiladores crean referencias cruzadas a las
instrucciones apuntadas por los "goto", posibilitando una navegación rápida a
través del código fuente. Sin embargo, es algo común en muchos lenguajes de
programación el empleo de una variable en asociación con el destino del
"goto", no permitiendo la creación automática de tablas de referencias
cruzadas. Existen problemas similares en algunos lenguajes de programación
estructurada, por ejemplo, cómo implementar las vistas en diferentes idiomas,
de forma que varias personas puedan visualizar la misma información, pero
cada una en su idioma.

Esto se opone a la idea de utilizar algún tipo de abstracción que permita


comprender cómo funciona realmente un programa, que es lo que hace la
programación estructurada. Lo que podíamos llamar "programación
tradicional", por ejemplo la que se utilizaba (utiliza) en la confección de
programas para los primitivos PCs bajo MS-DOS, o en los actuales Win-32
bajo una "ventana" DOS, es un concepto un tanto ambiguo, pero podemos
intentar una definición diciendo que se basa en algunas premisas y
características bastante definidas. Estas características pueden coexistir juntas
o faltar alguna, pero en general se dan simultáneamente.

La programación estructurada es una técnica para escribir programas


(programación de computadora) de manera clara. Para ello se utilizan
únicamente tres estructuras: secuencia, selección e iteración; siendo
innecesario el uso de la instrucción o instrucciones de transferencia
incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de programación existentes en los años 1960, principalmente
debido a las aplicaciones gráficas, por lo que las técnicas de programación
estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas
técnicas, tales como la programación orientada a objetos y el desarrollo de
entornos de programación que facilitan la programación de grandes
aplicaciones.

Programación orientada a objetos

La programación orientada a objetos o POO (OOP según sus siglas en inglés)


es un paradigma de programación que usa objetos y sus interacciones, para
diseñar aplicaciones y programas informáticos. Está basado en varias técnicas,
incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se
popularizó a principios de la década de los años 1990. En la actualidad, existe
variedad de lenguajes de programación que soportan la orientación a objetos.

Los objetos son entidades que tienen un determinado estado, comportamiento


(método) e identidad:

El estado está compuesto de datos, será uno o varios atributos a los que se
habrán asignado unos valores concretos (datos).

El comportamiento está definido por los métodos o mensajes a los que sabe
responder dicho objeto, es decir, qué operaciones se pueden realizar con él.

La identidad es una propiedad de un objeto que lo diferencia del resto, dicho


con otras palabras, es su identificador (concepto análogo al de identificador de
una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo


frente a otros objetos pertenecientes a otras clases e incluso frente a objetos
de una misma clase, al poder tener valores bien diferenciados en sus atributos.
A su vez, los objetos disponen de mecanismos de interacción llamados
métodos, que favorecen la comunicación entre ellos. Esta comunicación
favorece a su vez el cambio de estado en los propios objetos. Esta
característica lleva a tratarlos como unidades indivisibles, en las que no se
separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente
relacionados por la propiedad de conjunto. Esta propiedad destaca que una
clase requiere de métodos para poder tratar los atributos con los que cuenta. El
programador debe pensar indistintamente en ambos conceptos, sin separar ni
darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito
erróneo de crear clases contenedoras de información por un lado y clases con
métodos que manejen a las primeras por el otro. De esta manera se estaría
realizando una programación estructurada camuflada en un lenguaje de
programación orientado a objetos.

La POO difiere de la programación estructurada tradicional, en la que los datos


y los procedimientos están separados y sin relación, ya que lo único que se
busca es el procesamiento de unos datos de entrada para obtener otros de
salida. La programación estructurada anima al programador a pensar sobre
todo en términos de procedimientos o funciones, y en segundo lugar en las
estructuras de datos que esos procedimientos manejan. En la programación
estructurada sólo se escriben funciones que procesan datos. Los
programadores que emplean POO, en cambio, primero definen objetos para
luego enviarles mensajes solicitándoles que realicen sus métodos por sí
mismos.

2. Sintaxis para definir variables en Java, realizar comentarios, imprimir en


consola y Java Message Box.

La sintaxis básica es: System.out.println

Ten en cuenta que la primera S de System.out es mayúscula. Si la escribes


minúscula obtendrás un error de compilación. Tenlo presente porque cualquier
pequeño error de escritura (el simple cambio de una letra) en el nombre de un
objeto, variable, método, etc. puede dar lugar a errores. Además, BlueJ en
ocasiones te señalará el lugar del error pero en otras ocasiones no lo hará con
exactitud y tendrás que buscarlo con paciencia. Ten también presente que los
espacios dentro de las comillas cuentan, es decir, el resultado de escribir
(“Mensaje a mostrar”); no es el mismo que el de escribir ("        Mensaje a
mostrar");.

Si queremos incluir variables concatenamos usando el símbolo + de esta manera:

System.out.println ("El precio es de " + precio + " euros");


3. Sintaxis de los operadores lógicos y relacionales

Los operadores de comparación o relacionales básicos en C son:

Operador Significado
Operador < Menor que
Operador <= Menor o igual que
Operador > Mayor que
Operador >= Mayor o igual que
Operador == Igual a
Operador != Distinto de o no igual que

Es importante tener en cuenta que para comparar si una variable A es igual a otra debemos
usar A == B en lugar de A = B. El doble signo igual se usa en comparaciones mientras que
el signo igual sencillo se usa en asignaciones.

Para determinar si una variable A tiene distinto contenido que una variable B debemos usar
A != B. En C no se admite la sintaxis A <> B que usamos en pseudocódigo.

Suponiendo que la variable A tiene un valor A = 5 y la variable B un valor B = 7 podríamos


plantear las siguientes expresiones:

Expresión Resultado Ejemplo código


A == B 0 (falso) printf ("A == B vale %d\n", (A == B) );
A != B 1 (verdadero) printf ("A != B vale %d\n", (A != B) );
A>B 0 (falso) printf ("A > B vale %d\n", (A > B) );
A >= B 0 (falso) printf ("A >= B vale %d\n", (A >= B) );
A<B 1 (verdadero) printf ("A < B vale %d\n", (A < B) );
A <= B 1 (verdadero) printf ("A <= B vale %d\n", (A <= B) );

OPERADORES LÓGICOS EN C

Los operadores lógicos básicos en C son los siguientes:

Operador Significado
Operador && Operador lógico and
Operador || Operador lógico or
Operador ! Operador lógico not

Suponiendo que tenemos cuatro variables A, B, C y D cuyos valores se han establecido en


A = 5, B = 7, C = 2, D = 5 podríamos evaluar estas expresiones:

Pregunta
Expresión Resultado Ejemplo código
equivalente
(A == B) && (A < ¿Es A igual a B y printf ("Pregunta (A == B) && (A < B) vale
0 (falso)
B) A menor que C? %d\n", (A == B) && (A < B));
¿Es A igual a 5 ó
printf ("Pregunta (A == 5) || (A > 7) vale %d\n",
(A == 5) || (A > 7) es A mayor que 1 (verdadero)
(A == 5) || (A > 7));
7?
¿A es NO igual a printf ("Pregunta ! ( A == 5 ) vale %d\n", ! ( A
! ( A == 5 ) 0 (falso)
5? == 5 ));

4.  Defina Clase, instancia de clase, atributo, comportamiento, identidad, constructor e


identificadores.

Atributos

Los atributos son las características individuales que diferencian un objeto de otro
y determinan su apariencia, estado u otras cualidades. Los atributos se guardan
en variables denominadas de instancia, y cada objeto particular puede tener
valores distintos para estas variables.

Las variables de instancia también denominados miembros dato, son declaradas


en la clase pero sus valores son fijados y cambiados en el objeto.

Además de las variables de instancia hay variables de clase, las cuales se aplican
a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un
automóvil es el mismo cuatro, para todos los automóviles.

Comportamiento

El comportamiento de los objetos de una clase se implementa mediante funciones


miembro o métodos. Un método es un conjunto de instrucciones que realizan una
determinada tarea y son similares a las funciones de los lenguajes estructurados.
Del mismo modo que hay variables de instancia y de clase, también hay métodos
de instancia y de clase. En el primer caso, un objeto llama a un método para
realizar una determinada tarea, en el segundo, el método se llama desde la propia
clase.

Los constructores

Un objeto de una clase se crea llamando a una función especial denominada


constructor de la clase. El constructor se llama de forma automática cuando se
crea un objeto, para situarlo en memoria e inicializar los miembros dato declarados
en la clase. El constructor tiene el mismo nombre que la clase. Lo específico del
constructor es que no tiene tipo de retorno.

Identificadores

Cómo se escriben los nombres de la variables, de las clases, de las funciones,


etc., es un asunto muy importante de cara a la comprensión y el mantenimiento de
código. En la introducción a los fundamentos del lenguaje Java hemos tratado ya
de los identificadores.

El código debe de ser tanto más fácil de leer y de entender como sea posible.
Alguien que lea el código, incluso después de cierto tiempo, debe ser capaz de
entender lo que hace a primera vista, aunque los detalles internos, es decir, cómo
lo hace, precise un estudio detallado.

Vemos primero un ejemplo que muestra un código poco legible y por tanto, muy
difícil de mantener

5. Informe los tipos de clase

Informes expositivos: son aquellos que recogen información sobre un tema


sin incluir conclusiones o evaluaciones. En ocasiones, reciben el nombre de
"dossier".

Informes analíticos: tienen como finalidad justificar una decisión o una


acción ya realizada o, al menos, planteada previamente. Pueden
denominarse "propuesta" o "proyecto".

Informes persuasivos: son informes con los cuales se pretende convencer


al destinatario para que tome una decisión específica en la línea de lo que
se expone en el estudio.
6. Describa el concepto de Modularización, Herencia, Polimorfismo y
Encapsulamiento.

Modularización

El modularidad es la propiedad que permite dividir una aplicación en partes más


pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente
como sea posible de la aplicación en sí y de las restantes partes.

En el lenguaje de programación Java y en algunos entornos de desarrollo


integrado (IDE), el modularidad radica en la separación de todos los posibles
paquetes de código. La siguiente imagen muestra la división que se hace a partir
de una aplicación base o un servicio general, que se divide en diferentes módulos
con un propósito especial y finalmente una subdivisión en pequeños paquetes de
código que integran las clases.

Herencia

Es una propiedad que permite crear clases a partir de otras ya existentes,


obteniendo características (métodos y atributos) similares a los ya existentes. En
otras palabras la nueva clase (subclase o clase derivada) puede utilizar la misma
implementación de su superclase (clase base) o especificar una nueva
implementación.

o Es la relación entre una clase general y otra clase más especifica.


o Es un mecanismo que nos permite crear clases derivadas a partir de clases
base.
o Nos permite compartir automáticamente métodos y datos entre clases,
subclases y objetos. Por ejemplo: Si declaramos una clase párrafo derivada
de una clase texto todos los métodos y variables asociadas con la clase
texto son automáticamente heredados por la subclase párrafo.
Polimorfismo

Son comportamientos diferentes, asociados a objetos distintos, pueden compartir


el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando.

Tipos de polimorfismo:

o Polimorfismo Ad Hoc
o Polimorfismo paramétrico
o Polimorfismo de subtipos

Polimorfismo Ad Hoc: Se refiere a funciones que cambian su comportamiento


dependiendo del tipo de argumentos que reciben (sobrecarga de métodos o
funciones).
La sobrecarga de métodos hace referencia a varios métodos con el mismo nombre
pero con diferentes firmas.

Encapsulamiento

Los eventos son todas las acciones que el usuario inicia al dar clic sobre un botón,
presionar una tecla, etc. Cada vez que se produce un evento se crea un objeto.

Este tipo de clases nos permiten crear "métodos generales", que recrean un
comportamiento común, pero sin especificar cómo lo hacen. A nivel de código
tiene por particularidad que algunos de sus métodos no tienen “cuerpo de
declaración “.

o Una clase que declara la existencia de métodos pero no la implementación


de dichos métodos (o sea, las llaves { } y las sentencias entre ellas), se
considera una clase abstracta.
o Una clase es declarada abstracta cuando no es posible crear instancias de
ella.
o Una clase debe ser declarada abstracta si posee al menos un método
declarada abstracto.
o Un método abstracto es aquel que no posee implementación.

7. Informe cómo convertir un Sting a entero en Java y viceversa

Para hacer la siguiente operación necesitaremos hacer uso de la clase Integer y de


su método parseInt de la siguiente manera:
String numCadena = "1";
int numEntero = Integer.parseInt(numCadena);

¿Qué problemas podemos tener? pues que la cadena no sólo contenga números sino que
venga con espacios.

Si los espacios vienen al principio o al final, con un simple trim bastará para
eliminarlos, por ejemplo (“1”)

numCadena.trim();

Si tenemos espacio entre los números (“ 1 3 45 6”) deberíamos usar el método


replaceAll.

numCadena.replaceAll(" ", "");

Una vez realizados estos sencillos pasos podremos trabajar con los números enteros.

8. Defina el concepto de método y realice un ejemplo constructor


Constructores

Un Constructor es una función, método, etc., de las clases, la cual es


llamada automáticamente cuando se crea un objeto de esa clase.
Por ser métodos, los constructores también aceptan parámetros. Cuando
en una clase no especificamos ningún tipo de constructor, el compilador
añade uno público por omisión sin parámetros, el cual NO hace nada.
Características de los Constructores

    Un constructor, tiene el mismo nombre de la clase a la cual pertenece.


2.     No puede ser Heredado.
3.     No retorna ningún valor (Ni void), por lo cual no debe especificarse
ningún tipo de dato.
4.     Debe declararse como public, sólo en casos realmente extraordinarios
será de otro tipo.
Supongamos una clase llamada Datos
public class Datos
{
   //declaracion de atributos
            public Datos();//constructor sin parametros
            public Datos(int Edad)
            {//Constructor con parámetros
               EdadM=Edad;
            }
}
Ejemplo.
Se Desea crear un objeto del tipo Coordenadas, que indique, la posición de
un punto en el plano cartesiano, y permita calcular la distancia existente con
otro punto, además del punto medio entre ellos.
1 /*Archivo Coordenadas.java*/
 2
 3 public class Coordenadas {
 4        private int x,y;//Atributos
 5                      public Coordenadas (int x1 , int y1)//constructor
 6                      {
 7                         //asignamos esos valores
 8                                  x=x1;
 9                                  y=y1;
10                     }
11                     public double Distancia (int x1, int y1)
12                     {
13                         //este método recibe como parametros
14                                  //las coordenadas del segundo punto
15                         double D;
16                                  D=Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
17                                  return D;//Retornamops el valor de la distancia
18                    }
19                    public void Pmedio(int x1, int y1)
20                    {
21                        double p1, p2;
22                                 p1=(x+x1)/2;
23                                 p2=(y+y1)/2;
24                                 System.out.println("El puntomedio es: "+p1+","+p2);
25                    }
26        }
 
1 /*Archivo UsaCoordenadas.java*/
 2 public class UsaCoordenadas {
 3 public static void main (String args []){
 4      Coordenadas P=new Coordenadas (10,20);
 5           //calculamos la Distancia:
 6           System.out.println("La Distancia es: "+P.Distancia(5,6));
 7           //Punto Medio
 8           P.Pmedio(5,6);
 9          }
10 }

Explicación:
Un método, si va a devolver algún valor, éste debe especificarse cuando se
hace la definición del mismo, para el caso, el método Distancia, devuelve el
valor de la distancia, es por ello que lo especificamos como public double.
Además que, cuando realizamos la llamada de  ese método, es en ese
preciso lugar que aparecerá el valor que devuelve. Por otra parte,  los
atributos, son de acceso privado, lo cual implica que, sólo podemos acceder
a ellos,  en la clase Coordenadas.

9. Qué función tiene el paquete Swing en Java y describa sus principales


características

El paquete Swing es el nuevo paquete gráfico que ha aparecido en la versión 1.2


de Java. Está compuesto por un amplio conjunto de componentes de interfaces de
usuario que funcionen en el mayor número posible de plataformas.

Cada uno de los componentes de este paquete puede presentar diversos


aspectos y comportamientos en función de una biblioteca de clases. En la versión
1.0 de Swing, que corresponde a la distribuida en la versión 1.2 de la API de Java
se incluyen tres bibliotecas de aspecto y comportamiento para Swing:

 metal.jar: Aspecto y comportamiento independiente de la plataforma.

 motif.jar: Basado en la interfaz Sun Motif.

 windows.jar: Muy similar a las interfaces Microsoft Windows.

La siguiente imagen muestra una aplicación de ejemplo (adjunta al JDK 1.2) que
muestra las diferentes interfaces para una misma aplicación según se utilice una u
otra biblioteca:

Es la nueva clase denominada UiManager la que se encarga del aspecto y


comportamiento de una aplicación Swing en un entorno de ejecución.

Nuevas características

 Amplia variedad de componentes: En general las clases que comiencen por


"J" son componentes que se pueden añadir a la aplicación. Por ejemplo:
JButton.
 Aspecto modificable (look and feel): Se puede personalizar el aspecto de
las interfaces o utilizar varios aspectos que existen por defecto (Metal Max,
Basic Motif, Windows Win32).

 Arquitectura Modelo-Vista-Controlador: Esta arquitectura da lugar a todo un


enfoque de desarrollo muy arraigado en los entornos gráficos de usuario
realizados con técnicas orientadas a objetos. Cada componente tiene
asociado una clase de modelo de datos y una interfaz que utiliza. Se puede
crear un modelo de datos personalizado para cada componente, con sólo
heredar de la clase Model.

10. Consultar la estructura y sintaxis de cómo funcionan las excepciones en Java.

En Java los errores en tiempo de ejecución (cuando se esta ejecutando el


programa) se denominan excepciones, y esto ocurre cuando se produce un
error en alguna de las instrucciones de nuestro programa, como por ejemplo
cuando se hace una división entre cero, cuando un objeto es 'null' y no puede
serlo, cuando no se abre correctamente un fichero, etc. Cuando se produce
una excepción se muestra en la pantalla un mensaje de error y finaliza la
ejecución del programa.

En Java (al igual que en otros lenguajes de programación), existen mucho tipos
de excepciones y enumerar cada uno de ellos seria casi una labor infinita. En
lo referente a las excepciones hay que decir que se aprenden a base
experiencia, de encontrarte con ellas y de saber solucionarlas.

Cuando en Java se produce una excepción se crear un objeto de una


determina clase (dependiendo del tipo de error que se haya producido), que
mantendrá la información sobre el error producido y nos proporcionará los
métodos necesarios para obtener dicha información. Estas clases tienen como
clase padre la clase Throwable, por tanto se mantiene una jerarquía en las
excepciones. A continuación, mostramos algunas de las clases para que nos
hagamos una idea de la jerarquía que siguen las excepciones, pero existen
muchísimas más excepciones que las que mostramos:
A continuación, vamos a mostrar un ejemplo de como al hacer una división entre cero, se
produce una excepción. Veamos la siguiente imagen en el que podemos ver un fragmento
de código y el resultado de la ejecución del código:
Como vemos en nuestro programa tenemos 3 instrucciones. La primera debe
de imprimir por pantalla el mensaje "ANTES DE HACER LA DIVISIÓN", la
segunda debe de hacer la división y la última debe de imprimir por pantalla el
mensaje "DESPUES DE HACER LA DIVISIÓN". La primera instrucción la
ejecuta perfectamente, pero al llegar a la segunda se produce una
"ArithmeticException" (excepción de la clase ArithmeticException) y se detiene
la ejecución del programa ya que estamos dividiendo un número entre '0'.

También podría gustarte