Resum MOO/POO (2015)

Apunte Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas de Telecomunicación - 1º curso
Asignatura Metodologia y Programacion Orientada a Objetos - MOO
Año del apunte 2015
Páginas 23
Fecha de subida 20/06/2017
Descargas 0
Subido por

Vista previa del texto

MOO Nuria Ramos Tema 1: CLASES y OBJETOS Clase: es la descripción de las propiedades (atributos) y las funcionalidades (métodos) de un objeto, es decir, las ideas, conceptos, que describen las características de los objetos que forman el mundo.
Objeto: es la instanciación de una clave.
Es aquello que nosotros podemos tocar usar.
Pertenecen a una o varias clases, en cuanto que cumplen la definición de éstas.
Atributos  guardan los datos que caracterizan el estado de la clase a lo largo de la ejecución del progrma variables referència a objectes, té memòria, l’estat canvia.
Métodos  funciones asociadas a esa clase, acciones, comportament. Pueden usar y modificar el estado de los atributos, devolver nuevos valores calculados, etc...
Tema 2: PUNTEROS y REFERÉNCIAS Por valor Tipos de datos básicos: int, char… se tratan internamente como en C.
Por referencia Objetos y vectores: se tratan New = nuevo objeto String a,b; a = new String(“Hola”); b = new String(“Adiós”); a = b; 1 Color Capacidad Llenar Vaciar Beber MÉTODOS – Taza Azul de cerámica, con 33cl de capacidad – Taza Rosa de metal, con 25cl de capacidad – Taza Verde de barro, con 20cl de capacidad Sobre cada uno de ellos se pueden realizar las mismas acciones, pero dichas acciones tendrán efecto solo en el objeto sobre la que se realiza.
 Llenar la taza Azul: incrementará la cantidad de líquido de la taza azul  Vaciar la taza Verde: decrementará la cantidad de líquido de la taza verde.
 Beber la taza Rosa: decrementará la cantidad de líquido de la taza rosa.
Además, la persona que beba notará los efectos de ingerir el líquido contenido ATRIBUTOS • Clase Taza:  Tiene los siguientes atributos: Material, Color y Capacidad  Cada objeto de esta clase permite ejecutar los siguientes métodos (acciones) sobre él: Llenar, Vaciar y Beber Taza (Clase) • Objetos Taza: Cumplen lo definido en la clase taza y CapacidadMaterial, Material Material, Mismos Color atributos, valores diferentesColor y Capacidad MOO    Nuria Ramos Definición de una clase: public class Alumno { […] } Definición de los atributos: Se definen mediante el tipo (primitivo u otra clase) seguido del nombre del atributo y, opcionalmente, un valor por defecto.
Definición de los métodos: Se definen mediante el tipo de retorno (primitivo u otra clase) seguido del nombre del método y opcionalmente, una lista de parámetros.
public class Alumno{ String nombre; int edad; String email; boolean esMayorQue(Alumno otro){ if(edad>=otro.edad){ return true;} else{ return false;} }} Pato daisy; daisy.color = "blanco"; //ERROR!!“c”apunta a null y saltaría a un error de NullPointerException Patolucas=newPato(); (New = nuevo objeto) //instanciación* lucas.peso=400; lucas.macho=true; lucas.color="negro"; lucas.saludar(); Stringdonald=newPato(); //ERROR!!'donald'es una referencia a String y no pue de apuntar a un objeto del tipo 'Pato'  CONSTRUCTORES:   Son un código que se ejecuta cada vez que se crea un nuevo objeto, sobre los atributos de este mismo objeto. Procedimiento especial que es llamado automáticamente siempre que se crea un objeto de la clase. Inicia el objeto.
Se definen mediante el nombre de la clase, seguida de paréntesis y, opcionalmente, una lista de parámetros.
public class Alumno { String nombre, email; int edad; public Alumno() { nombre = “no especificado”; edad = -1; email = “no especificado”; }} CONSTRUCTOR Los Constructores SIN parámetros suele usarse para dar unos valores por defecto a sus atributos 2 MOO Nuria Ramos Alumno(){ nombre=null; edad=0; email=null;} reservar memoria extra, etc… Se define mediante el nombre de la clase y una lista de parámetros (o dos paréntesis vacíos, si no lleva parámetros).
Si creáramos un objeto Alumno con el constructor anterior, Alumno al = new Alumno(); el alumno al tendría edad -1, y sus atributos nombre y email valdrían “no especificado”.
Constructores Iniciar “a mano” cada uno de los atributos de un objeto puede ser tedioso.
Alumno a = new Alumno(); a.nombre =“Jose García”; a.edad = 19; a.email= “jose@hotmail.com”; SOLUCIÓN: Los Constructores con parámetros nos permiten ahorrar espacio y evitan que tengamos que repetir ciertas operaciones asociadas al proceso de creación del objeto.
Alumno a = new Alumno(“Jose García”, 19, “jose@hotmail.com”);  REFERENCIA THIS:    Todos los objetos tienen una referencia llamada “this”, que apunta al propio objeto.
Esta referencia solo se puede usar en el código que hay dentro del mismo objeto (visibilidad privada).
NO LO USAREMOS EN: el main y atributos/métodos estáticos.
3 MOO Nuria Ramos Tema 3: CARACTERÍSTICAS DE JAVA  Modificadores de acceso: Sirven para especificar qué partes de una clase son “visibles” para otras clases. Se especifican escribiendo public, private, protected o nada delante de cualquier método o atributo de una clase, o de la definición de la propia clase.
 Encapsulación: Aquellas clases con visibilidad privada de los atributos y métodos públicos.
