Fundamentos de Informática - jjnoguera.files.wordpress.com · Fundamentos de Inform´atica Jos´e...

35
Definiciones Variables Ejemplo Cuestiones Tareas Sesi´ on 3. TEMA 5. DEFINICIONES DE CLASES Fundamentos de Inform´ atica Jos´ e Jaime Noguera Noguera 8 de marzo de 2018

Transcript of Fundamentos de Informática - jjnoguera.files.wordpress.com · Fundamentos de Inform´atica Jos´e...

Definiciones Variables Ejemplo Cuestiones Tareas

Sesion 3. TEMA 5. DEFINICIONES DE CLASESFundamentos de Informatica

Jose Jaime Noguera Noguera

8 de marzo de 2018

Definiciones Variables Ejemplo Cuestiones Tareas

Contenidos

1 Definiciones

2 Variables

3 Ejemplo

4 Cuestiones

5 Tareas

Definiciones Variables Ejemplo Cuestiones Tareas

Campos, constructores y metodos

Ya adelantamos la estructura basica de una clase la sesion anterior:

1 CAMPOS: almacenan datos de forma persistente dentro de unobjeto (lo cual no implica que sus valores no puedan modificar-se).

2 CONSTRUCTORES: son los responsables de configurar apro-piadamente un objeto cuando se crea (proceso denominado ini-cializacion). Puede haber mas de un constructor (sobrecarga),siempre que los parametros no sean todos los mismos.

3 METODOS: implementan el comportamiento del objeto, pro-porcionando funcionalidad.

Definiciones Variables Ejemplo Cuestiones Tareas

Campos, parametros y variables locales

Es importante tener claro las diferencias entre campos, parametrosy variables locales, ya que pueden aparecer preguntas sobre ello enel test. En especial debemos conocer los siguientes conceptos:

Ambito de una variable: seccion de codigo fuente desde lacual se puede acceder a esa variable.Tiempo de vida de una variable: tiempo que existe lavariable antes de ser destruida.

Definiciones Variables Ejemplo Cuestiones Tareas

Campos

Ambito: toda la clase. En cualquier parte del codigo de la propiaclase puedo acceder a ella. Si estamos dentro de un metodo oconstructor que tiene otra variable con el mismo nombre delcampo se debe utilizar this.nombreCampo para referirnos alcampoTiempo de vida: desde que se crea un objeto hasta que se elimi-na. Por esto de dice que almacenan datos persistentes (aunquesı modificables) y que mantienen el estado del objeto.Se definen fuera de los constructores y metodos.Al definirlos como private, no son accesibles directamente fue-ra de la clase donde estan definidos (necesitamos un metodoespecıfico definido como public para acceder a ellos).

Definiciones Variables Ejemplo Cuestiones Tareas

Campos

Los campos toman un valor por defecto en caso de que no los ini-cializamos en el constructor, aunque es recomendable inicializarlostodos (aunque sea a cero o a NULL). Mostramos las inicializacionespor defecto de los tipos mas utilizados

int: 0double: 0.0boolean: falseString: NullTipos objeto: Null

Definiciones Variables Ejemplo Cuestiones Tareas

Parametros

Son los que aparecen entre parentesis en la signatura de unmetodo o en la cabecera de un metodo.Debemos distinguir entre:

Formales: son los nombres de los parametros que aparecen enel codigo fuente.Reales: son los valores reales que se asignan a los parametros.A veces se llama argumentos a los parametros reales y a vecesa los formales. En algunos test de esta asignatura ha aparecidocomo sinonimo de parametro formal.

Ambito: el bloque o cuerpo del constructor o del metodo dondeestan definidos.Tiempo de vida: coincide con la llamada al constructor o meto-do, cuando terminan de ejecutarse se destruyen.

Definiciones Variables Ejemplo Cuestiones Tareas

Variables locales

