interacciÓn de objetos -...
TRANSCRIPT
![Page 1: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/1.jpg)
INTERACCIÓN DE
INTERACCIÓN DE
OBJETOS
1
![Page 2: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/2.jpg)
� La abstracciónabstracciónabstracciónabstracción es la habilidad de ignorar los detalles de las partes para centrar la atención en un nivel más alto de un problema.
� Cuando intentamos abordar un problema usaremos la abstracción y descompondremos el mismo en problemas cada vez más y más usaremos la abstracción y descompondremos el mismo en problemas cada vez más y más pequeños.
� La modularizaciónmodularizaciónmodularizaciónmodularización es el proceso de dividir un todo en partes bien definidas que pueden ser construidas y examinadas separadamente, las que interactúan de manera bien definida.
2
![Page 3: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/3.jpg)
� Vamos a ver el proyecto clock-display.
� Usamos la abstracción para dividir el problema en subproblemas mas pequeños. En este caso dividimos la representación del reloj en la representación de displays de 2 digitos.representación de displays de 2 digitos.
3
![Page 4: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/4.jpg)
� Podemos usar nuestras clases como tipos para las variables de otras clases.
� Las variables cuyo tipo es una clase pueden almacenar objetos de dicha clase.almacenar objetos de dicha clase.
public class CPeriodo{
private CFecha fechaInicio;
private CFecha fechaFin;
}
4
![Page 5: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/5.jpg)
� El diagrama de clases diagrama de clases diagrama de clases diagrama de clases muestra las clases de una aplicación y las relaciones entre ellas. Da información sobre el código. � Vista estática de un programa.
� El diagrama de objetos diagrama de objetos diagrama de objetos diagrama de objetos muestras los objetos y sus relaciones en un momento dado de la ejecución de la relaciones en un momento dado de la ejecución de la aplicación. � Vista dinámica de un programa.
5
![Page 6: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/6.jpg)
� Las variables de tipo primitivo almacenan los datos en la variable.
� En cambio las variables de tipo objeto lo que almacenan es una referencia al objeto.
6
Fecha1 Dia = 1Mes = 1
Año = 2012
![Page 7: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/7.jpg)
� En Java son tipos primitivos todos aquellos que no son objetos.
� Tipos primitivos:� bytebytebytebyte (8 bits): Enteros de -128 a 127 � shortshortshortshort (16 bits): Enteros de -32768 a 32767 � intintintint (32 bits): Enteros de -2147483648 a +2147483647 � longlonglonglong (64 bits): Enteros de -9223372036854775808 a
+9223372036854775807 � CharCharCharChar(16 bits): caracteres Unicode.� floatfloatfloatfloat (32 bits): 1 bit de signo, 8 de exponente y 24 de mantisa.� doubledoubledoubledouble (64 bits): 1 bit de signo, 11 de exponente y 52 de mantisa.� booleanbooleanbooleanboolean: dos valores posibles true y false.
� Tipos referenciados:� Clases� Interfaces� Arrays
� Los tipos primitivos no poseen métodos.
7
![Page 8: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/8.jpg)
� Vamos a analizar el código del proyecto clock-display.
� Dentro del mismo veremos:� Operadores lógicos. Los podremos usar dentro de las � Operadores lógicos. Los podremos usar dentro de las
expresiones de condición de las sentencias if.� a && b � “y”� a || b � “o”� !a � negación
� Concatenación de cadenas de caracteres� Operador módulo (%)
8
![Page 9: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/9.jpg)
� Los objetos pueden crear otros objetos usando el operador new.
public class CPeriodo{
private CFecha fechaInicio ;private CFecha fechaInicio ;
private CFecha fechaFin;
public CPeriodo (){
fechaInicio = new fechaInicio(1,1,2012);
fechaFin = new fechaFin(1,1,2012);
}
}
9
![Page 10: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/10.jpg)
� Al crear un nuevo objeto con new lo que realmente tenemos es una referencia a la posición que ocupa en memoria el objeto.
CGrados grados1 = new CGrados ( );
Grados 1
gradosC = 30
![Page 11: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/11.jpg)
CGrados grados1 = new CGrados ( );CGrados gados2 = new CGrados ( );
grados1
gradosC = 30
grados2
gradosC = 20
![Page 12: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/12.jpg)
grados2 = grados1;
grados2
gradosC = 30
grados2
gradosC = 20
![Page 13: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/13.jpg)
� Para una misma clase podemos definir múltiples constructores.
� El método se llamará igual y se distinguirá por el número y/o tipo de los parámetros.por el número y/o tipo de los parámetros.
new CFecha();
new CFecha(1,1,2011);
13
![Page 14: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/14.jpg)
� Dentro de un método de una clase podemos llamar a otros métodos de la misma directamente.
� Para ello incluiremos la sentencia de llamada � Para ello incluiremos la sentencia de llamada a dicho método pasándole en caso necesario los parámetros que requiera el método.
saldo = saldo + calcularInteres(10);
14
![Page 15: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/15.jpg)
� Los métodos pueden llamar a métodos de otros objetos.
double importeInteres = miCuenta.calcularInteres(10);
15
![Page 16: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/16.jpg)
� La referencia this nos permite referencia al mismo objeto.
� De uso entre otras cosas cuando se produce sobrecarga de nombres.sobrecarga de nombres.
public CFecha(int dia, int mes, int año){
this.dia=dia;
this.mes=mes;
this.año=año;
}
16
![Page 17: INTERACCIÓN DE OBJETOS - UNEDhorarioscentros.uned.es/archivos_publicos/qdocente_planes/381325/… · relaciones en un momento dado de la ejecución de la aplicación. Vista dinámica](https://reader034.vdocuments.co/reader034/viewer/2022042123/5e9e31a43508db64c41112ad/html5/thumbnails/17.jpg)
� Vamos a revisar el código de los dos proyectos de este capítulo.
� Aprovecharemos para ver como funciona el depurador de código. Una útil herramienta depurador de código. Una útil herramienta que nos ayudará durante el proceso de desarrollo.
17