PUE: Desarrollo de Aplicaciones Android – tercera lección

“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 ( diferentes tipos)

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

Crecion de un “enumerrado”
Cuando escribimos los paréntesis, nos sale la ayuda visual

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 dentro generamos el constructor!

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!

Deja un comentario