programacion avanzada introducci´on - facultad de ...hp.fciencias.unam.mx/~alg/pavz/intro.pdf ·...

Post on 01-Oct-2018

230 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programacion AvanzadaIntroduccion

Amparo Lopez Gaona

Agosto 2008

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 1 / 35

Objetivo

Que el alumno conozca los conceptos basicos de la programacion orientadaa objetos junto con su diagramacion en UML.Adicionalmente adquirira experiencia en el desarrollo de programas enJava.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 2 / 35

Contenido

1 Conceptos generales.

2 Clases.

3 Objetos.

4 Herencia.

5 Manejo de excepciones.

6 Interfaces.

7 Iteradores.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 3 / 35

Bibliografıa

Lopez Gaona, Amparo. Introduccion al desarrollo de programas conJava. Las prensas de Ciencias. UNAM. 2007.

Booch, Grady. Object-oriented analysis and design with applications.The Addison-Wesley Object Technology Series. Addison-Wesley, 3rdedition. 2007.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 4 / 35

Metodo de Evaluacion

La evaluacion de los alumnos es en base al trabajo desarrollado a lo largodel curso. Este trabajo consiste en:

La realizacion de tareas que pueden ser ejercicios escritos, programas,o lecturas.

La aprobacion de examenes, y

Un programa final cuyo objetivo es aplicar los conocimientosadquiridos en el curso.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 5 / 35

Direcciones

Electronica: alg@fciencias.unam.mx

Fısica: Cub. 109 del Depto de Matematicas de la Facultad de Cienciasde la UNAM.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 6 / 35

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.

Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

... Introduccion (Diseno de solucion: Uso de una receta)

Agua de Lim’on

Ingredientes: Utensilios:1L Agua 1 Jarra3 Limones 1 cuchillo4 cucharadas de Az’ucar 1 exprimidor

1 palaProcedimiento:1. Lavar los limones.2. Incorporar el az’ucar al agua.3. Probar que est’e dulce, en caso necesario agregar m’as az’ucar.4. Agregar el jugo de los limones.

Un algoritmo es la especificacion de los datos y la descripcion de lospasos que deben seguirse para resolver un problema. En estos pasosesta implıcito el orden en que se deben ejecutar, cada paso esta definidosin ambiguedad y al ejecutarse en el orden especificado se obtiene siempreel mismo resultado.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 9 / 35

... Introduccion (Diseno de solucion: Uso de una receta)

Agua de Lim’on

Ingredientes: Utensilios:1L Agua 1 Jarra3 Limones 1 cuchillo4 cucharadas de Az’ucar 1 exprimidor

1 palaProcedimiento:1. Lavar los limones.2. Incorporar el az’ucar al agua.3. Probar que est’e dulce, en caso necesario agregar m’as az’ucar.4. Agregar el jugo de los limones.

Un algoritmo es la especificacion de los datos y la descripcion de lospasos que deben seguirse para resolver un problema. En estos pasosesta implıcito el orden en que se deben ejecutar, cada paso esta definidosin ambiguedad y al ejecutarse en el orden especificado se obtiene siempreel mismo resultado.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 9 / 35

... Introduccion

Diseno de solucion: (2) Acudir a un especialista.En este caso, se requiere una persona que sepa preparar el agua de limon,por ejemplo un juguero, y el joven se despreocupa de los detalles de lapreparacion.

Para resolver el problema se busca a una persona que ofrezca el servicioque se necesita, en caso un juguero (El Sr. Limon) y darle un mensaje conla peticion.En este caso, es responsabilidad del Sr. Limon satisfacer la peticion y paraello seguira su propio metodo para preparar agua de limon, el cliente nonecesita conocer este metodo.En el ejemplo, se habla en terminos de personas que realizan acciones, enel contexto de la programacion orientada a objetos se habla de objetos queresponden a mensajes recibidos mediante la ejecucion de metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 10 / 35

... Introduccion

Diseno de solucion: (2) Acudir a un especialista.En este caso, se requiere una persona que sepa preparar el agua de limon,por ejemplo un juguero, y el joven se despreocupa de los detalles de lapreparacion.Para resolver el problema se busca a una persona que ofrezca el servicioque se necesita, en caso un juguero (El Sr. Limon) y darle un mensaje conla peticion.En este caso, es responsabilidad del Sr. Limon satisfacer la peticion y paraello seguira su propio metodo para preparar agua de limon, el cliente nonecesita conocer este metodo.En el ejemplo, se habla en terminos de personas que realizan acciones, enel contexto de la programacion orientada a objetos se habla de objetos queresponden a mensajes recibidos mediante la ejecucion de metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 10 / 35