Se definen dentro del cuerpo de un constructor o metodo, esdecir estan dentro de las llaves.Deben inicializarse antes de poder ser utilizadas. No se les daun valor por defecto como en los campos.Ambito: el bloque o cuerpo del constructor o del metodo dondeestan definidos.Tiempo de vida: coincide con la llamada al constructor o meto-do, cuando terminan de ejecutarse se destruyen.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Figura 1: Clase persona.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Aunque la clase anterior es sencilla, nos servira para ver muchosconceptos de este tema (e incluso del siguiente):Comentarios Obtervar las etiquetas para los comentarios Javadoc:

@autor, @version, @return, @param. Aunque hay mas,estos son los mas comunes y es recomendableincluirlos

Constructores Este ejemplo tiene dos constructores. Esto seconoce como sobrecarga.

Metodos selectores Normalmente empiezan por get (voluntario).No cambian el estado del objeto, solo devuelven elvalor de un campo.

Metodos mutadores Empiezan por set (voluntario). Cambian elestado del objeto, es decir modifican el valor de uncampo.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Metodos mutadores Empiezan por set (voluntario). Cambian elestado del objeto, al modificar el valor de un campo.

Palabras clave Son palabras reservadas para Java, como porejemplo: this, public, int, void...

this Observar que en algunos metodos necesitamos usarthis, si hemos utilizado parametros con el mismonombre que los campos en un constructor o metodo.

Impresion Observar como se imprime por el terminal y como seconcatenan las cadenas. El tipo int se transformaautomaticamente es texto al concatenarlo concadenas de caracteres.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Variables:Campos dni, nombre, apellido, edad.

Parametros newDni, new Edad, newNombre, pero tambien los parame-tros formales que aparecen en las cabeceras de con-tructores y metodos con el mismo nombre que loscampos (aunque para Java representan cosas distin-tas).

Variables locales mayorEdad.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Tras compilar la clase y no haber errores, hagamos algunas pruebas.En el menu Ver marcamos Mostrar Terminal. En el menu Opcionesdel terminal desmarcamos Limpiar pantalla en llamada al metodo.Esto ayuda a ir visualizando con codigo lo que hacemos visualmente.

1 Creamos un objeto Persona con el primer constructor.2 Invocamos el metodo imprimeDatos. Observamos en la

Figura 2 que los Strings no definidos aparecen como null,mientras que el int aparece como 0.

3 Asignamos nombre, apellido y edad invocado metodos set.4 Inspeccionamos el estado del objeto.5 Invocamos el metodo puedeVotar. Como devuelve un valor,

BlueJ nos muestra una ventana emergente.

Definiciones Variables Ejemplo Cuestiones Tareas

Ejemplo

Figura 2: Tras aplicar los pasos anteriores, estado del objeto persona1(izquierda) y ventana del terminal (derecha).

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Se puede crear un objeto si no hay constructor?

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Se puede crear un objeto si no hay constructor?

No, se necesita un constructor. Sin embargo si no escribimos el cons-tructor, Java crea uno por defecto (default constructor) consistenteen un constructor sin parametros que inicializa todos los campos asus valores por defecto.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Podemos escribir primero los metodos, despues el constructor y porultimo los campos?

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Podemos escribir primero los metodos, despues el constructor y porultimo los campos?

Sı. El orden campos-constructores-metodos es una cuestion de estilo,aunque el hacerlo ası es recomendable ya que es mas facil de leer yes un estilo ampliamente aceptado.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

Dado que los campos almacenan datos persistentes, una vez creadoel objeto el valor de sus campos ya no varıa. ¿Verdadero o falso?

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

Dado que los campos almacenan datos persistentes, una vez creadoel objeto el valor de sus campos ya no varıa. ¿Verdadero o falso?

Falso. El valor de los campos puede modificarse. La persistenciapodemos entenderla como que ese campo no va desaparecer mien-tras no desaparezca el objeto, pero su valor sı puede cambiar. Porotra parte hay objetos cuyos campos no pueden modificarse (no haymetodos que los modifiquen). Estos objetos se denominan inmuta-bles. Por cierto, los objetos tipo cadenas de caracteres (String) soninmutales (tıpica pregunta de test.)

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

