SOLID Principles
Antes...
¿ Como luce un código sin principios, sin patrones ?
Así luce
Tu aplicación va a cambiar
¿ Como prevenir el desastre ?
Las clases deben ser capaces de extenderse sin modificar su contenido.
A través de interfaces o clases abstractas de las que depende una implementación concreta.
*Los métodos abstractos se crean cuando se instancia de la clase abstracta.
Demo
public abstract class Animal {
private String nombre;
public Animal(){} // Constructor
public void comer(){
System.out.println("El " + nombre + "esta comiendo");
}
public abstract void moverse(); // Metodo abstracto sin implementación
// Se implementa cuando se instancia o en la clase que hereda.
public void setNombre(String s){
nombre = s;
}
public String getNombre(){
return nombre;
}
}
public class Vaca extends Animal {
public Vaca(){
super(); // Ejecuta constructor de la clase abstracta heredada.
setNombre("Vaca");
}
public void moverse(){
System.out.println("La vaca esta caminado. Tiene 4 patas");
}
}
public class Ave extends Animal {
public Ave(){
super(); // Ejecuta constructor de la clase abstracta heredada.
setNombre("Ave");
}
public void moverse(){
System.out.println("El Ave esta volando. Tiene 2 patas");
}
}
public class Main {
public static void main(String[] args){
//Animal v = new Vaca(); Polimorfismo variables abstractas
// Animal como referencias para las variables que hereden de él.
Vaca v = new Vaca();
v.comer();
v.moverse();
//Animal a = new Ave();
Ave a = new Ave();
a.comer();
a.moverse();
}
}
¿ Que es una clase abstracta ?
¿ Cuando una clase es abstracta?
¿ Para que utilizo un clase abstracta?
Concluciones