PUE: Desarrollo de Aplicaciones Android – cuarta lección

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

Edición de colores del proyecto

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

Deja un comentario