“clean code”,limpio, buena arquitectura, buenos patrones de soft, con comentarios,correctamente particionado
Arquitecturas/patrones:
mvc modelo vista controlador
mvp modelo vista presenter
codigo spaguetti, todo mezclado, evitarlo!
3d->objeto borrador, objeto pizarra, objeto profesor, etc…
Un objeto tiene la parte del estado (cambia al paso del tiempo): sus atributos varian su valor a lo largo del tiempo. El estado es algo muy importante.
Hay q controlar y gestionar el cambio de los estados de una manera efectiva.
Estos atributos hay que ponerlos privados: proteccion frente al exterior. Es el primer principio de encapsulación, de orientacion a objetos.
como se protege el objeto?
get y set
los getters y los setters
get=dejaras leer el tributo
set=permitir escribir sobre un atributo
get=leer,set=establecer
Comportamiento: qué se le puee pedir al objeto?
objeto con alta cohesión
objeto profesor->explicar
objeto profesor->imprimir… mejor no!
mejor objeto impresora->imprimir
y objeto profesor puede usar objeto impresora para imprimir
alta cohesion: cad clase tiene una mision muy concreta
clase docente
nombre, apellido
enseñar
instanciar un objeto:
new docente ricardo = new Docente(“Ricardo”,”Jaume”);
Constructor
public Docente
App: JuegosOlimpicos
Deportes: TiroMartillo, TiroArco, Jabalina
-> 3 competiciones
Atletas (
Aproximación “Top Bottom”





package com.sergioguillen.android;
public class Main {
public static void main(String[] args) {
JuegosOlimpicos juegos = new JuegosOlimpicos();
juegos.iniciar();
//Resultado
/*
Ganadores de cada una de las pruebas
*/
}
}
Vamos a empezar a crear clases, de modo Top->Down







Sobrecarga de métodos: podemos tener 2 o mas métodos que se llamen exactamente igual. Lo unico que les diferencia es el tipo de variables que se le pase.
JAva ya distinge segun lo que le pasamos, si llamamos a un método o a otro.
constructor sin parametros: constructor por defecto








Una vez definimos a Atleta:

Generamos los Gets:

Best practice: no repetir código, llamar siempre desde un constructor mas pequeño usando this al constructor más grande
Los objetos se han de declarar y luego se han de instanciar para poder ser reconocidos cuando se escribe código.
for (Competicion competicion : this.competiciones ){
competicion.iniciar();
}
ArrayList=array dinamico que crece dinámicamente
La herencia en objetos:
class Persona{
nombre
apellido
edad
dni
}
class Atleta
{
deporte
sponsor
herencia de persona
}
palabra reservada: Super
1 clase solo puede etener 1 padre
Reutilizar código! No repetir código!
palabra reservada extends
public class TiroConArco extends Competicion{
private float distanciaBlanco;
int intentos;
//Aqui
public abstract class Competicion
abstract: una clase abstracta no se puede instanciar, tiene por lo menos 1 método abstracto
polimorfismo:
system.out.printl(String.format(Ganador arco: %s”, ganadorArco));
Muestra datos con formato
encapsulacion herencia poliformismo y uso de interfaces
Los interfaces s una clase abstracta donde todos sus metodos son abstractas

las interfaces implican obliguetoriedad en las clases que implementan
diseño orientado a objetos!