Conceptos basicos de la orientacion a objetos

En la programacion orientada a objetos un programa es una coleccion deobjetos que se comunican entre sı a traves de mensajes con el objetivo dellegar a la solucion del problema.La POO tiene como conceptos basicos:

Objeto.

Mensaje.

Clase.

El marco conceptual en el cual se implementan estos conceptos incluye losconceptos de:

Abstraccion.

Encapsulacion.

Herencia.

Polimorfismo.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 11 / 35

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Clase

Una clase representa la esencia de los objetos.Es la abstraccion de un conjunto de objetos con caracterısticascomunes.Fabrica de objetos.Los objetos son ejemplares (instancias) de las clases.Es en donde se especifican los atributos y metodos que tendran susobjetos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 13 / 35

Clase

Una clase representa la esencia de los objetos.Es la abstraccion de un conjunto de objetos con caracterısticascomunes.Fabrica de objetos.Los objetos son ejemplares (instancias) de las clases.Es en donde se especifican los atributos y metodos que tendran susobjetos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 13 / 35

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

... Marco conceptual

Herencia. Define relaciones entre clases que comparten estructura ocomportamiento (denominadas superclases) y las nuevas clasesagregan o redefinen los componentes de sus superclases.

Polimorfismo. Permitir utilizar el mismo nombre para metodos endistintas clases que realizan una accion en forma distinta.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 15 / 35

¿Que es Java?

Lenguaje para POO desarrollado por James Gosling para SunMicrosystems, de distribucion gratuita:

Orientado a objetos.Facilita la escritura de codigo correcto.

No tiene apuntadores.Recolector de Basura.Fuertemente tipado.No tiene herencia multiple.

Incluye bibliotecas de clases e interfaces. java.lang, java.io,java.util, java.awt, java.applet, java.sql, etc.Extensible.

Extender clases existentes.Crear clases y paquetes.

Compilado e interpretado.Portable.Hilos Multiples (multithreaded).

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 16 / 35

Compilacion/Ejecucion de un programa

errores)

ErroresSi

No

Linux

System 8

Macintosh

JVM

Nomina.java

Nomina.class

Windows XP

