Relaciones entre clases (4)

description »
Christian Mora

RELACIONES ENTRE CLASES
HERENCIA
Es la capacidad de recibir todos los métodos y variables de una o más clases para realizar ciertas tareas.

Por lo general, las subclases agregan métodos y modifican algunos métodos para realizar tareas diferentes. 

Se llama 'Superclase' a la clase de la que desciende una clase

Un conjunto de objetos aislados tiene escasa capacidad para resolver un problema. En una aplicación real los objetos colaboran e intercambian información, existiendo distintos tipos de relaciones entre ellos

A nivel de diseño, podemos distinguir entre 5 tipos de relaciones básicas entre clases de objetos:
Dependencia,
Asociación, 
Agregación,
Composición 
Herencia*
Dependencia,
Asociación, 
Agregación,
Composición 
Herencia*
Es la relación menos importante, refleja que la implementación de una clase depende de otra.

Es la relación más importante y común. Refleja una relación entre dos clases independientes que se mantiene durante la vida de los objetos de dichas clases o al menos durante un tiempo prolongado
Es un tipo especial de asociación donde se añade el matiz semántico de que la clase de donde parte la relación representa el “todo” y las clases relacionadas “las partes”
Es un tipo de agregación que añade el matiz de que la clase “todo” controla la existencia de las clases “parte”. Es decir, normalmente la clase “todo” creará al principio las clases “parte” y al final se encargará de su destrucción
RAZONES QUE JUSTIFICAN
SU NECESIDAD
 Modelado de la realidad. 
 Evitar redundancias.
 Facilitar la reutilización. 
 Soporte al polimorfismo
CLASES ABSTRACTAS
La utilidad de este tipo de clases está en la aplicación de herencia para obtener clases que representan conceptos concretos para los que sí que tiene sentido su instanciación

En Java, utilizando la declaración abstract podremos establecer una clase o una operación como abstracta

Estas clases se denominan clases abstractas y este tipo de operaciones “sin implementación posible”, operaciones abstractas
La idea de clase abstracta, llevada al extremo, nos

lleva en Java a las INTERFACES
Las interfaces sirven para especificar las operaciones que obligatoriamente deben implementar una serie de clases
POLIMORFISMO
El polimorfismo (o upcasting) consiste en la posibilidad de que una referencia a objetos de una clase pueda conectarse también con objetos de descendientes de ésta

El sentido del polimorfismo es realizar una generalización, olvidar los detalles concretos de uno o varios objetos de distintas clases y buscar un punto común a todos ellos en un ancestro

La mayoría de las veces, las conexiones polimorfas se realizan de manera implícita en el paso de argumentos a una operación. De esta manera es posible escribir operaciones polimorfas que reciban objetos de múltiples clases
PALABRAS RESERVADAS 
En Java esta llamada al constructor de la superclase se realiza con la operacion super() seguida de los parámetros de inicialización de alguno de los constructores del padre de la clase.

Únicamente debe llamarse explícitamente a un constructor del ascendiente inmediato.

El constructor de este último realizará a su vez una llamada a un constructor de su ascendiente inmediato y así sucesivamente hasta inicializar todos los atributos heredados
super()
final
Para terminar, es posible impedir la herencia a partir de una clase declarándola como final

Sin embargo, esta es una característica que debe ser utilizada con prudencia, ya que puede restringir en exceso la extensión y reutilización de las clases del sistema en el futuro
CLASE 
OBJECT
La clase Object está situada en la parte más alta del árbol de la herencia en el entorno de desarrollo de Java. 

Todas las clases del sistema Java son descendentes (directos o indirectos) de la clase Object. 

Esta clase define los estados y comportamientos básicos que todos los objetos deben tener, como la posibilidad de compararse unos con otros, de convertirse a cadenas, de esperar una condición variable, de notificar a otros objetos que la condición varible a cambiado y devolver la clase del objeto.
equals() se utiliza para comparar si dos objetos son iguales. Este método devuelve true si los objetos son iguales, o false si no lo son. 
getClass() es un método final  (no puede sobreescribirse) que devuelve una representación en  tiempo de ejecución de la clase del objeto.
Este método devuelve un objeto Class al  que se le puede pedir varia información sobre la clase, como su nombre, el nombre de su superclase y los nombres de los interfaces que implementa. 
Este método devuelve una cadena de texto que representa al objeto. Se puede utilizar toString para mostrar un objeto.
El método toString() es muy útil para depuración y también puede sobreescribir este método en todas las clases.
equals()
getClass()
toString()
SOBREESCRIBIR
 METODOS
Una interfaz es similar a una clase totalmente abstracta
Una subclase puede sobreescribir completamente la implementación de un método heredado o puede mejorar el método añadiendole funcionalidad.
Algunas veces, una subclase querría reemplazar completamente la implementación de un método de su superclase. De hecho, muchas superclases proporcionan implementaciones de métodos vacías con la esperanza de que la mayoría, si no todas, sus subclases reemplacen completamente la implementación de ese método.
Modificadores
Sobrecarga de métodos
Sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente
dos o más funciones con el mismo nombre realizan acciones diferentes.
El compilador usará una u otra dependiendo de los parámetros usados
Casting de Objetos
Casting es el proceso de tomar una variable declarada como de un tipo y decirle al compilador que queremos tratarla como otro tipo. 
El Casting no modifica el ítem original. 
Solo le dice al compilador que lo trate de manera diferente. 
public void myMethod(Object param) {
   Number num = (Number)param;
   double d = num.doubleValue();
   System.out.println("Value is: " + d);
}
Christian Mora
christmo99@gmail.com

Loading comments...

Please log in to add your comment.

Report abuse

More presentations by Christian Mora

More prezis by author