Se trata de "esconder" los atributos de una clase a todas las demás clases haciéndolos sólo accesibles a través de métodos. (Todos los atributos excepto las constantes deben ser encapsulados) Getter de booleanos: empiezan por “is”: public boolean isGusanos().
4 MOO Nuria Ramos Tema 4: static & final STATIC: El valor es el mismo en todos los objetos de una misma clase. Si se modifica valor en un objeto, en los demás también.
   Declaran: poniendo el modificador static entre el modificador de visibilidad (public, protected, private) y el tipo de atributo.
Ej: private static int numero;.
Accedemos: NombreClase.nombreAtributoEstático.
Métodos estáticos: no acceden a los atributos de la clase en la que están. (Declaración y acceso igual que en atributo static).
– Se definen con el modificador static.
Ej: public static int metodoEstatico(); – Se invocan mediante el nombre de la clase: int r = NombreClase.metodoEstatico(); FINAL: El valor de un atributo o variable marcados con el modificador final antes de su tipo solo puede ser asignado una vez (su valor no podrá cambiar nunca más).
Un método final impide que una clase derivada modifique su comportamiento.
Ej: final Complex c = new Complex(1.2,2.5)  la referencia c no podrá apuntar a ningún otro objeto, pero sí podemos modificar los atributos del objeto.
5 MOO Nuria Ramos Tema 5: CONTENEDORES TIPO •No ordenados •No puede haber objetos repetidos •Iteradores HashSet, TreeSet, SortedSet, LinkedHashSet MÉTODOS CARACTERÍTIC AS CONJUNTOS – add(objeto)  añade un nuevo objeto al conjunto.
– contains(objeto)  devuelve “true” si el objeto que se le pasa como parámetro ya está contenido – size() Retorna el numero de objetos – remove(objeto)  elimina el objeto especificado – clear() elimina todos los elementos del conjunto – iterator()  devuelve un iterador al objetoIterator<Object>isEmpty():boolean toArray():Object[] LISTAS •Ordenados por un índice •Acceso por índice •Podemos añadir, obtener y eliminar elementos de cualquier posición •Podemos añadir, obtener y eliminar elementos de cualquier posición ArrayList, LinkedList add(objeto)  añade un objeto al final de la lista add(posición,objeto)  añade un objeto en la posición indicada get(posición)  obtiene el objeto que está en la posición indicada contains(objeto)  retorna true si el objeto indicado está contenido en la lista remove(objeto)  quita el objeto especificado por parámetro remove(posición)  quita el objeto especificado en la posición 6 DICCIONARIOS •Acceso mediante una clave única •Mapa<TipoClave,TipoObjecto> nom HashMap, TreeMap, HashTable put(clave,objeto)  guarda un objeto, que será accesible mediante la clave especificada get(clave)  accede al objeto que está guardado según la clave especificada remove(clave)  borra el objeto que está guardado según la clave especificada keySet() devuelve un conjunto (Set) con las claves del diccionario size() retorna el número de pares clave/valor que guarda el diccionario MOO Nuria Ramos ITERATOR 7 MOO Nuria Ramos Tema 5: UML • Objetos que colaboran entre si • Clase A tiene objetos de tipo Clase B, pero B no tiene relación con A.
•Objetos de un extremo forma parte de los objetos del otro •La ClaseAtiene como atributos objeto de tipo ClaseB, en consecuencia sus objetos también •Si se elimina el contenedor, el contenido sigue existiendo •Si el agregador(ClaseA) se elimina, también se elimina el agregado (claseB) •Una clase hace uso de la otra, de sus métodos •Un objeto de clase B no es atributo de una de claseA •Clase hija hereda de la clase Padre •Todos los atributos (que estén en protected # ) •Todos los métodos, todos menos los constructores •La clase hija es más específica, la clase Padre es más genérica (es una generalización de las subclases) •Extensibilidad: las subclases puede redefinir los métodos heredados y añadir nuevos atributos y métodos •El constructor de la subclase ha de invocar al de la superclase con “super” •Acceso atributos de la SuperClase con super.atributoDeSuperClase Tipos de…  HERENCIA Cuando concrete debe poder consultarse A por su nombre. Será un contenedor MAP.
Map <String, A> 8 MOO Nuria Ramos ASOCIACIÓN CARDINALIDAD AGREGACION COMPOSICIÓN DEPENDENCIA (QUE LA USA) 9 MOO Nuria Ramos Tema 6: HERNECIA y POLIMORFISMO La clase B incorpora automáticamente todos los atributos de A y todos los métodos (EXCEPTO LOS CONTRUCTORES) de A.
EMPRESAS - Cif: String - Dni: String - Telef: String Proveedor Cliente - aFact: double - aPagar: double Es mejor poner protected porque si es private no podemos acceder desde la subclase 10 MOO Nuria Ramos Para acceder a los atributos de la superclase utilizamos el super en vez del this.
SIEMPRE, el 1r método de la SUBCLASE será el CONSTRUCTOR SIEMPRE, la 1ª ORDEN del constructor será llamar al SUPER de la SUPERCLASE.
Otro ejemplo: Se conoce como sobrecarga (Overriding) los métodos de una subclase se pueden redefinir para ampliar/adaptar el comportamiento de la superclase (dentro de una misma clase, si dos métodos se llaman igual (se diferencian por los parámetros)).
Con ‘this’ podemos acceder tanto a los atributos y métodos de la propia clase como a los de la superclase.
Cuando la subclase redefine algún método de la superclase, podemos llamar al método de la superclase mediante la referencia “super” (Referencia a los métodos/atributos a una clase base.).
NombreSuperclase variable = new nombreSubclase 11 MOO Nuria Ramos Para averiguar si A y B tienen una relación de herencia hay que hacerse dos preguntas - ¿Es A tipo especial de B? - ¿Es B tipo especial de A? Este método printa lo del 1r proveedor y luego en el caso 2, el de los cliente, cosas (métodos) totalmente diferente pero que tienen el mismo nombre.
Invoca un método polimórfico.
Cuando se invocan métodos definidos en la superclase se pueden redefinir en las subclases Polimorfismo Es la habilidad de cambiar el comportamiento de una variable dependiendo del tipo de objeto al que hace referencia.
Permite que múltiplos objetos de diferentes subclases puedan ser tratados como objetos de su superclase, mientras que automática y transparentemente se ejecutarán los métodos que se sobrecarguen en la subclase.
12 MOO Nuria Ramos Tema 7: CLASES ABSTRACTAS  Definen algunos métodos y atributos.
 Contienen métodos «abstractos» – Métodos que solo definen una cabecera, pero no contienen código en su interior método vacío .
 Las subclases de una clase abstracta deben implementar de manera obligatoria los métodos abstractos de su superclase.
 Proporciona atributos y métodos básicos que serán compartidos por todas las subclases  Una clase abstracta no se puede instanciar – Pero sí se pueden usar referencias a una clase abstracta.
No se puede crear un objeto de esa clase.
(No hay ningún new) 13 MOO Nuria Ramos EJEMPLO MAIN 14 MOO Nuria Ramos Tema 8: INTERFACE  Definen un conjunto de métodos sin código que describen una funcionalidad concreta.
 No contienen atributos, ni código.
– Aunque sí pueden definir constantes  Se diferencia de las «clases» en: – No establecen una jerarquía «padre-hijo», sino que agrupan clases por ciertas funcionalidades – Una clase puede implementar varias interfaces, mientras que sólo puede tener una superclase.
 NO se puede INSTANCIAR pero si referenciar (igual que las clases abstractas).
15 MOO A C D <<interface> > <<interface> > Nuria Ramos B a Atrib Public void mA{ Public void mC{ Public void mD{ } } } Solo cabeceras b Atrib A Atrib B A b = new B (…); Public void mA{ } A bb = new A (…); Public void mB{ B bb = new B (…); } C b2 = new B (…); Public void mC{ D b3 = new B (…); } Public void mC{ } 16 MOO Nuria Ramos Public class E{ Public class F{ Public void met (A a){ Public void met (B b){ } } } } Public class G{ Public class H{ Public void met (C c){ Public void met (D d){ } } } } Public class Main{ […] B b = new B (…); F f = new F (…); G g = new G (…); H h = new H (…); E e = new E (…); e.metE(b); El método espera un objeto instancia de A. B los es.
f.metF(b); // B es instancia de B g.metG(b); Tiene implementaciones de C en B (Hay algo de C en B) Lo mismo h.metG(b); 17 } MOO Nuria Ramos a Public class E{ Atrib Public void met (A a){ Public void mA{ a.mA(); a.mB(); } La clase A no tiene el método a.mC(); a.mD(); } Public class F{ Public void met (B b){ a.mA(); a.mB(); B tiene todos estos métodos }a.mC(); } a.mD(); } } } 18 MOO Nuria Ramos Tema 9: EXCEPTIONS  Manejar situaciones anómalas  Verificación de errores  contiene datos que describen el error(tipo, mensaje, punto del programa)  Objeto de clases derivadas de Throwable  Cuando se produce un error, una anomalía, se crea un objeto (Excepción) y se lanza throw  El catch lo caza y se encarga de tratarlo 19 MOO Nuria Ramos Tema 10: DIAGRAMA de SECUENCIA Diagrama de interacción que muestra los objetos como líneas de vida.
public class Clase1 { private Clase2 att; public int m1() { int val = att.m2(); return val * 2; } } CONTENEDOR THIS IF/ELSE FOR/WHILE CREACIÓN y DESTRUCCIÓN 20 MOO Nuria Ramos Tema 11: CASO DE USO Comportamiento del sistema.
 Prólogo  Número y nombre del caso de uso  Objetivo en el contexto – Una explicación del objetivo que se persigue en el caso de uso.
 Actores – Elementos externos al sistema (ya sean personas o no) que intervienen en el caso de uso.
 Precondiciones – Son condiciones que siempre son ciertas antes de comenzar el escenario de éxito del caso de uso – – No se comprueban, se asume que son ciertas Pueden hacer referencia a otros casos de uso ya completados  Postcondiciones (cuando se haya ejecutado el caso de uso, ¿en qué estado estará el sistema?) – Refleja el estado en que se queda el sistema una vez ejecutado el caso de uso  Descripción de los Escenarios  Escenario principal.
El conjunto de pasos que llevan de Estado inicial al Escenario final deseado.
21 MOO Nuria Ramos  Escenarios alternatives.
Cuando dice “el sistema comprueba QUE algo existe… Proceso para generar los casos de uso: 1. Elegir los límites del sistema.
2. Identificar los actores primarios.
3. Identificar los objetivos 4. Generar un caso de uso para cada objetivo.
Caso de uso Abstracto •Los detalles dependen del tipo de objeto No usamos el condicional SI usamos QUE 22 MOO Nuria Ramos IU CONTROLADOR 23 e:ESTADO ...

Tags:
Comprar Previsualizar