Si un metodo no devuelve nada podemos no escribir el tipo de re-torno void.

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

Si un metodo no devuelve nada podemos no escribir el tipo de re-torno void.

Falso. De hecho Java nos dara un error de compilacion si no loincluimos.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Las variables locales solo pueden aparecer en los metodos?

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Las variables locales solo pueden aparecer en los metodos?

No, pueden aparecer tambien en los constructores.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Que imprime el siguiente metodo al invocarlo con el parametro 4?¿Y con el parametro 2? ¿Y con el parametro 3?

public void condicional(int a){int b=2;if(a!=b){

if(a==3){System.out.println("a");

}else{System.out.println(b);}}else{System.out.println(a+b);}

}

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Que imprime el siguiente metodo al invocarlo con el parametro 4?¿Y con el parametro 2? ¿Y con el parametro 3?

public void condicional(int a){int b=2;if(a!=b){

if(a==3){System.out.println("a");

}else{System.out.println(b);}}else{System.out.println(a+b);}

}

Con parametro 4 devuelve 2. Con parametro 2 devuelve 4. Conparametro 3 devuelve a.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Pueden haber metodos que no sean mutadores ni selectores?

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Pueden haber metodos que no sean mutadores ni selectores?

La respuesta es afirmativa. Por ejemplo, un metodo que solo imprimealgo por pantalla no es mutador ni selector.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Cual es la salida por pantalla?Ejemplo ejemplo1 = new Ejemplo(4);ejemplo1.imprimeCampoA();donde el codigo de la clase Ejemplo es:

public class Ejemplo{private int a;public Ejemplo(int b){int a=b;}public void imprimeCampoA(){System.out.println(a);}

}

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Cual es la salida por pantalla?Ejemplo ejemplo1 = new Ejemplo(4);ejemplo1.imprimeCampoA();

public class Ejemplo{private int a;public Ejemplo(int b){int a=b;}public void imprimeCampoA(){System.out.println(a);}

}

La salida es 0, ya que hemos definido de nuevo a en el constructor(al poner int a) y por tanto esa a ahora es variable local. El campoa se inicializa como 0 en el constructor. Si eliminamos el int delcontructor, la salida serıa 4.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Que devuelve esta expresion si la introducimos en el Code Pad?3+8+”uned.denia”.substring(2,5)

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Que devuelve esta expresion si la introducimos en el Code Pad?3+8+”uned.denia”.substring(2,5)

Devuelve 11ed. ya que primero suma 3+8 y luego concatena loscaracteres que ocupan la posicion 2 (empieza a contar en 0) hastalas 4 incluida.

Definiciones Variables Ejemplo Cuestiones Tareas

Pregunta

¿Que devuelve esta expresion si la introducimos en el Code Pad?”uned.denia”.substring(6,9)+3+8

Definiciones Variables Ejemplo Cuestiones Tareas

Respuesta

¿Que devuelve esta expresion si la introducimos en el Code Pad?”uned.denia”.substring(6,9)+3+8

Devuelve eni38, ya que este caso primero devuelve el String y Javaentiende que todo lo que queda son cadenas de caracteres, ası queno se realiza la suma.

Definiciones Variables Ejemplo Cuestiones Tareas

Tareas

Realizar el test del Tema 5: Definicion de clases (Tema 2del libro) en jjnoguera.wordpress.con/uned-deniaLeer el Tema 3 del libro: Interaccion de objetosProgramar una clase Estudiante, que tenga:

Campos: nombre, apellido, dni, creditosSuperados, tieneBecaUn constructor con el dni y otro con el DNI, el nombre y elapellido,Metodos: 2 metodos get que devuelvan si tiene beca y cuantoscreditos ha superado; 3 metodos set que cambien el nombre, elapellido y si tiene o no beca, un metodo imprimeInformacion,que imprima todos los datos del alumno y un metodo sumaCre-ditos que anada creditos a los que ya tiene.

Realizar pruebas con BlueJ para ver que todo funcionacorrectamente.