From a5f54625023af4daba06bd3dac8aa87639b4790b Mon Sep 17 00:00:00 2001 From: devfzn Date: Mon, 3 Jul 2023 19:26:28 -0400 Subject: [PATCH] Java Polimorfismo: Herencia e Interfaces --- .gitignore | 8 + 008_java_oo/README.md | 5 + .../eclipse/anotaciones/src/EdadMinima.java | 10 + .../anotaciones/src/TestCrearUsuario.java | 14 + .../eclipse/anotaciones/src/Usuario.java | 53 ++++ .../eclipse/anotaciones/src/Validador.java | 22 ++ .../src/bytebank_heredado/Administrador.java | 26 ++ .../src/bytebank_heredado/Autenticable.java | 9 + .../bytebank_heredado/AutenticacionUtil.java | 14 + .../src/bytebank_heredado/Cliente.java | 46 +++ .../src/bytebank_heredado/Contador.java | 10 + .../ControlBonificacion.java | 10 + .../src/bytebank_heredado/Cuenta.java | 69 +++++ .../src/bytebank_heredado/CuentaAhorro.java | 12 + .../bytebank_heredado/CuentaCorriente.java | 19 ++ .../src/bytebank_heredado/Funcionario.java | 42 +++ .../src/bytebank_heredado/Gerente.java | 29 ++ .../src/bytebank_heredado/SistemaInterno.java | 19 ++ .../TestControlBonificacion.java | 19 ++ .../src/bytebank_heredado/TestCuentas.java | 12 + .../bytebank_heredado/TestFuncionario.java | 12 + .../src/bytebank_heredado/TestGerente.java | 18 ++ .../bytebank_heredado/TestReferencias.java | 23 ++ .../bytebank_heredado/TestSistemaInterno.java | 12 + .../src/colores/Colores.java | 24 ++ .../bytebank_heredado/src/enums/Dia.java | 5 + .../src/enums/Principal.java | 14 + .../bytebank_heredado/src/module-info.java | 8 + .../src/vehiculos/Automovil.java | 7 + .../src/vehiculos/Motocicleta.java | 7 + .../src/vehiculos/TestVehiculos.java | 10 + .../src/vehiculos/Vehiculo.java | 7 + 008_java_oo/enums_anotaciones_java.md | 150 ++++++++++ 008_java_oo/herencia_interfaces.md | 275 ++++++++++++++++++ .../proyecto_bytebank/src/Cuenta.java | 3 + .../proyecto_bytebank/src/PruebaAcceso.java | 2 +- .../src/PruebaConstructor.java | 6 +- .../proyecto_bytebank/src/TestReferencia.java | 6 +- .../src/TestReferencia2.java | 3 +- .../src/TestReferencia3.java | 4 +- 008_java_oo/orientacion_obj.md | 4 +- 41 files changed, 1037 insertions(+), 11 deletions(-) create mode 100644 008_java_oo/eclipse/anotaciones/src/EdadMinima.java create mode 100644 008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java create mode 100644 008_java_oo/eclipse/anotaciones/src/Usuario.java create mode 100644 008_java_oo/eclipse/anotaciones/src/Validador.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Administrador.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Autenticable.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/AutenticacionUtil.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cliente.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Contador.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/ControlBonificacion.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cuenta.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaAhorro.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaCorriente.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Funcionario.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Gerente.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/SistemaInterno.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestControlBonificacion.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestCuentas.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestFuncionario.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestGerente.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestReferencias.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestSistemaInterno.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/colores/Colores.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/enums/Principal.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/module-info.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Automovil.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Motocicleta.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/vehiculos/TestVehiculos.java create mode 100644 008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Vehiculo.java create mode 100644 008_java_oo/enums_anotaciones_java.md create mode 100644 008_java_oo/herencia_interfaces.md diff --git a/.gitignore b/.gitignore index cba0fcd..95c55e8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,11 @@ test/ out/ *.class *.iml +.metadata/ +bin/ +.settings/ +.classpath +.project +*.uml +*.uxf +*.umlcd diff --git a/008_java_oo/README.md b/008_java_oo/README.md index 8262f9d..e18ddda 100644 --- a/008_java_oo/README.md +++ b/008_java_oo/README.md @@ -6,3 +6,8 @@ Tablero en [trello](https://trello.com/b/dSotNCw1/g5-formaci%C3%B3n-java) Java [primeros pasos](./primeros_pasos.md) - [Curso](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos) 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) diff --git a/008_java_oo/eclipse/anotaciones/src/EdadMinima.java b/008_java_oo/eclipse/anotaciones/src/EdadMinima.java new file mode 100644 index 0000000..06c5b91 --- /dev/null +++ b/008_java_oo/eclipse/anotaciones/src/EdadMinima.java @@ -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(); +} diff --git a/008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java b/008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java new file mode 100644 index 0000000..a685c63 --- /dev/null +++ b/008_java_oo/eclipse/anotaciones/src/TestCrearUsuario.java @@ -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)); + + } +} diff --git a/008_java_oo/eclipse/anotaciones/src/Usuario.java b/008_java_oo/eclipse/anotaciones/src/Usuario.java new file mode 100644 index 0000000..7f0e3ec --- /dev/null +++ b/008_java_oo/eclipse/anotaciones/src/Usuario.java @@ -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; + } + +} diff --git a/008_java_oo/eclipse/anotaciones/src/Validador.java b/008_java_oo/eclipse/anotaciones/src/Validador.java new file mode 100644 index 0000000..8f22c92 --- /dev/null +++ b/008_java_oo/eclipse/anotaciones/src/Validador.java @@ -0,0 +1,22 @@ +import java.lang.reflect.Field; +import java.time.LocalDate; +import java.time.Period; + +public class Validador { + public static 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; + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Administrador.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Administrador.java new file mode 100644 index 0000000..6908d2c --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Administrador.java @@ -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); + } + +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Autenticable.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Autenticable.java new file mode 100644 index 0000000..148213b --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Autenticable.java @@ -0,0 +1,9 @@ +package bytebank_heredado; + +public interface Autenticable { + + public void setClave(String clave); + + public boolean inicioSesion(String clave); + +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/AutenticacionUtil.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/AutenticacionUtil.java new file mode 100644 index 0000000..b9a27d4 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/AutenticacionUtil.java @@ -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; + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cliente.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cliente.java new file mode 100644 index 0000000..b47fb1a --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cliente.java @@ -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); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Contador.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Contador.java new file mode 100644 index 0000000..9a29c37 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Contador.java @@ -0,0 +1,10 @@ +package bytebank_heredado; + +public class Contador extends Funcionario { + + @Override + public double getBonificacion() { + return 200.0; + } + +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/ControlBonificacion.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/ControlBonificacion.java new file mode 100644 index 0000000..ca27b07 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/ControlBonificacion.java @@ -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(); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cuenta.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cuenta.java new file mode 100644 index 0000000..4b2bc19 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Cuenta.java @@ -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; + } +} \ No newline at end of file diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaAhorro.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaAhorro.java new file mode 100644 index 0000000..24f6c25 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaAhorro.java @@ -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; + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaCorriente.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaCorriente.java new file mode 100644 index 0000000..df79298 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/CuentaCorriente.java @@ -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; + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Funcionario.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Funcionario.java new file mode 100644 index 0000000..c55fe35 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Funcionario.java @@ -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(); + +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Gerente.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Gerente.java new file mode 100644 index 0000000..2839df7 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/Gerente.java @@ -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); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/SistemaInterno.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/SistemaInterno.java new file mode 100644 index 0000000..a759734 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/SistemaInterno.java @@ -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; + } + + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestControlBonificacion.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestControlBonificacion.java new file mode 100644 index 0000000..7ceacb8 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestControlBonificacion.java @@ -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)); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestCuentas.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestCuentas.java new file mode 100644 index 0000000..cc3efdb --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestCuentas.java @@ -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()); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestFuncionario.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestFuncionario.java new file mode 100644 index 0000000..884fc8a --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestFuncionario.java @@ -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()); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestGerente.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestGerente.java new file mode 100644 index 0000000..ed1cc31 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestGerente.java @@ -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")); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestReferencias.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestReferencias.java new file mode 100644 index 0000000..cd4d467 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestReferencias.java @@ -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")); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestSistemaInterno.java b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestSistemaInterno.java new file mode 100644 index 0000000..69309fe --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/bytebank_heredado/TestSistemaInterno.java @@ -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); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/colores/Colores.java b/008_java_oo/eclipse/bytebank_heredado/src/colores/Colores.java new file mode 100644 index 0000000..8767862 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/colores/Colores.java @@ -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); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java b/008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java new file mode 100644 index 0000000..365a44e --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/enums/Dia.java @@ -0,0 +1,5 @@ +package enums; + +public enum Dia { + LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/enums/Principal.java b/008_java_oo/eclipse/bytebank_heredado/src/enums/Principal.java new file mode 100644 index 0000000..c530f36 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/enums/Principal.java @@ -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()); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/module-info.java b/008_java_oo/eclipse/bytebank_heredado/src/module-info.java new file mode 100644 index 0000000..933a3c5 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/module-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * + */ +module bytebank_heredado { +} \ No newline at end of file diff --git a/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Automovil.java b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Automovil.java new file mode 100644 index 0000000..5d507b9 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Automovil.java @@ -0,0 +1,7 @@ +package vehiculos; + +public class Automovil extends Vehiculo { + public void encender() { + System.out.println("Enciendiendo automovil"); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Motocicleta.java b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Motocicleta.java new file mode 100644 index 0000000..235acaf --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Motocicleta.java @@ -0,0 +1,7 @@ +package vehiculos; + +public class Motocicleta extends Vehiculo { + public void encender() { + System.out.println("Enciendiendo motocicleta"); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/TestVehiculos.java b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/TestVehiculos.java new file mode 100644 index 0000000..b2b1bbd --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/TestVehiculos.java @@ -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(); + } +} diff --git a/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Vehiculo.java b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Vehiculo.java new file mode 100644 index 0000000..1f70f6c --- /dev/null +++ b/008_java_oo/eclipse/bytebank_heredado/src/vehiculos/Vehiculo.java @@ -0,0 +1,7 @@ +package vehiculos; + +public class Vehiculo { + public void encender() { + System.out.println("Enciendiendo vehículo"); + } +} \ No newline at end of file diff --git a/008_java_oo/enums_anotaciones_java.md b/008_java_oo/enums_anotaciones_java.md new file mode 100644 index 0000000..42e2c97 --- /dev/null +++ b/008_java_oo/enums_anotaciones_java.md @@ -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 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)); + + } +} +``` diff --git a/008_java_oo/herencia_interfaces.md b/008_java_oo/herencia_interfaces.md new file mode 100644 index 0000000..c4aa1a3 --- /dev/null +++ b/008_java_oo/herencia_interfaces.md @@ -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; + } + +} +``` diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java index 9008353..1970900 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java @@ -5,6 +5,7 @@ public class Cuenta { private int numero; private Cliente titular = new Cliente(); private static int contador = 0; + public Cuenta(int agencia) { if (agencia <= 0) { System.out.println("No se permiten valores negativos"); @@ -15,6 +16,7 @@ public class Cuenta { contador++; System.out.println("Cuentas creadas: "+contador); } + public void depositar(double valorDeposito){ this.saldo += valorDeposito; } @@ -57,6 +59,7 @@ public class Cuenta { public void setTitular(Cliente titular){ this.titular = titular; } + public Cliente getTitular(){ return titular; } diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaAcceso.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaAcceso.java index 7370e61..4e23798 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaAcceso.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaAcceso.java @@ -7,4 +7,4 @@ public class PruebaAcceso { System.out.println(cuenta.getSaldo()); System.out.println(cuenta.getAgencia()); } -} +} \ No newline at end of file diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaConstructor.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaConstructor.java index d0e4f21..bb2281a 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaConstructor.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/PruebaConstructor.java @@ -3,8 +3,10 @@ public class PruebaConstructor { Cuenta cuenta = new Cuenta(555); //cuenta.setAgencia(-15); System.out.println(cuenta.getAgencia()); - Cuenta cuenta2 = new Cuenta(333); - Cuenta cuenta3 = new Cuenta(444); + @SuppressWarnings("unused") + Cuenta cuenta2 = new Cuenta(333); + @SuppressWarnings("unused") + Cuenta cuenta3 = new Cuenta(444); System.out.println(Cuenta.getContador()); } } \ No newline at end of file diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia.java index 8f9ae39..372e0a3 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia.java @@ -4,8 +4,8 @@ public class TestReferencia { primeraCuenta.depositar(200); //Cuenta segundaCuenta = new Cuenta(); - // System.out.println(primeraCuenta); // Cuenta@23fc625e - // System.out.println(segundaCuenta); // Cuenta@3f99bd52 + // System.out.println(primeraCuenta); // Cuenta@23fc625e + // System.out.println(segundaCuenta); // Cuenta@3f99bd52 Cuenta segundaCuenta = primeraCuenta; segundaCuenta.depositar(100); @@ -16,7 +16,7 @@ public class TestReferencia { System.out.println("Saldo primera cuenta: " + primeraCuenta.getSaldo()); // Obtener referencia del objeto - System.out.println(primeraCuenta); // Cuenta@23fc625e + System.out.println(primeraCuenta); // Cuenta@23fc625e System.out.println(segundaCuenta); // Cuenta@23fc625e if (primeraCuenta == segundaCuenta) { diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia2.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia2.java index fe64887..c802f18 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia2.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia2.java @@ -11,7 +11,6 @@ public class TestReferencia2 { // referencia System.out.println(cuentaDiego.getTitular()); // Cliente@2a84aee7 - System.out.println(diego); // Cliente@2a84aee7 + System.out.println(diego); // Cliente@2a84aee7 } - } diff --git a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia3.java b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia3.java index a8a32c2..bd38f4d 100644 --- a/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia3.java +++ b/008_java_oo/intellij_idea/proyecto_bytebank/src/TestReferencia3.java @@ -1,6 +1,6 @@ public class TestReferencia3 { - public static void main(String[] args) { - Cuenta cuentaDeDiego = new Cuenta(1); + public static void main(final String[] args) { + final Cuenta cuentaDeDiego = new Cuenta(1); //cuentaDeDiego.titular = new Cliente(); cuentaDeDiego.getTitular().setNombre("Diego"); System.out.println(cuentaDeDiego.getTitular().getNombre()); diff --git a/008_java_oo/orientacion_obj.md b/008_java_oo/orientacion_obj.md index 426c9b6..f2d5017 100644 --- a/008_java_oo/orientacion_obj.md +++ b/008_java_oo/orientacion_obj.md @@ -1,5 +1,7 @@ # 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 programación antes de la introducción de lenguajes orientados a objetos. 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 // Entidad Cuenta