int compute( a int, b double ){ . . . .}
VigoJUG & VigoTech Alliance
VigoTech, VigoJUG e o reto
Talleres de iniciación
Instalar Java e un IDE
Herencia: dereitos de acceso.
Herencia: encasulación.
Poliformismo.
Exercicio
Dúbidas
Un meetup o primeiro martes de cada mes
Próxima charla!
¿Te animas cunha charla?. Licencias de JetBrains ;-)
Outras iniciativas: clubes de lectura
Canal de slack #VigoJUG en http://www.vigotech.org
Exercicio de programación breve (30 minutos) en GitHub
PRs (un directorio por cada usuaria)
Mensual
Non é competitivo
Un taller o tercer martes de cada mes
Rolda de preguntas para falar dun tema
Exercicio práctico para asentar os coñecementos
Calquera cousa que os traiades de casa
Abertos a outros formatos e iniciativas
Source: http://gif.co/vc7E.gif
Modifier | Class | Package | Subclass | World |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier | Y | Y | N | N |
private | Y | N | N | N |
Fonte: CodeJava
Dog
Person
Cat
Caniche
Wolf
Un dos catro conceptos da OOP (xunto con herencia, polimorfismo e abstracción)
Permite separar a implementación da clase do que se expoñe fora da mesma
Así o código é máis doado de manter
É un concepto importante, moita veces mal usado
Fonte: Java Puzzlers
Enc0
Enc1
Enc2
Ter máis de unha identidade: un caniche, un can, un animal
Poder obligar os fillos a determinada característica: ladrar ⇒ uso de abstract
Evitar ter fillos → uso de final
Fonte: iastate.edu
Aleman
AlemanPalleiro
Perro
Child
ChildAbstract
ChildFinal
¿Qué es la firma de un método?
El nombre del método y el tipo de su valor de retorno.
El nombre del método y el nombre de sus parámetros.
El nombre del método y el tipo de sus parámetros.
El nombre del método, la lista de parámetros y el tipo de retorno.
Esta es la definición de un método:
int compute( a int, b double ){ . . . .}
¿Cual de las siguiente tiene una firma diferente?
int compute( sum int, value double ){ . . . .}
double compute( a int, b double ){ . . . .}
double compute( sum int, b double ){ . . . .}
int compute( a int, b int ){ . . . .}
¿Qué debe un hijo no-abstracto hacer respecto a un método abstracto de su clase padre?
Un hijo debe sobrescribir un método abstracto heredado de su padre definiendo un método con la misma firma y el mismo tipo de retorno.
Un hijo debe definir un método adicional similar al heredado de su padre definiendo un método con la misma firma y un tipo de retorno diferente.
Un hijo no debe definir ningún método con la misma firma que el método abstracto del padre.
Un hijo no-abstracto debe definir un método no abstracto con la misma firma y el mismo tipo de retorno que el padre abstracto.
Aquí tenemos un método abstracto definido en el padre:
public abstract int sumUp ( int[] arr );
¿Cuál de los siguientes es obligatorio en un hijo no-abstracto?
public abstract int sumUp ( int[] arr ) { . . . }
public int sumUp ( int[] arr ) { . . . }
public double sumUp ( int[] arr ) { . . . }
public int sumUp ( long[] arr ) { . . . }
¿Qué debe ser cierto si un hijo de una clase abstracta padre no sobreescribe todo los métodos abstractos del padre?
Es un error, no compila.
La clase hija debe ser declada a su vez abstracta.
Las clases hijas son automáticamente no abstractas, así que está bien.
La clase padre es errónea.
Tenemos la siguiente situación:
Birthday happy;
happy = new AdultBirthday( "Joe", 39);
happy.greeting();
¿Qué método greeting()
se ejecuta: el definido por Birthday
o el definido por AdultBirthday
?
El definido por Birthday
porque es el tipo de la variable happy
.
El definido por AdultBirthday
porque es el tipo del objecto referido por happy
.
El más cercano en el código a la línea happy.greeting()
.
Ninguno, este código no es correcto.
La clase Roedor tiene una clase hija Rata que a su vez tiene una clase Ratón. La clase Ratón tiene una clase hija Hamster:
Roedor rod;
Rata rat = new Rata();
Raton mos = new Raton();
Hamster pkt = new Hamster();
¿Cuál de los siguiente no compila?
rod = rat;
rod = mos;
pkt = null;
pkt = rat;
Misma situación que la pregunta anterior. ¿Cual de las siguiente declaraciones es correcta para un array que debería poder contener hasta 10 objectos de tipo Rata, Ratón y Hamster?
Rat[] array = new Rat[10];
Rodent[] array = new Rat[10];
Rodent[] array = new Rodent[10];
Rodent[10] array;
¿Cual es el nombre de la clase que es padre de todas las clases en Java?
Object
Class
Root
Java
Examina el siguiente código:
String str = "Hot Java";
boolean switch = str instanceof String;
¿Cuál es el valor de switch?
true
false
"Hot Java"
null
Polymorphism.puzzlers1:
Poly1
Poly2
Poly3
Poly4
Poly5
Poly6
Poly7
Slack: canal #vigojug en http://www.vigotech.org