CLASE A = Definición/modelo de la reallidad
Nos tenemos que ceñir al dominio de nuestro problema
Tiene ciertas propiedades, que definirán el estado del objeto
Instanciar diferentes objetos a partir de esa clase
Vias para establecer el estado en un objeto:
– 1 constructor: metodos especiales que no tienen retorno (no void!), que normalmente son publicos y que tienen el mismo nombre de la clase. Paso valores cuando inicializamos
– Los setters. Paso valores cuando nos interesa
Private: protege
Los atributos son siempre privados por concepto de encapsulacion. Si tenemos 3 atributos y solo 1ueremos modificar 1, crearemos SteP1 (no en los otros 2).
Los metodos siempre acotados al dominio
Principio de cohesion
alta cohesion en una clase = cuando definas una clase lo q has de hacer es que esa clase tenga una responsabilidad. Hagamos una clase que haga lo que tenga que hacer (sumison). RESPONSABILIDAD. Una clase con cohesion alta, significa que una clase de “todo”, pero entonces se pierde la modularidad.
los metodos publicos, o sea el API, es los metodos publicos que ofrece. Son los metodos publicos que tiene.
principio de acoplamiento
tenemos 2 conjuntos, y la union es negativa. Han de ser como 2 conjuntos separados

Principio Solid: alta cohesion, bajo acoplamiento
Intentar desincrustar las clases!
Mecanismos de desacoplamiento

Métodos: acotados o rcicunscritos al dominio.
Comportamiento relacionado con el principio de cohesion con respecto al sistema.
Principio de herencia
Lo ponemos en notacion UML:
La clase B hereda de la clase A. Significa q extiende. Se puede decir q clase B es clase A. Ejemplo, Persona Atleta:


Overriding
Overloading, misma funcion, donde cambia el numero o tipo de parámetros
Overriding parcial
(Overriding de clases)
“La herencia no deja de ser una especialización”: otorgar una utilidad más específica
entre dos clases diferentes, se puede hacer overriding y overloading
clase “abstract”, caracteristicas: no se puede instanciar,

Cuando se marca como abstracto, no tiene implementacion, no tiene código.
algo abstracto=>no tienes la suficiente informcion para poderlo implementar
Objetivo: hacer código escalable
Interface Inombreinterface
La interfaz no es de la familia (“el tío postizo”).

Entre interfaces puede haber herencia
Los interfaces pueden heredarse
Implements: implementacion de interfaz (palabra reservada en JAva)
ClaseA Implements Ia, Ib, Ic
Conseguimos mucha modularidad: jugar mas a piezas pequeñas que juntas hacen funcionar
Kotlin mejora la productiviad.
AVD Android Virtual Device
Tools->AVD Manager

Doble click en pestaña de activity_main para ver la vista:

Patrones
el más clasico: MVC = Modelo Vista Controlador
MVC = Model View Controler
Model View Presenter
Libro “Clean Code” – Martin



LinearLayout:




ALT+1



ALT+ENTER resolvemos bombillita:

Es conveniente que el identificador lo pongamos en inglés.
Porque el idioma por defecto es el ingles.
Si tenemos otro strings.xml pero para italiano, haremos otro nuevo idioma.
Crfear idioma:











La R gestiona los recursos y los IDs de la aplicación!

findViewById(R.id.tvIndicator)

widget “textView”
Los botones son widgets que tienen eventos, como el de “click”.
Cada vezz que le damos al botón, se hace una llamada al evento “click”:
Tenemos que hacer un “Listener” que viva en el mundo click: que entienda los clicks… y decirle “oye boton, soy tu listener”.
Cada vez que se haga click, ya no se perderá en el infinito, si no se llamará al listener.
En este fcaso, cambiaremos el valor del textView:

Botón “Component Tree”



bombillita: crear:


escuela.it -> Cursos muy interesantes
curso de programacion orientada a objetos luis dominguez?


Casting:
Button button = (Button)view;
public void changeColor(View view) {
Button button = (Button)view;
int identificadorBoton = button.getID();
switch(identificadorBoton)
{
case R.id.btnRed:
//do…
tvIndicador.setTextColor(getResources().getColor(R.color.red));
break;
case R.id.btnYellow:
//do…
tvIndicador.setTextColor(getResources().getColor(R.color.yellow));
break;
case R.id.btnGreen:
//do…
tvIndicador.setTextColor(getResources().getColor(R.color.green));
break;
default:
do//… cuando se recibe algo no esperado
break;
case R.id.btnRed:
//do…
break;
case R.id.btnRed:
//do…
break;
}
{
}
}
EditText
et.getText().toString()
Log.i(“APP”,nombre)
Alt+Intro


String nombreAdmin = etAdmin.getText().toString();
Log.i(tag: “APP_SYSTEM”, msg: “El usuario ” + nombreAdmin + ” ha activado el sistema”);
Tengo muchíSSimo que estudiar!
Reto para la clase de mañana: sistema de entradas para la aplicación de juegos olímpicos
