Sesi´on 4. TEMA 6 INTERACCI ON DE´ OBJETOS · ¿Cu´al es el resultado de la siguiente...

Post on 07-Feb-2019

237 views 0 download

Transcript of Sesi´on 4. TEMA 6 INTERACCI ON DE´ OBJETOS · ¿Cu´al es el resultado de la siguiente...

Definiciones Ejemplo Cuestiones Tareas

Sesion 4. TEMA 6 INTERACCION DEOBJETOS

Fundamentos de Informatica

Jose Jaime Noguera Noguera

8 de marzo de 2018

Definiciones Ejemplo Cuestiones Tareas

Contenidos

1 Definiciones

2 Ejemplo

3 Cuestiones

4 Tareas

Definiciones Ejemplo Cuestiones Tareas

ABSTRACCION Y MODULARIZACION

Para tratar el problema de la complejidad creciente que aparece almodelizar ciertos problemas podemos hacer uso de los conceptos de:

Modularizacion: proceso de dividir un todo en partes bien definidasque puedan construirse y examinarse por separado yque interaccionen entre sı de formas bien definidas.

Abstraccion: capacidad de ignorar los detalles de las distintas par-tes para centrar la atenion en un nivel superior de unproblema.

Definiciones Ejemplo Cuestiones Tareas

ABSTRACCION Y MODULARIZACION EN ELSOFTWARE

En el ejemplo concreto de desarrollo de software utilizando el para-digma de la orientacion a objetos:Modularizacion: las clases representan estas partes o componentes

bien definidos, cuya complejidad individual no es ele-vada. Esta tecnica tambien se conoce como divide yvenceras. Al dividir el problema en subproblemas, lacomplejidad disminuye. Ademas las clases interaccio-nan entre ellas de formas bien definidas.

Abstraccion: capacidad para ignorar los detalles de implementacionde cada clase, para ası abordar cuestiones mas gene-rales.

Definiciones Ejemplo Cuestiones Tareas

DIAGRAMA DE CLASES

Un diagrama de clases muestra las clases de una aplicacion y las rela-ciones entre ellas. Proporciona informacion acerca del codigo fuentey presenta una vista estatica del problema (no necesita estar enejecucion). La Figura 1 representa el diagrama de clases del pro-yecto del reloj del libro. La flecha que aparece significa que la claseClockDisplay hace uso de (depende de) la clase NumberDisplay ylo que realmente significa es que en el codigo fuente de ClockDsplayaparece mencionada la clase NumberDisplay.

Figura 1: Diagrama de Clases.

Definiciones Ejemplo Cuestiones Tareas

DIAGRAMA DE OBJETOSUn diagrama de objetos muestra los objetos y sus relaciones enun instante determindo durante la ejecucion de un programa,presentando una vista dinamica de un programa. En la Figura 2 semuestra un diagrama de objetos en un momento determinado de laejecucion. Observar la representacion de las variables que contienenreferencias a objetos.

Figura 2: Diagrama de objetos.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: clase PersonaT3

Figura 3: Clase PersonaT3 a.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: clase PersonaT3

Figura 4: Clase PersonaT3 b.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: clase Coche

Figura 5: Clase Coche.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: diagrama de clases

La clase PersonaT3 hace uso de la clase Coche. Por tanto en sudiagrama de clases aparece una flecha desde PersonaT3 a Coche.En BlueJ es una lınea discontinua, pero tambien se representa conlıneas continuas.

Figura 6: Diagrama de clases.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: creando objetosDe manera grafica creamos una objeto PersonaT3 (personaT1)con el constructor del DNI, y un objeto Coche (coche1). Despuesinvocamos el metodo imprimeDatos() del objeto personaT1. Ob-serva los valores por defecto que aparecen en las variables. A conti-nuacion introducimos un nombre, un apellido e invocamos de nuevoimprimeDatos(). Todo esto puede verse en forma de lineas de tex-to en la ventana de terminal (desmarcando la opcion Limpiar alpantalla en llamada a metodo):

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: creando objetos

La ventana de terminal ofrece una idea de lo que habrıa que in-cluir en la funcion main si no estuviesemos utilizando BlueJ. Ahoraqueremos introducir el objeto coche1 en el campo coche del ob-jeto personaT1. Para ello invocamos el metodo setCoche(Cochecoche) y BlueJ nos muestra la ventana:

Para introducir el coche, simplemente clicamos sobre el objeto co-che1 (o bien introducimos manualmente el nombre).

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: creando objetos

Si imprimimos los datos observamos que ahora la linea de impresiones mas larga y hay datos que no aparecen. Observando el codigo seevidencia el porque.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo: creando objetos

Si en el Code Pad intoducimos la linea:

coche1.setMarca(”Audi”);

e imprimimos los datos, se observa que este cambio sı ha afectado alos objetos. Esta es otra manera de interactuar con nuestros objetos.Finalmente, desde el objeto personaT3 podemos cambiar el estadodel objeto coche1, mediante el metodo cambiaItvCoche(StringsiOno). Observar el codigo correspondiente.

Definiciones Ejemplo Cuestiones Tareas

Ejemplo

Puedes descargar el codigo desde y seguir realizando pruebas como:

Crear mas objetos PersonaT3. Asignar el mismo coche a dospersonas y realizar cambios en el campo de la ITV desde unapersona. ¿Afecta al coche de la otra? (tıpica pregunta detests).Utiliza elCode Pad para interactuar con tus objetos.Utiliza el debugger, observando las variables que aparecen.Observa como se introducen varias variantes de Si, para quese reconozcan como entrada del metodocambiaItvCoche(String siOno). En los proximos temas severa una mejor manera de hacer esto.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

