Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones...

37
Introducci´ on Conceptos Cuestiones Tareas Sesi´ on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´ atica Jos´ e Jaime Noguera Noguera 18 de marzo de 2018

Transcript of Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones...

Page 1: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Sesion 6. TEMA 8 COMPORTAMIENTOAVANZADO CON OBJETOS

Fundamentos de Informatica

Jose Jaime Noguera Noguera

18 de marzo de 2018

Page 2: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Contenidos

1 Introduccion

2 Conceptos

3 Cuestiones

4 Tareas

Page 3: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Temario

Recordar que en este tema solo hay que estudiar las secciones:5.1, 5.5, 5.11, 5.13 (edicion 5), o bien:6.1, 6.5, 6.12, 6.14 (edicion 6).

Por tanto, este tema es bastante corto. Ademas es recomendableleer la seccion 5.3, ya que introduce herramientas utiles.

Page 4: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Documentacion de las clases

Para acceder a la informacion de la documentacion de las clases delibrerıas, lo podemos hacer desde BlueJ. Para ello, desde el menuAyuda (Help), seleccionar Librerıas de Clase Java (Java Class Libra-ries). Aparecera un explorador web con la documentacion de la API(Application Programming Interface) de Java, siempre que estemosconectados a Internet. Si se desea, tambien se puede utilizar unacopia local de esa documentacion que viene con el CD-ROM dellibro (ver Apendice A).

Page 5: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Documentacion

En la documentacion de la API se nos muestra informacion suficientecomo para utilizar las clases sin conocer su implementacion.Es bueno acostumbrarse a buscar informacion en dicha documenta-cion, ya que incluso las clases mas utilizadas disponen de metodosque no son los que aparecen usualmente en los libros de texto y quenos pueden venir bien para programar alguna funcionalidad.

Page 6: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Implementacion e interfaz

Hay dos conceptos que se deben conocer:Implementacion de una clase Es el codigo fuente de la clase, es

decir el todo el texto que escribimos en Java alprogramar la clase. Este codigo no necesitamosconocerlo para utilizar la clase. Es la parte privadade la clase

Interfaz de una clase Esta formado por las signaturas de losconstructores y metodos, ademas de una serie decomentarios. Constituyen los detalles que se necesitanpara usar la clase. Es la parte publica de la clase.

Page 7: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Signatura

Recuerda que la signatura de un metodo esta formada por (en esteorden):

Un modificador de acceso (public, private...).Un tipo de retorno.El nombre del metodo.La lista de parametros precedidos por su tipo.

La signatura de un constructor es igual pero sin tipo de retorno.

Page 8: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Utilidades

En la seccion 5.3.2 y 5.3.3 (que no entran en el temario) aparecenalgunos metodos para cadenas de caracteres (objetos definidos comoString) que vale la pena conocer:

cadena.toUpperCase(): devuelve la cadena a la que se aplicaen mayusculas.cadena.toLowerCase(): devuelve la cadena a la que se aplicaen minusculas.cadena.trim(): devuelve la cadena a la que se aplica sinespacios en blanco iniciales ni finales.cadena1.equals(cadena2): devuelve True si las cadenas soniguales y False en caso contrario. Debe evitarse compararcadenas con el operador == ya que no siempre funciona.

Page 9: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Utilidades

Es importante saber que toUpperCase, toLowerCase y trim no mo-difican la cadena original, solo devuelven la cadena modificada. Porejemplo:String a=”hola”;String b=a.toUpperCase();System.out.println(”Original: ”+a+”. Con mayusculas: ”+b+”.”);

Produce la salida:Original: hola. Con mayusculas: HOLA.

Page 10: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Importacion de paquetes

Ya se hablo de como importar paquetes con la sentencia import:import paquete.subpaquete.nombreClase;A paquete.subpaquete.nombreClase se le denomina nombrecompleto o nombre cualificado de la clase.Es preferible utilizar nombres cualificados y no cargar todaslas clases de un paquete con *.Hay paquetes que se cargan por defecto, como java.lang (alque pertenece la clase String).

Page 11: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Modificadores de acceso

La siguiente tabla resume desde donde podemos acceder a lo queviene precedido por el modificador de acceso:

Modificador La misma Otra clase del Subclase de Otra clase dede acceso clase mismo paquete otro paquete otro paquete

public sı sı sı sıprotected sı sı sı no(default) sı sı no noprivate sı no no no

Cuadro 1: Modificadores de acceso en Java.

Page 12: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Modificadores de acceso

De la anterior tabla con lo que hay que quedarse fundamentalmentees que si definimos algo como private, sera solo accesible desde lapropia clase, mientras que si lo definimos como public sera visibledesde cualquier sitio. El definir campos y/o metodos como privatepermite el ocultamiento de la informacion. Esto es positivo por variosmotivos:

El mantenimiento de las clases es mas sencillo, ya queaseguramos que cambios en una clase no afecten a otra.Da lugar a un acoplamiento debil.Garantiza una mejor modularizacion.

