Java Polimorfismo: Herencia e Interfaces
This commit is contained in:
parent
0f56c54d51
commit
a5f5462502
8
.gitignore
vendored
8
.gitignore
vendored
@ -4,3 +4,11 @@ test/
|
|||||||
out/
|
out/
|
||||||
*.class
|
*.class
|
||||||
*.iml
|
*.iml
|
||||||
|
.metadata/
|
||||||
|
bin/
|
||||||
|
.settings/
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
*.uml
|
||||||
|
*.uxf
|
||||||
|
*.umlcd
|
||||||
|
@ -6,3 +6,8 @@ Tablero en [trello](https://trello.com/b/dSotNCw1/g5-formaci%C3%B3n-java)
|
|||||||
Java [primeros pasos](./primeros_pasos.md)
|
Java [primeros pasos](./primeros_pasos.md)
|
||||||
- [Curso](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos)
|
- [Curso](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos)
|
||||||
Java [orientación a objetos](./orientacion_obj.md)
|
Java [orientación a objetos](./orientacion_obj.md)
|
||||||
|
- [Curso](https://app.aluracursos.com/course/java-parte-3-entendiendo-herencia-interfaces)
|
||||||
|
Entendiendo [Herencia e Interfaces](./herencia_interfaces.md)
|
||||||
|
- Extra [Enums y anotaciones](./enums_anotaciones_java.md) java
|
||||||
|
- [Curso](https://app.aluracursos.com/course/java-excepciones) Lanzar y controlar
|
||||||
|
[Excepciones](./excepciones.md)
|
||||||
|
10
008_java_oo/eclipse/anotaciones/src/EdadMinima.java
Normal file
10
008_java_oo/eclipse/anotaciones/src/EdadMinima.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
public @interface EdadMinima {
|
||||||
|
public int valor();
|
||||||
|
}
|
14
008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java
Normal file
14
008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Month;
|
||||||
|
|
||||||
|
public class TestCrearUsuario {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Usuario usuario1 = new Usuario("Maria", "123456789", LocalDate.of(1995, Month.MARCH, 14));
|
||||||
|
Usuario usuario2 = new Usuario("Mario", "987654321", LocalDate.of(2020, Month.MARCH, 14));
|
||||||
|
//System.out.println(Usuario.usuarioValido(usuario1));
|
||||||
|
System.out.println(Validador.validador(usuario1));
|
||||||
|
//System.out.println(Usuario.usuarioValido(usuario2));
|
||||||
|
System.out.println(Validador.validador(usuario2));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
53
008_java_oo/eclipse/anotaciones/src/Usuario.java
Normal file
53
008_java_oo/eclipse/anotaciones/src/Usuario.java
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Period;
|
||||||
|
|
||||||
|
public class Usuario {
|
||||||
|
|
||||||
|
private String nombre;
|
||||||
|
private String identidad;
|
||||||
|
@EdadMinima(valor=10)
|
||||||
|
private LocalDate fechaNacimiento;
|
||||||
|
|
||||||
|
public Usuario(String nombre, String identidad, LocalDate fechaNacimiento) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
this.identidad = identidad;
|
||||||
|
this.fechaNacimiento = fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIdentidad() {
|
||||||
|
return identidad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdentidad(String identidad) {
|
||||||
|
this.identidad = identidad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getFechaNacimiento() {
|
||||||
|
return fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFechaNacimiento(LocalDate fechaNacimiento) {
|
||||||
|
this.fechaNacimiento = fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean usuarioValido(Usuario usuario) {
|
||||||
|
if (!usuario.getNombre().matches("[a-zA-Záàâãéèêíïóôõöúçñ\\s]+")) {
|
||||||
|
System.out.println("Fail RegexNombre");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!usuario.getIdentidad().matches("[^0-9]+")) {
|
||||||
|
System.out.println("Fail RegexIdentidad");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Period.between(usuario.getFechaNacimiento(), LocalDate.now()).getYears() >= 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
22
008_java_oo/eclipse/anotaciones/src/Validador.java
Normal file
22
008_java_oo/eclipse/anotaciones/src/Validador.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Period;
|
||||||
|
|
||||||
|
public class Validador {
|
||||||
|
public static <T> boolean validador(T objeto) {
|
||||||
|
Class<?> clase = objeto.getClass();
|
||||||
|
for (Field field : clase.getDeclaredFields()) {
|
||||||
|
if (field.isAnnotationPresent(EdadMinima.class)) {
|
||||||
|
EdadMinima edadMinima = field.getAnnotation(EdadMinima.class);
|
||||||
|
try {
|
||||||
|
field.setAccessible(true);
|
||||||
|
LocalDate fechaNacimiento = (LocalDate) field.get(objeto);
|
||||||
|
return Period.between(fechaNacimiento, LocalDate.now()).getYears() >= edadMinima.valor();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class Administrador extends Funcionario implements Autenticable {
|
||||||
|
|
||||||
|
private AutenticacionUtil util;
|
||||||
|
|
||||||
|
public Administrador() {
|
||||||
|
this.util = new AutenticacionUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBonificacion() {
|
||||||
|
return this.getSalario();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.util.setClave(clave);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.util.inicioSesion(clave);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public interface Autenticable {
|
||||||
|
|
||||||
|
public void setClave(String clave);
|
||||||
|
|
||||||
|
public boolean inicioSesion(String clave);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class AutenticacionUtil {
|
||||||
|
|
||||||
|
private String clave;
|
||||||
|
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.clave == clave;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.clave = clave;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class Cliente implements Autenticable {
|
||||||
|
private String nombre;
|
||||||
|
private String documento;
|
||||||
|
private String telefono;
|
||||||
|
private AutenticacionUtil util;
|
||||||
|
|
||||||
|
public Cliente() {
|
||||||
|
this.util = new AutenticacionUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDocumento() {
|
||||||
|
return documento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDocumento(String documento) {
|
||||||
|
this.documento = documento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTelefono() {
|
||||||
|
return telefono;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTelefono(String telefono) {
|
||||||
|
this.telefono = telefono;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.util.setClave(clave);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.util.inicioSesion(clave);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class Contador extends Funcionario {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBonificacion() {
|
||||||
|
return 200.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class ControlBonificacion {
|
||||||
|
private double suma_bonific;
|
||||||
|
|
||||||
|
public double registrarSalario(Funcionario funcionario) {
|
||||||
|
System.out.println(this.suma_bonific);
|
||||||
|
return this.suma_bonific += funcionario.getBonificacion();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public abstract class Cuenta {
|
||||||
|
protected double saldo;
|
||||||
|
private int agencia;
|
||||||
|
private int numero;
|
||||||
|
private Cliente titular = new Cliente();
|
||||||
|
private static int contador = 0;
|
||||||
|
|
||||||
|
public Cuenta(int agencia, int numero) {
|
||||||
|
if (agencia <= 0) {
|
||||||
|
System.out.println("No se permiten valores negativos");
|
||||||
|
this.agencia = 1;
|
||||||
|
} else {
|
||||||
|
this.agencia = agencia;
|
||||||
|
}
|
||||||
|
this.numero = numero;
|
||||||
|
contador++;
|
||||||
|
System.out.println("Cuentas creadas: "+contador);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void depositar(double valorDeposito);
|
||||||
|
|
||||||
|
public boolean retirar(double valorRetiro) {
|
||||||
|
if (this.saldo >= valorRetiro) {
|
||||||
|
this.saldo -= valorRetiro;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean transferir(double montoTransferencia, Cuenta cuenta){
|
||||||
|
if (this.retirar(montoTransferencia)) {
|
||||||
|
cuenta.depositar(montoTransferencia);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getSaldo() {
|
||||||
|
return this.saldo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAgencia(){
|
||||||
|
return this.agencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumero(int numero){
|
||||||
|
this.numero = numero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumero(){
|
||||||
|
return this.numero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitular(Cliente titular){
|
||||||
|
this.titular = titular;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Cliente getTitular(){
|
||||||
|
return titular;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getContador(){
|
||||||
|
return Cuenta.contador;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class CuentaAhorro extends Cuenta {
|
||||||
|
public CuentaAhorro(int agencia, int numero) {
|
||||||
|
super(agencia, numero);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void depositar(double valorDeposito) {
|
||||||
|
this.saldo += valorDeposito;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class CuentaCorriente extends Cuenta {
|
||||||
|
public CuentaCorriente(int agencia, int numero) {
|
||||||
|
super(agencia, numero);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean retirar(double valorRetiro) {
|
||||||
|
double comision = 0.2;
|
||||||
|
System.out.println("Ejecutando retiro sobreescrito");
|
||||||
|
return super.retirar( valorRetiro + comision );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void depositar(double valorDeposito) {
|
||||||
|
this.saldo += valorDeposito;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public abstract class Funcionario {
|
||||||
|
|
||||||
|
private String nombre;
|
||||||
|
private String documento;
|
||||||
|
private Double salario;
|
||||||
|
private int tipo;
|
||||||
|
|
||||||
|
public Funcionario() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
public String getDocumento() {
|
||||||
|
return documento;
|
||||||
|
}
|
||||||
|
public void setDocumento(String documento) {
|
||||||
|
this.documento = documento;
|
||||||
|
}
|
||||||
|
public Double getSalario() {
|
||||||
|
return salario;
|
||||||
|
}
|
||||||
|
public void setSalario(Double salario) {
|
||||||
|
this.salario = salario;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTipo() {
|
||||||
|
return tipo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTipo(int tipo) {
|
||||||
|
this.tipo = tipo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract double getBonificacion();
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class Gerente extends Funcionario implements Autenticable {
|
||||||
|
|
||||||
|
private AutenticacionUtil util;
|
||||||
|
|
||||||
|
public Gerente() {
|
||||||
|
this.util = new AutenticacionUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
//public void setNombre(String nombre){
|
||||||
|
// super.setNombre(nombre);
|
||||||
|
//}
|
||||||
|
|
||||||
|
public double getBonificacion() {
|
||||||
|
return super.getSalario() + (this.getSalario() * 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.util.setClave(clave);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.util.inicioSesion(clave);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class SistemaInterno {
|
||||||
|
|
||||||
|
private String clave = "12345";
|
||||||
|
|
||||||
|
public boolean autentica(Autenticable autenticable) {
|
||||||
|
|
||||||
|
boolean autorizado = autenticable.inicioSesion(clave);
|
||||||
|
if (autorizado) {
|
||||||
|
System.out.println("Sesion iniciada");
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
System.out.println("No autorizado");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestControlBonificacion {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Funcionario diego = new Contador();
|
||||||
|
diego.setSalario(2000.0);
|
||||||
|
|
||||||
|
Gerente jimena = new Gerente();
|
||||||
|
jimena.setSalario(10000.0);
|
||||||
|
|
||||||
|
ControlBonificacion controlBonificacion = new ControlBonificacion();
|
||||||
|
System.out.println(controlBonificacion.registrarSalario(diego));
|
||||||
|
System.out.println(controlBonificacion.registrarSalario(jimena));
|
||||||
|
|
||||||
|
Contador alex = new Contador();
|
||||||
|
alex.setSalario(5000.0);
|
||||||
|
System.out.println(controlBonificacion.registrarSalario(alex));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestCuentas {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
CuentaCorriente cta_corriente = new CuentaCorriente(1, 1);
|
||||||
|
CuentaAhorro cta_ahorro = new CuentaAhorro(2, 3);
|
||||||
|
cta_corriente.depositar(2000.0);
|
||||||
|
cta_corriente.transferir(1000.0, cta_ahorro);
|
||||||
|
System.out.println("Saldo Cuenta de Ahorro : " + cta_ahorro.getSaldo());
|
||||||
|
System.out.println("Saldo Cuenta de Corriente: " + cta_corriente.getSaldo());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestFuncionario {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Funcionario diego = new Contador();
|
||||||
|
diego.setNombre("Diego");
|
||||||
|
diego.setDocumento("123456789-F");
|
||||||
|
diego.setSalario(2000.0);
|
||||||
|
System.out.println("Funcionario: "+diego.getNombre()+" - "+diego.getSalario()+" - "+diego.getDocumento());
|
||||||
|
System.out.println(diego.getBonificacion());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestGerente {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Gerente gerente = new Gerente();
|
||||||
|
gerente.setNombre("pepe");
|
||||||
|
gerente.setSalario(5000.0);
|
||||||
|
gerente.setDocumento("987654321-D");
|
||||||
|
System.out.println(gerente.getNombre()+" - "+
|
||||||
|
gerente.getDocumento()+" - "+
|
||||||
|
gerente.getSalario()+" - "+
|
||||||
|
gerente.getBonificacion());
|
||||||
|
|
||||||
|
gerente.setClave("AluraLatam");
|
||||||
|
System.out.println(gerente.inicioSesion("AluraLatam"));
|
||||||
|
System.out.println(gerente.inicioSesion("ClaveErronea"));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestReferencias {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// El elemento mas genérico puede ser adaptado al elemento mas específico:
|
||||||
|
// Todos los 'gerentes' son 'funcionarios', pero no todos los 'funcionarios'
|
||||||
|
// son 'gerentes'
|
||||||
|
|
||||||
|
//Funcionario funcionario = new Funcionario();
|
||||||
|
Funcionario funcionario = new Gerente();
|
||||||
|
funcionario.setNombre("Diego");
|
||||||
|
|
||||||
|
Gerente gerente = new Gerente();
|
||||||
|
gerente.setNombre("Jimena");
|
||||||
|
|
||||||
|
funcionario.setSalario(2000.0);
|
||||||
|
gerente.setSalario(10000.0);
|
||||||
|
|
||||||
|
//funcionario.inicioSesion("no_es_posible");
|
||||||
|
System.out.println(gerente.inicioSesion("askldfhkasjdhf"));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package bytebank_heredado;
|
||||||
|
|
||||||
|
public class TestSistemaInterno {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SistemaInterno sistema = new SistemaInterno();
|
||||||
|
Gerente gerente1 = new Gerente();
|
||||||
|
Administrador admin1 = new Administrador();
|
||||||
|
System.out.println(sistema.autentica(gerente1));
|
||||||
|
System.out.println(sistema.autentica(admin1));
|
||||||
|
//sistema.autentica(admin1);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package colores;
|
||||||
|
|
||||||
|
public class Colores {
|
||||||
|
// Colores ANSI
|
||||||
|
public static final String RESET = "\u001B[0m";
|
||||||
|
public static final String BLACK = "\u001B[30m";
|
||||||
|
public static final String RED = "\u001B[31m";
|
||||||
|
public static final String GREEN = "\u001B[32m";
|
||||||
|
public static final String YELLOW = "\u001B[33m";
|
||||||
|
public static final String BLUE = "\u001B[34m";
|
||||||
|
public static final String PURPLE = "\u001B[35m";
|
||||||
|
public static final String CYAN = "\u001B[36m";
|
||||||
|
public static final String WHITE = "\u001B[37m";
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(RED + "Este texto es rojo" + RESET);
|
||||||
|
System.out.println(GREEN + "Este texto es verde" + RESET);
|
||||||
|
System.out.println(BLUE + "Este texto es azul" + RESET);
|
||||||
|
System.out.println(YELLOW + "Este texto es amarillo" + RESET);
|
||||||
|
System.out.println(PURPLE + "Este texto es morado" + RESET);
|
||||||
|
System.out.println(CYAN + "Este texto es cian" + RESET);
|
||||||
|
System.out.println(WHITE + "Este texto es blanco" + RESET);
|
||||||
|
}
|
||||||
|
}
|
5
008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java
Normal file
5
008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package enums;
|
||||||
|
|
||||||
|
public enum Dia {
|
||||||
|
LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package enums;
|
||||||
|
|
||||||
|
public class Principal {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
for (Dia dia : Dia.values()) {
|
||||||
|
System.out.println("El dia de la semana es: "+dia);
|
||||||
|
}
|
||||||
|
Dia domingo = Dia.DOMINGO;
|
||||||
|
System.out.println(domingo.name());
|
||||||
|
System.out.println(domingo.ordinal());
|
||||||
|
System.out.println(domingo.toString());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
module bytebank_heredado {
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package vehiculos;
|
||||||
|
|
||||||
|
public class Automovil extends Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo automovil");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package vehiculos;
|
||||||
|
|
||||||
|
public class Motocicleta extends Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo motocicleta");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package vehiculos;
|
||||||
|
|
||||||
|
public class TestVehiculos {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Vehiculo m = new Motocicleta();
|
||||||
|
m.encender();
|
||||||
|
Vehiculo c = new Automovil();
|
||||||
|
c.encender();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package vehiculos;
|
||||||
|
|
||||||
|
public class Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo vehículo");
|
||||||
|
}
|
||||||
|
}
|
150
008_java_oo/enums_anotaciones_java.md
Normal file
150
008_java_oo/enums_anotaciones_java.md
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
# Enums
|
||||||
|
|
||||||
|
Tipo de datos especiales donde una variable puede contener el valor de un grupo
|
||||||
|
de constantes predefinidas.
|
||||||
|
|
||||||
|
- Java [enum](https://www.youtube.com/watch?v=EoPvlE85XAQ)
|
||||||
|
|
||||||
|
```java
|
||||||
|
public enum Dia {
|
||||||
|
LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class Principal {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
for (Dia dia : Dia.values()) {
|
||||||
|
System.out.println("El dia de la semana es: "+dia);
|
||||||
|
}
|
||||||
|
Dia domingo = Dia.DOMINGO;
|
||||||
|
System.out.println(domingo.name());
|
||||||
|
System.out.println(domingo.ordinal());
|
||||||
|
System.out.println(domingo.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Anotaciones
|
||||||
|
|
||||||
|
Alura [blog](https://www.aluracursos.com/blog/crear-anotaciones-en-java)
|
||||||
|
|
||||||
|
Clase [Usuario](./eclipse/anotaciones/src/Usuario.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Period;
|
||||||
|
|
||||||
|
public class Usuario {
|
||||||
|
|
||||||
|
private String nombre;
|
||||||
|
private String identidad;
|
||||||
|
@EdadMinima(valor=10)
|
||||||
|
private LocalDate fechaNacimiento;
|
||||||
|
|
||||||
|
public Usuario(String nombre, String identidad, LocalDate fechaNacimiento) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
this.identidad = identidad;
|
||||||
|
this.fechaNacimiento = fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIdentidad() {
|
||||||
|
return identidad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdentidad(String identidad) {
|
||||||
|
this.identidad = identidad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getFechaNacimiento() {
|
||||||
|
return fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFechaNacimiento(LocalDate fechaNacimiento) {
|
||||||
|
this.fechaNacimiento = fechaNacimiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean usuarioValido(Usuario usuario) {
|
||||||
|
if (!usuario.getNombre().matches("[a-zA-Záàâãéèêíïóôõöúçñ\\s]+")) {
|
||||||
|
System.out.println("Fail RegexNombre");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!usuario.getIdentidad().matches("[^0-9]+")) {
|
||||||
|
System.out.println("Fail RegexIdentidad");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return Period.between(usuario.getFechaNacimiento(), LocalDate.now()).getYears() >= 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Clase [Validador](./eclipse/anotaciones/src/Validador.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Period;
|
||||||
|
|
||||||
|
public class Validador {
|
||||||
|
public static <T> boolean validador(T objeto) {
|
||||||
|
Class<?> clase = objeto.getClass();
|
||||||
|
for (Field field : clase.getDeclaredFields()) {
|
||||||
|
if (field.isAnnotationPresent(EdadMinima.class)) {
|
||||||
|
EdadMinima edadMinima = field.getAnnotation(EdadMinima.class);
|
||||||
|
try {
|
||||||
|
field.setAccessible(true);
|
||||||
|
LocalDate fechaNacimiento = (LocalDate) field.get(objeto);
|
||||||
|
return Period.between(fechaNacimiento, LocalDate.now()).getYears() >= edadMinima.valor();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Anotacion [EdadMinima](./eclipse/anotaciones/src/EdadMinima.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
public @interface EdadMinima {
|
||||||
|
public int valor();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Clase [TestCrearUsuario](./eclipse/anotaciones/src/TestCrearUsuario.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Month;
|
||||||
|
|
||||||
|
public class TestCrearUsuario {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Usuario usuario1 = new Usuario("Maria", "123456789", LocalDate.of(1995, Month.MARCH, 14));
|
||||||
|
Usuario usuario2 = new Usuario("Mario", "987654321", LocalDate.of(2020, Month.MARCH, 14));
|
||||||
|
//System.out.println(Usuario.usuarioValido(usuario1));
|
||||||
|
System.out.println(Validador.validador(usuario1));
|
||||||
|
//System.out.println(Usuario.usuarioValido(usuario2));
|
||||||
|
System.out.println(Validador.validador(usuario2));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
275
008_java_oo/herencia_interfaces.md
Normal file
275
008_java_oo/herencia_interfaces.md
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
# Java [Polimorfismo, Entendiendo Herencia e Interfaces](https://app.aluracursos.com/course/java-parte-3-entendiendo-herencia-interfaces)
|
||||||
|
|
||||||
|
## Herencia
|
||||||
|
|
||||||
|
Extendiendo la funcionalidad de la clase **Funcionario** a la nueva clase **Gerente**,
|
||||||
|
heradando métodos y atributos de la case padre (Funcionario), utilzando la palabra
|
||||||
|
reservada `extends`. Reutilización de código.
|
||||||
|
|
||||||
|
Palabras reservadas `this` y `super`.
|
||||||
|
|
||||||
|
- **this**: este *keyword* se refiere al objeto catuan en un método o
|
||||||
|
constructor. El uso más común de este término es eliminnar la ambiguedad entre
|
||||||
|
los atributos de clase y los parámetros con el mismo nombre. Además sirve para:
|
||||||
|
- Invocar al constructor de la clase actual.
|
||||||
|
- Invocar al método de clase actual.
|
||||||
|
- Devolver el objeto de la clase actual.
|
||||||
|
- Pasar un argumento en la llamada a un método.
|
||||||
|
- Pasar un arg. en la llamada al constructor.
|
||||||
|
- **super**: este *keyword* se refiere a objetos de la superclase (madre). Se
|
||||||
|
utiliza para llamar a los métodos de la superclase y para acceder al constructor
|
||||||
|
de esta. Su función más común es eliminar la ambiguedad entre superclases y
|
||||||
|
subclases que tienen métodos con el mismo nombre. Utilizada para:
|
||||||
|
- `super`:
|
||||||
|
- Referirse a la variable de instancia de la clase inmediatamente superior.
|
||||||
|
- Invocar métodos de la clase inmediatamente superior (clase madre).
|
||||||
|
- `super()`:
|
||||||
|
- Invocar al constructor de la clase inmediatamente superior (clase madre).
|
||||||
|
|
||||||
|
Java doc, [this](https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html)
|
||||||
|
y [super](https://docs.oracle.com/javase/tutorial/java/IandI/super.html)
|
||||||
|
|
||||||
|
### Modificadores de acceso
|
||||||
|
|
||||||
|
Los modificadores de acceso o accesibilidad son algunas palabras claves utilizadas
|
||||||
|
en el lenguaje Java para definir el nivel de accesibilidad que los elementos de
|
||||||
|
una clase (atributos y métodos) e incluso la propia clase puede tener los mismos
|
||||||
|
elementos de otra clase.
|
||||||
|
|
||||||
|
- **Public**: Este es el modificador menos restrictivo de todos. De esta manera,
|
||||||
|
cualquier componente puede acceder a los miembros de la clase, las clases y las
|
||||||
|
interfaces.
|
||||||
|
|
||||||
|
- **Protected**: Al usar este modificador de acceso, los miembros de la clase y
|
||||||
|
las clases son accesibles para otros elementos siempre que están dentro del
|
||||||
|
mismo package o, si pertenecen a otros packages, siempre que tengan una relación
|
||||||
|
extendida (herencia), es decir, las clases secundarias pueden acceder a los
|
||||||
|
miembros de su clase principal (o clase de abuelos, etc.).
|
||||||
|
|
||||||
|
- **Private**: Este es el modificador de acceso más restrictivo de todos.
|
||||||
|
Solo se puede acceder a los miembros definidos como privados desde dentro de la
|
||||||
|
clase y desde ningún otro lugar, independientemente del paquete o la herencia.
|
||||||
|
|
||||||
|
Java doc
|
||||||
|
[modificadores de acceso](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)
|
||||||
|
|
||||||
|
### Sobrecarga de metodo
|
||||||
|
|
||||||
|
```java
|
||||||
|
public boolean autenticar(int password) {
|
||||||
|
if (this.password == contraseña) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nuevo método, recibiendo dos parámetros
|
||||||
|
public boolean autenticar(String login, int password) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Se ha creado una nueva versión del método autenticar. Ahora tenemos dos métodos
|
||||||
|
de autenticar en la misma clase que varían en el número o tipo de parámetros.
|
||||||
|
Esto se llama sobrecarga de métodos.
|
||||||
|
|
||||||
|
La sobrecarga no tiene en cuenta la visibilidad o retorno del método, solo los
|
||||||
|
parámetros y no depende de la herencia.
|
||||||
|
|
||||||
|
Notas:
|
||||||
|
|
||||||
|
- La clase madre es llamada de super o base class.
|
||||||
|
- La clase hija también es llamada de sub class.
|
||||||
|
- Aumentar la visibilidad de un miembro (atributo, método) a través de protected.
|
||||||
|
- Acceder o llamar un miembro (atributo, método) a través de super.
|
||||||
|
|
||||||
|
## Entendiendo Polimorfismo
|
||||||
|
|
||||||
|
Clase Madre
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo vehículo");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Clases Hijas
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class Automovil extends Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo automovil");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class Motocicleta extends Vehiculo {
|
||||||
|
public void encender() {
|
||||||
|
System.out.println("Enciendiendo motocicleta");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Main
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class TestVehiculos {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Vehiculo m = new Motocicleta();
|
||||||
|
m.encender();
|
||||||
|
Vehiculo c = new Automovil();
|
||||||
|
c.encender();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Salida
|
||||||
|
|
||||||
|
```txt
|
||||||
|
Enciendiendo motocicleta
|
||||||
|
Enciendiendo automovil
|
||||||
|
```
|
||||||
|
|
||||||
|
Notas
|
||||||
|
|
||||||
|
- Los objetos no cambian de tipo.
|
||||||
|
- La referencia puede cambiar, y ahí es donde entra el polimorfismo.
|
||||||
|
- El polimorfismo permite utilizar referencias más genéricas para comunicarse
|
||||||
|
con un objeto.
|
||||||
|
- El uso de referencias más genéricas permite **desacoplar** sistemas.
|
||||||
|
- Uso de la anotación `@Override`.
|
||||||
|
- Los constructores no se heredan.
|
||||||
|
- Se puede llamar a un constructor de clase madre mediante `super()`.
|
||||||
|
|
||||||
|
## Clases abstractas e interfaces
|
||||||
|
|
||||||
|
| [Interfáz](https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html) | [Clase Abstracta](https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) |
|
||||||
|
| - | - |
|
||||||
|
| *Keyword* `implements` | *Keyword* `extends` |
|
||||||
|
| Admite herencia múltiple | No admite herencia múltiple |
|
||||||
|
| Proporciona una abstracción absoluta y no puede tener implementaciones de métodos | Puede tener métodos con implementaciones |
|
||||||
|
| No posee constructor | Posee constructor |
|
||||||
|
| No puede tener modificador de acceso, todos los accesos con públicos | Puede tener modificadores de acceso |
|
||||||
|
| Sus miembros **no** pueden ser `static` | Solo los miembros completamenten abstractos pueden ser `static` |
|
||||||
|
|
||||||
|
No hay herencia múltiple en Java, Las interfaces son una alternativa a la
|
||||||
|
herencia con respecto al polimorfismo.
|
||||||
|
|
||||||
|
Java [util](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/package-summary.html)
|
||||||
|
|
||||||
|
#### Ejemplos de clases abstractas e interfaces
|
||||||
|
|
||||||
|
Clase **Abstracta**
|
||||||
|
[Funcionario](./eclipse/bytebank_heredado/src/bytebank_heredado/Funcionario.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
public abstract class Funcionario {
|
||||||
|
|
||||||
|
private String nombre;
|
||||||
|
private String documento;
|
||||||
|
private Double salario;
|
||||||
|
private int tipo;
|
||||||
|
|
||||||
|
public Funcionario() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDocumento() {
|
||||||
|
return documento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDocumento(String documento) {
|
||||||
|
this.documento = documento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getSalario() {
|
||||||
|
return salario;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSalario(Double salario) {
|
||||||
|
this.salario = salario;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTipo() {
|
||||||
|
return tipo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTipo(int tipo) {
|
||||||
|
this.tipo = tipo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract double getBonificacion();
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Implementada por la **clase**
|
||||||
|
[Gerente](./eclipse/bytebank_heredado/src/bytebank_heredado/Gerente.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class Gerente extends Funcionario implements Autenticable {
|
||||||
|
|
||||||
|
private AutenticacionUtil util;
|
||||||
|
|
||||||
|
public Gerente() {
|
||||||
|
this.util = new AutenticacionUtil();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getBonificacion() {
|
||||||
|
return super.getSalario() + (this.getSalario() * 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.util.setClave(clave);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.util.inicioSesion(clave);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Que implementa la **Interfáz**
|
||||||
|
[Autenticable](./eclipse/bytebank_heredado/src/bytebank_heredado/Autenticable.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
public interface Autenticable {
|
||||||
|
|
||||||
|
public void setClave(String clave);
|
||||||
|
|
||||||
|
public boolean inicioSesion(String clave);
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilización de clase **utilitaria**
|
||||||
|
[Autenticable](./eclipse/bytebank_heredado/src/bytebank_heredado/AutenticacionUtil.java)
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class AutenticacionUtil {
|
||||||
|
|
||||||
|
private String clave;
|
||||||
|
|
||||||
|
public boolean inicioSesion(String clave) {
|
||||||
|
return this.clave == clave;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClave(String clave) {
|
||||||
|
this.clave = clave;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
@ -5,6 +5,7 @@ public class Cuenta {
|
|||||||
private int numero;
|
private int numero;
|
||||||
private Cliente titular = new Cliente();
|
private Cliente titular = new Cliente();
|
||||||
private static int contador = 0;
|
private static int contador = 0;
|
||||||
|
|
||||||
public Cuenta(int agencia) {
|
public Cuenta(int agencia) {
|
||||||
if (agencia <= 0) {
|
if (agencia <= 0) {
|
||||||
System.out.println("No se permiten valores negativos");
|
System.out.println("No se permiten valores negativos");
|
||||||
@ -15,6 +16,7 @@ public class Cuenta {
|
|||||||
contador++;
|
contador++;
|
||||||
System.out.println("Cuentas creadas: "+contador);
|
System.out.println("Cuentas creadas: "+contador);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void depositar(double valorDeposito){
|
public void depositar(double valorDeposito){
|
||||||
this.saldo += valorDeposito;
|
this.saldo += valorDeposito;
|
||||||
}
|
}
|
||||||
@ -57,6 +59,7 @@ public class Cuenta {
|
|||||||
public void setTitular(Cliente titular){
|
public void setTitular(Cliente titular){
|
||||||
this.titular = titular;
|
this.titular = titular;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Cliente getTitular(){
|
public Cliente getTitular(){
|
||||||
return titular;
|
return titular;
|
||||||
}
|
}
|
||||||
|
@ -7,4 +7,4 @@ public class PruebaAcceso {
|
|||||||
System.out.println(cuenta.getSaldo());
|
System.out.println(cuenta.getSaldo());
|
||||||
System.out.println(cuenta.getAgencia());
|
System.out.println(cuenta.getAgencia());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,8 +3,10 @@ public class PruebaConstructor {
|
|||||||
Cuenta cuenta = new Cuenta(555);
|
Cuenta cuenta = new Cuenta(555);
|
||||||
//cuenta.setAgencia(-15);
|
//cuenta.setAgencia(-15);
|
||||||
System.out.println(cuenta.getAgencia());
|
System.out.println(cuenta.getAgencia());
|
||||||
Cuenta cuenta2 = new Cuenta(333);
|
@SuppressWarnings("unused")
|
||||||
Cuenta cuenta3 = new Cuenta(444);
|
Cuenta cuenta2 = new Cuenta(333);
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
Cuenta cuenta3 = new Cuenta(444);
|
||||||
System.out.println(Cuenta.getContador());
|
System.out.println(Cuenta.getContador());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,8 +4,8 @@ public class TestReferencia {
|
|||||||
primeraCuenta.depositar(200);
|
primeraCuenta.depositar(200);
|
||||||
|
|
||||||
//Cuenta segundaCuenta = new Cuenta();
|
//Cuenta segundaCuenta = new Cuenta();
|
||||||
// System.out.println(primeraCuenta); // Cuenta@23fc625e
|
// System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||||
// System.out.println(segundaCuenta); // Cuenta@3f99bd52
|
// System.out.println(segundaCuenta); // Cuenta@3f99bd52
|
||||||
|
|
||||||
Cuenta segundaCuenta = primeraCuenta;
|
Cuenta segundaCuenta = primeraCuenta;
|
||||||
segundaCuenta.depositar(100);
|
segundaCuenta.depositar(100);
|
||||||
@ -16,7 +16,7 @@ public class TestReferencia {
|
|||||||
System.out.println("Saldo primera cuenta: " + primeraCuenta.getSaldo());
|
System.out.println("Saldo primera cuenta: " + primeraCuenta.getSaldo());
|
||||||
|
|
||||||
// Obtener referencia del objeto
|
// Obtener referencia del objeto
|
||||||
System.out.println(primeraCuenta); // Cuenta@23fc625e
|
System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||||
System.out.println(segundaCuenta); // Cuenta@23fc625e
|
System.out.println(segundaCuenta); // Cuenta@23fc625e
|
||||||
|
|
||||||
if (primeraCuenta == segundaCuenta) {
|
if (primeraCuenta == segundaCuenta) {
|
||||||
|
@ -11,7 +11,6 @@ public class TestReferencia2 {
|
|||||||
|
|
||||||
// referencia
|
// referencia
|
||||||
System.out.println(cuentaDiego.getTitular()); // Cliente@2a84aee7
|
System.out.println(cuentaDiego.getTitular()); // Cliente@2a84aee7
|
||||||
System.out.println(diego); // Cliente@2a84aee7
|
System.out.println(diego); // Cliente@2a84aee7
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
public class TestReferencia3 {
|
public class TestReferencia3 {
|
||||||
public static void main(String[] args) {
|
public static void main(final String[] args) {
|
||||||
Cuenta cuentaDeDiego = new Cuenta(1);
|
final Cuenta cuentaDeDiego = new Cuenta(1);
|
||||||
//cuentaDeDiego.titular = new Cliente();
|
//cuentaDeDiego.titular = new Cliente();
|
||||||
cuentaDeDiego.getTitular().setNombre("Diego");
|
cuentaDeDiego.getTitular().setNombre("Diego");
|
||||||
System.out.println(cuentaDeDiego.getTitular().getNombre());
|
System.out.println(cuentaDeDiego.getTitular().getNombre());
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# Java Entendiendo la [Orientación a Objetos](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos)
|
# Java Entendiendo la [Orientación a Objetos](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos)
|
||||||
|
|
||||||
|
Intro [POO](https://www.youtube.com/watch?v=Oigen2sjagk)
|
||||||
|
|
||||||
Diferencias con el paradigma **procedural**: se utilizó como práctica de
|
Diferencias con el paradigma **procedural**: se utilizó como práctica de
|
||||||
programación antes de la introducción de lenguajes orientados a objetos.
|
programación antes de la introducción de lenguajes orientados a objetos.
|
||||||
La necesidad de validar el numeroIdentidad en un formulario se utilizó como
|
La necesidad de validar el numeroIdentidad en un formulario se utilizó como
|
||||||
@ -87,7 +89,7 @@ ejemplifica un atributo de clase con valor predeterminado.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- Definicion de metodos con retorno y uso de *this* para atributos de clase
|
- Definición de metodos con retorno y uso de *this* para atributos de clase
|
||||||
|
|
||||||
```java
|
```java
|
||||||
// Entidad Cuenta
|
// Entidad Cuenta
|
||||||
|
Loading…
Reference in New Issue
Block a user