Si utilizo el nombre de una clase para definir el tipo de una variablepodre almacenar objetos de dicha clase en esa variable.

Definiciones Ejemplo Cuestiones Tareas

Respuesta

Si utilizo el nombre de una clase para definir el tipo de una variablepodre almacenar objetos de dicha clase en esa variable.

Verdadero, las clases definen tipos.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

Al compilar una clase, los diagramas de objetos pueden no cambiar,mientras que los diagramas de clases siempre se modifican.

Definiciones Ejemplo Cuestiones Tareas

Respuesta

Al compilar una clase, los diagramas de objetos pueden no cambiar,mientras que los diagramas de clases siempre se modifican.

Falso. Al compilar desaparece la informacion asociada a los estadosde los objetos ya que la ejecucion finaliza y por tanto los diagra-mas de objetos ya no son validos (vista dinamica). Sin embargo, eldiagrama de clases es el mismo (vista estatica), siempre que en elcodigo no se hayan modificado las lineas que mencionan otras clasesy no se hayan anadido mas lineas de este tipo.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Que devuelve la siguiente expresion?

(3 < 2) && (4 == 5) || (3 > 2)

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Que devuelve la siguiente expresion?

(3 < 2) && (4 == 5) || (3 > 2)

Devuelve TRUE. IMPORTANTE: orden de precedencia. En el apendi-ce C sel libro aparece una tabla con el orden de precedencia de losoperadores Java. No es necesaria saberla toda pero sı los mas im-portantes. && tiene una mayor precedencia que || y, por tanto es laque se ejecuta antes. La expresion es pues equivalente a:

((3 < 2)&&(4 == 5)) ||(3 > 2),

es decir (False && False) || True, resultado True.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Cual es el resultado de la siguiente expresion?

3− 4 ∗ 2− 10 : 2 ∗ 3 + 2

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Cual es el resultado de la siguiente expresion?

3− 4 ∗ 2− 10 : 2 ∗ 3 + 2

-18. El orden de las operaciones es el mismo que el orden habitualen expresiones matematicas. Recordar que si hay varias * y / juntasse empieza a resolver de izquierda a derecha.

Potencias2ˆ3 no significa 23. Para expresar una potencia necesitamos ponerMath.pow(2, 3)

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Cual es el resultado de 28 + 10 %7 ∗ 2?

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Cual es el resultado de 28 + 10 %7 + 1?

Da 32. El % tiene un orden de precedencia mayor que la suma.Observar que en la tabla C.1, pag. 606 del libro, esto parece confuso.La suma corresponde a la linea 5 y no a la 2.

RecomendacionSiempre anadir parentesis para asegurar el orden en que deseamosque se apliquen los operadores.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Cual es el resultado de 3/2?

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Cual es el resultado de 3/2?

El resultado es 1 ya que el resultado de una division entre enteroses un entero. Si queremos que de 1.5 debemos poner 3.0/2 .

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Cual es la diferencia entre Step y Step Into del debugger?

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Cual es la diferencia entre Step y Step Into del debugger?

Si aplicamos Step, se ejecuta una linea del codigo actual y se detieneen la siguiente. Sin embargo, si por ejemplo esta linea es un metodo yutilizamos Step Into, ”entrara en el metodo”, se ejecutara la primeralinea de ese metodo y se detendra en la segunda.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Que corresponde a objetos a metodos y parametros en la siguienteexpresion?

casa.propietario(arrendatario.devuelvePiso(”123”))

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Que corresponde a objetos a metodos y parametros en la siguienteexpresion?

casa.propietario(arrendatario.devuelvePiso(”123”))

En primer lugar, los nombres de los metodos y objetos no tienenporque tener un sentido real:

Objetos: casa y arrendatarioMetodos: propietario (de casa) y devuelvePiso (dearrendatario)Parametros reales: ”123”del metodo devuelvePiso yarrendatario.devuelvePiso(”123”) del metodo propietario.

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Que tipo de variables nos muestra el depurador?

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Que tipo de variables nos muestra el depurador?

Estaticas (static) (que aun no se han explicado), campos o varia-bles de Instancia (instance variables), y variables locales (localvariables).

Definiciones Ejemplo Cuestiones Tareas

Pregunta

¿Que tipo de estructuras pueden estar sobrecargadas?

Definiciones Ejemplo Cuestiones Tareas

Respuesta

¿Que tipo de estructuras pueden estar sobrecargadas?

Un metodo (metodo sobrecargado), un constructor (sobrecarga deconstructores), y los nombres de las variables (sobrecarga de nom-bres).

Definiciones Ejemplo Cuestiones Tareas

Tareas

Realizar el test del Tema 6: Interaccion de objetos (Tema 3del libro) en jjnoguera.wordpress.con/uned-deniaLeer el Tema 4 del libro: Agrupacion de objetos, y el ApendiceD.Programar una clase Moto, con algunos campos e incluir uncampo moto en la clase PersonaT3. Modificar el metodo deimpresion para que incluya la moto en caso de tener una.Introducir un nuevo metodo que modifique algun campo de laclase Moto.Realizar pruebas con BlueJ para ver que todo funcionacorrectamente. Hacer algunas pruebas con el debugger.