Page 13: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

static

staticLos campos definidos como static se denominan variables de claseo estaticas.

Las variables de clase tienen las peculiaridades:se almacenan en la propia clase y no en el objeto. Estosignifica que hay una sola copia de la variableindependientemente del numero de objetos que hayamosinstanciado.Desde los metodos de cada objeto se puede modificar dichavariable.Son muy utiles cuando queremos que todos los objetos de unaclase compartan una variable comun.

Page 14: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

static: ejemplo

Figura 1: Clase PruebaStatic

Page 15: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

static

Si creamos 3 objetos, pongamos obj1, obj2 y obj3, en la situacioninicial en todos ellos a=1, b=2. Esto puede verse inspeccionandocada objeto y pulsando en Mostrar campos estaticos.

Si ejecutamos obj1.cambioB(7), entonces el campo bcambiara su valor en el objeto obj1, pero no en el obj2 y obj3.Si ejecutamos obj1.cambioA(6) en valor del campo estatico acambiara y dado que hay una unica copia almacenada en laclase y no en cada objeto, si inspeccionamos el valor de adesde cualquier objeto, el valor sera el mismo, en este caso 6.

Page 16: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

final

finalLos campos definidos como final no pueden ser modificados.

Tienen las peculiaridades:Deben inicializarse al definirlos (en caso contrario habra unerror de compilacion).Si se incluye alguna sentencia que modifique su valor nos daraerror de compilacion.Por convenio escribimos todo su nombre en mayusculas.Puede utilizarse en combinacion con static y ası evitamostener que almacenar cada campo final en cada objetoahorrando espacio de almacenamiento.

Page 17: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

La interfaz de una clase muestra su implementacion. ¿Verdadero ofalfo?

Page 18: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

La interfaz de una clase muestra su implementacion. ¿Verdadero ofalfo?

Falso.

Page 19: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

La implementacion nos muestra como funciona la clase y correspon-de a su parte privada. ¿Verdadero o falso?

Page 20: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

La implementacion nos muestra como funciona la clase y correspon-de a su parte privada. ¿Verdadero o falso?

Verdadero.

Page 21: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

¿La siguiente lınea corresponde a la signatura de un metodo?public getEdad(String dni)

Page 22: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

¿La siguiente lınea corresponde a la signatura de un metodo?public getEdad(String dni)

NO, falta indicar el tipo de retorno. En otro caso getEdad serıa elconstructor de la clase getEdad (que deberıa empezar en mayusculapor cuestion de estilo).

Page 23: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

¿Existen unicamente dos modificadores de acceso: public y private?

Page 24: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

¿Existen unicamente dos modificadores de acceso: public y private?

NO, tambien esta protected y sin modificador (default).

Page 25: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

¿El ocultamiento de informacion aumenta el aumenta el acoplamien-to?

Page 26: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

¿El ocultamiento de informacion aumenta el aumenta el acoplamien-to?

No, lo disminuye.

Page 27: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

Si definimos un campo como static, ya no puede ser modificado.¿Verdadero o falso?

Page 28: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

Si definimos un campo como static, ya no puede ser modificado.¿Verdadero o falso?

Falso, sı puede ser modificado.

Page 29: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

La siguiente definicion del campo numeroE:

public final double NumeroE=2.72;

nos indica que el campo tomara siempre el valor 2.72

Page 30: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

La siguiente definicion del campo numeroE:

public final double NumeroE=2.72;

nos indica que el campo tomara siempre el valor 2.72

Verdadero, ese es la funcion de la palabra reservada final.

Page 31: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

Dado el siguiente fragmento de codigo:String a,b;a=”casa”;b=a.toUpperCase();c=a.equals(b);¿Cual es el valor de c?

Page 32: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

Dado el siguiente fragmento de codigo:String a,b;boolean c; a=”casa”;b=a.toUpperCase();c=a.equals(b);¿Cual es el valor de c?

El valor de c es False.

Page 33: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

La sentencia:

import java.util*;

¿Importa todos las clases del paquete java.util?

Page 34: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

La sentencia:

import java.util*;

¿Importa todos las clases del paquete java.util?

No, da un error porque falta un punto antes del *.

Page 35: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Pregunta

Si queremos utilizar la clase String, ¿necesitamos incluir la importa-cion del paquete al que pertenece en nuestro codigo?

Page 36: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Respuesta

Si queremos utilizar la clase String, ¿necesitamos incluir la importa-cion del paquete al que pertenece en nuestro codigo?

No, java.lang se carga por defecto.

Page 37: Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS · Introducci´on Conceptos Cuestiones Tareas Sesi´on 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS Fundamentos de Inform´atica

Introduccion Conceptos Cuestiones Tareas

Tareas

Realizar el test del Comportamiento avanzado conobjetos en jjnoguera.wordpress.con/uned-deniaLeer los apartados del 8.3 al 8.6 y APENDICE E.