(corrección de

javac Nomina.java

java Nomina

����

����

�����������������������������������

���������������

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 17 / 35

Elementos del lenguaje Java

Comentarios.

Tipos de datos.

Operadores.

Proposiciones.

Con estos elementos se pueden crear programas:

Objetos.

Clases.

Interaccion entre ellos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 18 / 35

Comentarios

Existen tres formas de especificar comentarios en Java:

// Comentario de una lınea

/** Al estilo de C, C++, para abarcar muchas* l\’ineas*/

/*** Para generar documentaci\’on (p\’aginas HTML) de manera autom\’atica.* usando el sistema javadoc y los comandos para ello.* @author, @param, @return, @see, etc.*/

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 20 / 35

Identificadores

Identificador se construye como una sucesion de caracteres alfanumericosque empiezan con letra o guion bajo.

Rectangulo, a~no, edad, x25,leeDatos, etc.

Palabras reservadasabstract else interface staticboolean extends long superbreak false main switchbyte final native synchronizedcase finally new thiscatch float null throwchar for package throwsclass if private truecontinue implements protected trydefault import public voiddo instanceof return volatiledouble int short while

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 21 / 35

Identificadores

Identificador se construye como una sucesion de caracteres alfanumericosque empiezan con letra o guion bajo. Rectangulo, a~no, edad, x25,leeDatos, etc.

Palabras reservadasabstract else interface staticboolean extends long superbreak false main switchbyte final native synchronizedcase finally new thiscatch float null throwchar for package throwsclass if private truecontinue implements protected trydefault import public voiddo instanceof return volatiledouble int short while

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 21 / 35

Tipos de datos

Los tipos de datos son los elementos basicos a partir de los cuales se puededefinir la estructura de los objetos.Determinan el tipo de valor y de operacion que se puede hacer con undato.

Tipos primitivos.

Tipo Descripcion

byte Entero de 8 bits

short Entero de 16 bits

int Entero de 32 bits

long Entero de 64 bits

float Real en 32 bits

double Real en 64 bits

char Un caracter en 16-bits (Unicode)

boolean Booleano

Referencias.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 22 / 35

... Tipos de datos

Con estos tipos de datos se pueden definir:

Variables. Especificando el tipo/clase del dato/objeto seguido de suidentificador:double salario, altura;double salario = 10000.00;

Constantes. Variables precedidas de la palabra final.final int IVA = 15;

Literales. Constantes sin identificador asociado y pueden ser:

Enteras. Numero entero con o sin signo. 8, 25, 7893, 023 6= 23.Reales. Numeros con o sin signo con punto decimal. 34.534, 34e2.Caracteres. ’a’, ’4’, etc. ’\t’, ’\n’,Cadenas de caracteres. Sucesiones de caracteres encerrados encomillas. "Soy una cadena con e~nes y comillas \ 2salto delınea \n"Booleanas. true, false.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 23 / 35

Operadores

Aritmeticos. +, -, *, /, %, ++, --.

Logicos: conjuncion &&, disyuncion ‖ y negacion !.

De relacion: >, <, >=, <=, == , !=

De asignacion: =

Asignacion sencilla: altura = 1.80;Asignacion multiple: i = j = k = l = a+b;Asignacion compuesta:var op= expr es equivalente a var = var op expr.suma = suma + dato;suma += dato;

Concatenacion de cadenas: +" Anita "+"lava "+"la "+"tina""La calificacion es "+ calificacion

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 24 / 35

Precedencia y asociatividad de operadores

Operador Descripcion Asoc++ -- Incremento y decremento (Pre) D++ -- Incremento y decremento (Post) I˜ Negacion de bits de un entero D! Negacion D- + Menos y mas unarios D(tipo) Conversion explıcita de tipo D* /% Multiplicacion, Division, Residuo I+ - Suma, resta I<<, >>, >>> Corrimientos de bits Iinstanceof <, <= > >= Operadores de relacion I== != Operadores de igualdad I& Conjuncion de bits Iˆ Disyuncion exclusiva, en bits I| Disyuncion de bits I&& Conjuncion I|| Disyuncion I?: Operador condicional D= op= Asignacion DAmparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 25 / 35

Alcance de una variable

El alcance de una variable es la porcion del programa en que una variablepuede ser usada. Este es dentro del bloque que se declaro y los bloquesinternos a el.

{ ...{ int i = 0;

...{double i = 8.9; ...}

}}

El alcance de una variable permite clasificarla en:

Variable miembro.

Variable local.

Parametro de un metodo.

Parametro de un manejador de excepciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 27 / 35

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.

if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...

if (denominador != 0 && numerador/denominador < 1) ...La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Comportamiento selectivo/Varias alternativas

Si se desea tomar el valor de una variable y de acuerdo a este hacer unconjunto de proposiciones se puede usar la proposicion switch.Por ejemplo imprimir el dıa de la semana correspondiente a un numero:

int dia;...switch (dia) {case 1: System.out.println("Lunes"); break;case 2: System.out.println("Martes"); break;case 3: System.out.println("Miercoles"); break;case 4: System.out.println("Jueves"); break;case 5: System.out.println("Viernes"); break;case 6: System.out.println("Sabado"); break;case 7: System.out.println("Domingo"); break;default: System.out.println("Numero de mes incorrecto!!!"); break;

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 30 / 35

Comportamiento iterativo

Repeticion opcional.Se evalua la condicion, si es verdadera se hace el bloque deinstrucciones o cuerpo.

while (condicion)bloque de instrucciones

Repeticion al menos una vez.Se realiza el cuerpo hasta que la condicion sea falsa.

dobloque de instrucciones

while (condicion)

Repeticion enumerativa

for (inicializacion; condicion; actualizacion)bloque de instrucciones

esta instruccion es equivalente a:

inicializacion;while (condicion) {

bloque de instrucciones;actualizacion;

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 31 / 35

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Interrupcion del flujo

break Ocasiona la salida del switch y la ejecucion de la instruccioninmediatamente despues.

return Ocasiona la salida de un metodo y ejecucion de la instruccioninmediata a la llamada al metodo.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 34 / 35

Entrada/Salida

Existen tres flujos estandar para entrada/salida.

Entrada, referenciado por la variable de clase System.in que es unareferencia a un objeto que implementa el flujo (stream) estandar deentrada.

Salida, referenciado por System.out

Error, referenciado por System.err

Con el metodo System.in.read se lee un caracter y lo regresa o bien -1si no leyo nada.Para la salida (estandar o erronea) existen los metodos

print

println

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 35 / 35

top related