Java Orientado a Objetos: Fin - orientacion a objs
This commit is contained in:
parent
f9e231a45d
commit
0f56c54d51
@ -1,7 +1,7 @@
|
||||
public class EjercicioMatriz {
|
||||
public static void main(String[] args) {
|
||||
for (int col = 0; col <= 10; col++){
|
||||
for (int fila = 0; fila < col; fila++){
|
||||
for (int fila = 0; fila <= 10; fila++){
|
||||
for (int columna = 0; columna < fila; columna++){
|
||||
System.out.print("* ");
|
||||
}
|
||||
System.out.println();
|
||||
|
@ -2,8 +2,10 @@ public class TestDescuento {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
double valorCompra = 250.0;
|
||||
int dscto;
|
||||
double valorDescuento, valorCompra, totalCompra;
|
||||
valorCompra = 250.0;
|
||||
|
||||
if (valorCompra >= 100.0 && valorCompra <= 199.99){
|
||||
dscto = 10;
|
||||
} else if (valorCompra >= 200.0 && valorCompra <= 299.99) {
|
||||
@ -13,10 +15,11 @@ public class TestDescuento {
|
||||
} else {
|
||||
dscto = 0;
|
||||
}
|
||||
double valorDescuento = valorCompra * (dscto / 100.00 );
|
||||
double totalCompra = valorCompra - valorDescuento;
|
||||
|
||||
valorDescuento = valorCompra * (dscto / 100.00 );
|
||||
totalCompra = valorCompra - valorDescuento;
|
||||
System.out.println("Total compra : $"+valorCompra+"\n"+
|
||||
"Descuento : "+dscto+"%\n"+
|
||||
" Total Final : $"+totalCompra);
|
||||
"Descuento : "+dscto+"%\n"+
|
||||
" Total Final : $"+totalCompra);
|
||||
}
|
||||
}
|
||||
|
29
008_java_oo/intellij_idea/proyecto_bytebank/src/Cliente.java
Normal file
29
008_java_oo/intellij_idea/proyecto_bytebank/src/Cliente.java
Normal file
@ -0,0 +1,29 @@
|
||||
public class Cliente {
|
||||
private String nombre;
|
||||
private String documento;
|
||||
private String telefono;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
public class CrearCuenta {
|
||||
public static void main(String[] args) {
|
||||
Cuenta primeraCuenta = new Cuenta(1);
|
||||
primeraCuenta.depositar(1000);
|
||||
//primeraCuenta.pais = "Zambia"; No compila, no existe el atributo
|
||||
System.out.println(primeraCuenta.getSaldo());
|
||||
|
||||
Cuenta segundaCuenta = new Cuenta(1);
|
||||
//segundaCuenta.saldo = 500;
|
||||
System.out.println(segundaCuenta.getSaldo());
|
||||
//System.out.println(segundaCuenta.titular); null
|
||||
//System.out.println(segundaCuenta.agencia); 0
|
||||
}
|
||||
}
|
67
008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java
Normal file
67
008_java_oo/intellij_idea/proyecto_bytebank/src/Cuenta.java
Normal file
@ -0,0 +1,67 @@
|
||||
// Entidad Cuenta
|
||||
public class Cuenta {
|
||||
private double saldo;
|
||||
private int agencia;
|
||||
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");
|
||||
this.agencia = 1;
|
||||
} else {
|
||||
this.agencia = agencia;
|
||||
}
|
||||
contador++;
|
||||
System.out.println("Cuentas creadas: "+contador);
|
||||
}
|
||||
public void depositar(double valorDeposito){
|
||||
this.saldo += 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 (montoTransferencia <= this.saldo) {
|
||||
this.saldo -= 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,10 @@
|
||||
public class PruebaAcceso {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuenta = new Cuenta(1);
|
||||
cuenta.retirar(300);
|
||||
System.out.println(cuenta.getSaldo());
|
||||
cuenta.depositar(300);
|
||||
System.out.println(cuenta.getSaldo());
|
||||
System.out.println(cuenta.getAgencia());
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
public class PruebaConstructor {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuenta = new Cuenta(555);
|
||||
//cuenta.setAgencia(-15);
|
||||
System.out.println(cuenta.getAgencia());
|
||||
Cuenta cuenta2 = new Cuenta(333);
|
||||
Cuenta cuenta3 = new Cuenta(444);
|
||||
System.out.println(Cuenta.getContador());
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
public class PruebaEncapsulamiento {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuenta = new Cuenta(1);
|
||||
Cliente cliente = new Cliente();
|
||||
cliente.setNombre("Zerafín");
|
||||
cliente.setDocumento("abcDEFghiJKL");
|
||||
cuenta.setTitular(cliente);
|
||||
|
||||
System.out.println(cliente.getNombre());
|
||||
System.out.println(cuenta.getTitular().getNombre());
|
||||
|
||||
Cliente titular = cuenta.getTitular();
|
||||
System.out.println(titular.getNombre());
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
public class PruebaMetodos {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuenta1 = new Cuenta(1);
|
||||
cuenta1.depositar(300);
|
||||
System.out.println(cuenta1.retirar(200));
|
||||
System.out.println(cuenta1.getSaldo());
|
||||
|
||||
Cuenta cuenta2 = new Cuenta(1);
|
||||
cuenta2.depositar(2000);
|
||||
|
||||
boolean puedeTransferir = cuenta2.transferir(400, cuenta1);
|
||||
if (puedeTransferir) {
|
||||
System.out.println("Transferencia exitosa");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
public class TestReferencia {
|
||||
public static void main(String[] args) {
|
||||
Cuenta primeraCuenta = new Cuenta(1);
|
||||
primeraCuenta.depositar(200);
|
||||
|
||||
//Cuenta segundaCuenta = new Cuenta();
|
||||
// System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||
// System.out.println(segundaCuenta); // Cuenta@3f99bd52
|
||||
|
||||
Cuenta segundaCuenta = primeraCuenta;
|
||||
segundaCuenta.depositar(100);
|
||||
System.out.println("Saldo primera cuenta: " + primeraCuenta.getSaldo());
|
||||
System.out.println("Saldo segunda cuenta: " + segundaCuenta.getSaldo());
|
||||
|
||||
segundaCuenta.depositar(400);
|
||||
System.out.println("Saldo primera cuenta: " + primeraCuenta.getSaldo());
|
||||
|
||||
// Obtener referencia del objeto
|
||||
System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||
System.out.println(segundaCuenta); // Cuenta@23fc625e
|
||||
|
||||
if (primeraCuenta == segundaCuenta) {
|
||||
System.out.println("Son el mismo objeto");
|
||||
} else {
|
||||
System.out.println("Son diferentes");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
public class TestReferencia2 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Cliente diego = new Cliente();
|
||||
diego.setNombre("Diego");
|
||||
diego.setDocumento("123.123.123-1");
|
||||
|
||||
Cuenta cuentaDiego = new Cuenta(1);
|
||||
cuentaDiego.setTitular(diego);
|
||||
System.out.println(cuentaDiego.getTitular().getDocumento());
|
||||
|
||||
// referencia
|
||||
System.out.println(cuentaDiego.getTitular()); // Cliente@2a84aee7
|
||||
System.out.println(diego); // Cliente@2a84aee7
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
public class TestReferencia3 {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuentaDeDiego = new Cuenta(1);
|
||||
//cuentaDeDiego.titular = new Cliente();
|
||||
cuentaDeDiego.getTitular().setNombre("Diego");
|
||||
System.out.println(cuentaDeDiego.getTitular().getNombre());
|
||||
}
|
||||
}
|
@ -0,0 +1,189 @@
|
||||
# Java Entendiendo la [Orientación a Objetos](https://app.aluracursos.com/course/java-parte2-introduccion-orientada-objetos)
|
||||
|
||||
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
|
||||
ejemplo para discutir los principales problemas que pueden aparecer en este paradigma.
|
||||
|
||||
En particular, a medida que otros formularios y desarrolladores necesitan la misma
|
||||
validación de numeroIdentidad, no fue fácil ver que ya había procedimientos y
|
||||
funciones que hicieron este trabajo, ya que los datos y las funciones no tenían
|
||||
un vínculo tan fuerte. Esto podría dar lugar a otra nueva función o fragmento de
|
||||
código con una responsabilidad similar.
|
||||
|
||||
Además, conocemos la **idea central** del paradigma **orientado a objetos**, que
|
||||
es **crear unidades de código que combinen los datos asociados con cierta
|
||||
información con las funcionalidades aplicadas a esos datos** (por ejemplo,
|
||||
numeroIdentidad + validación). Son los atributos y métodos.
|
||||
|
||||
## Introduccion a Orientación a Objetos
|
||||
|
||||
[proyecto_bytebank](./intellij_idea/proyecto_bytebank/src/)
|
||||
|
||||
- Se practican los conceptos de **Objeto**, **Atributos**, **Instancias**. Y se
|
||||
ejemplifica un atributo de clase con valor predeterminado.
|
||||
[Cuenta.java](./intellij_idea/proyecto_bytebank/src/Cuenta.java) y
|
||||
[CrearCuenta.java](./intellij_idea/proyecto_bytebank/src/CrearCuenta.java)
|
||||
|
||||
```java
|
||||
// Entidad Cuenta
|
||||
public class Cuenta {
|
||||
double saldo;
|
||||
//int agencia = 33;
|
||||
int agencia;
|
||||
int numero;
|
||||
String titular;
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
public class CrearCuenta {
|
||||
public static void main(String[] args) {
|
||||
Cuenta primeraCuenta = new Cuenta();
|
||||
primeraCuenta.saldo = 1000;
|
||||
//primeraCuenta.pais = "Zambia"; No compila, no existe el atributo
|
||||
System.out.println(primeraCuenta.saldo);
|
||||
|
||||
Cuenta segundaCuenta = new Cuenta();
|
||||
segundaCuenta.saldo = 500;
|
||||
System.out.println(segundaCuenta.saldo);
|
||||
//System.out.println(segundaCuenta.titular); null
|
||||
//System.out.println(segundaCuenta.agencia); 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Se ejemplifica como un Objeto es una una referencia en memoria
|
||||
[testReferencia](./intellij_idea/proyecto_bytebank/src/TestReferencia.java)
|
||||
|
||||
```java
|
||||
public class TestReferencia {
|
||||
public static void main(String[] args) {
|
||||
Cuenta primeraCuenta = new Cuenta();
|
||||
primeraCuenta.saldo = 200;
|
||||
|
||||
//Cuenta segundaCuenta = new Cuenta();
|
||||
// System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||
// System.out.println(segundaCuenta); // Cuenta@3f99bd52
|
||||
|
||||
Cuenta segundaCuenta = primeraCuenta;
|
||||
segundaCuenta.saldo = 100;
|
||||
System.out.println("Saldo primera cuenta: " + primeraCuenta.saldo);
|
||||
System.out.println("Saldo segunda cuenta: " + segundaCuenta.saldo);
|
||||
|
||||
segundaCuenta.saldo += 400;
|
||||
System.out.println("Saldo primera cuenta: " + primeraCuenta.saldo);
|
||||
|
||||
// Obtener referencia del objeto
|
||||
System.out.println(primeraCuenta); // Cuenta@23fc625e
|
||||
System.out.println(segundaCuenta); // Cuenta@23fc625e
|
||||
|
||||
if (primeraCuenta == segundaCuenta) {
|
||||
System.out.println("Son el mismo objeto");
|
||||
} else {
|
||||
System.out.println("Son diferentes");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Definicion de metodos con retorno y uso de *this* para atributos de clase
|
||||
|
||||
```java
|
||||
// Entidad Cuenta
|
||||
public class Cuenta {
|
||||
|
||||
...
|
||||
|
||||
public void depositar(double valorDeposito){
|
||||
this.saldo += 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 (montoTransferencia <= this.saldo) {
|
||||
this.saldo -= montoTransferencia;
|
||||
cuenta.depositar(montoTransferencia);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
public class PruebaMetodos {
|
||||
public static void main(String[] args) {
|
||||
Cuenta cuenta1 = new Cuenta();
|
||||
cuenta1.depositar(300);
|
||||
System.out.println(cuenta1.retirar(200));
|
||||
System.out.println(cuenta1.saldo);
|
||||
|
||||
Cuenta cuenta2 = new Cuenta();
|
||||
cuenta2.depositar(2000);
|
||||
|
||||
boolean puedeTransferir = cuenta2.transferir(400, cuenta1);
|
||||
if (puedeTransferir) {
|
||||
System.out.println("Transferencia exitosa");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Ejemplo de `NullPointerException` al intentar acceder a un atributo de clase
|
||||
de una instancia, cuyo valor es una Clase no instanciada.
|
||||
[TestReferencia3.java](./intellij_idea/proyecto_bytebank/src/TestReferencia3.java)
|
||||
|
||||
- Encapsulamiento, modificadores de acceso
|
||||
[Cuenta.java](./intellij_idea/proyecto_bytebank/src/Cuenta.java) y
|
||||
[PruebaEncapsulamiento.java](./intellij_idea/proyecto_bytebank/src/PruebaEncapsulamiento.java).
|
||||
Atributos privados, restringiendo el acceso a los atributos.
|
||||
|
||||
Encapsulación de código:
|
||||
- **getters** Métodos de lectura de atributos
|
||||
- **setters** Métodos para modificar atributos
|
||||
|
||||
<br/>
|
||||
|
||||
- Variables de clase **static**. No pertenecen a la instancia.
|
||||
```java
|
||||
public class Cuenta {
|
||||
...
|
||||
private static int contador = 0;
|
||||
|
||||
|
||||
public static int getContador(){
|
||||
return Cuenta.contador;
|
||||
}
|
||||
```
|
||||
|
||||
- **Constructor** [Cuenta.java](./intellij_idea/proyecto_bytebank/src/Cuenta.java)
|
||||
Permite recibir argumentos e inicializar atributos desde la creación de un objeto.
|
||||
Con esto, la inicialización de los atributos recibidos en el constructor se vuelve
|
||||
obligatoria. Atributos de clase, atributos estáticos. Métodos de clase, métodos
|
||||
estáticos. Ausencia de referencia del **this** dentro de los métodos estáticos.
|
||||
|
||||
```java
|
||||
public Cuenta(int agencia) {
|
||||
if (agencia <= 0) {
|
||||
System.out.println("No se permiten valores negativos");
|
||||
this.agencia = 1;
|
||||
} else {
|
||||
this.agencia = agencia;
|
||||
}
|
||||
contador++;
|
||||
System.out.println("Cuentas creadas: "+contador);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Lectura: Alura blog [¿Que es POO?](https://www.aluracursos.com/blog/poo-que-es-la-programacion-orientada-a-objetos)
|
@ -191,9 +191,9 @@ flowchart LR
|
||||
subgraph <b>JDK</b>
|
||||
subgraph <b>JRE</b>
|
||||
c(JVM)
|
||||
style c fill:#f9f,stroke:#333,stroke-width:2px
|
||||
style c fill:#f9f,stroke:#000,stroke-width:2px
|
||||
d(Librerías)
|
||||
style d fill:#f9f,stroke:#333,stroke-width:2px
|
||||
style d fill:#f9f,stroke:#000,stroke-width:2px
|
||||
end
|
||||
a(Tools)
|
||||
end
|
||||
@ -441,6 +441,8 @@ Funcionamiento del cast implícito y explícito en la sgte. tabla.
|
||||
|
||||
### Char y String
|
||||
|
||||
String [format()](https://www.javatpoint.com/java-string-format)
|
||||
|
||||
[EjemploCaracteres.java](./intellij_idea/java_primeros_pasos/src/EjemploCaracteres.java)
|
||||
|
||||
```java
|
||||
@ -696,8 +698,8 @@ public class TablaMultiplicacion {
|
||||
```java
|
||||
public class EjercicioMatriz {
|
||||
public static void main(String[] args) {
|
||||
for (int col = 0; col <= 10; col++){
|
||||
for (int fila = 0; fila < col; fila++){
|
||||
for (int fila = 0; fila <= 10; fila++){
|
||||
for (int columna = 0; columna < fila; columna++){
|
||||
System.out.print("* ");
|
||||
}
|
||||
System.out.println();
|
||||
|
Loading…
Reference in New Issue
Block a user