Sunteți pe pagina 1din 14

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
¿Es A igual a B
(A == B) && (A < printf ("Pregunta (A == B) && (A < B) vale
y A menor que 0 (falso)
B) %d\n", (A == B) && (A < B));
C?
¿Es A igual a 5 ó
1 printf ("Pregunta (A == 5) || (A > 7) vale %d\n",
(A == 5) || (A > 7) es A mayor que
(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'.

S-ar putea să vă placă și