Relación entre objetos.
La asociación
La asociación se podría definir como el momento en que dos
objetos se unen para trabajar juntos y asi, alcanzar una meta.
Especifica una relación semántica entre objetos no
relacionados. Este tipo de relaciones permite crear asociaciones que capturen
los participantes en una relación semántica. Es una relación entre clases. Implica
una dependencia semántica. Son relaciones del tipo “pertenece a” o “esta
asociado con”. Se da cuando una clase usa a otra para realizar algo.
La herencia es la transmisión de la vista publica (métodos públicos)
y la vista privada (atributos y métodos privados), de una clase a otra.
Agregación / composición (todo-parte// tiene-un //
parte-de).
Esta relación se presenta entre clase TODO y una clase PARTE
que es componente de TODO. La implementación de este tipo de relación se
consigue definiendo como atributo un objeto de la otra clase que es parte-de.
Los objetos de la clase TODO son objetos contenedores. Un objeto
contenedor es aquel que contiene otros objetos.
En la agregación, las clases contienen objetos, y no otras
clases.
Tipos de agregación
- por contenido físico o valor
El contenedor contiene el objeto en si. Cuando creamos un
objeto contenedor, se crean también automáticamente los contenidos.
- agregacion conceptual o por referencia
Se tienen punteros a objetos. No hay acoplamiento fuerte. Los
objetos se crean y se destruyen dinámicamente.
La relación de agregación/composición establece jerarquías de
clases por grado de composición.
Generalización / especialización: Herencia.
De todas las relaciones posibles entre las distintas clases
y objetos, hay que destacar por su importancia en O.O la relación de herencia.
La relación de herencia es una relación entre clases que
comparten su estructura y el comportamiento.
Se denomina herencia
simple: cuando una clase comparte la
estructura y comportamiento de una sola clase.
Se denomina herencia múltiple: cuando una clase comparte la
estructura y comportamiento de varias clases.
Para que un lenguaje de programación pueda ser considerado
orientado a objetos, debe implementar el mecanismo de herencia. La relación de
herencia entre dos clases es una relación binaria entre dos clases que nos
dice: la clase subclase o derivada hereda de la clase base o superclase.
- La superclase, es la primera en la jerarquía.
- La clase base o clase padre.
- Subclase, clase derivada o clase hija. La clase que hereda de la superclase.
La herencia es la transmisión de la vista publica (métodos públicos)
y la vista privada (atributos y métodos privados), de una clase u otra.
La herencia es un mecanismo fundamental en la construcción de
clases, necesario para reutilizar código. Mediante la herencia podemos crear
clases nuevas a partir de otras que ya existen, sin necesidad de reescribir
todo el código: mecanismo de reutilización de código. Mediante la herencia
podemos organizar las distintas clses en estructuras jerárquicas.
Cada clase en la jerarquía establece un dominio de elementos
incluido en el dominio de la superclase de la cual hereda. Esta jerarquía de clasificación
es subjetiva, dependiendo de las intenciones con las que se pretenda trabajar.
Es muy difícil establecer una relación perfecta y surgen elementos
que no se acomodan en ninguna categoría.
Una relación de herencia entre dos clases tiene que cumplir
al menos dos reglas:
Especialización.
En la subclase se debe producir una especialización de la
superclse; es decir, la subclase debe incluir todas las características de la
superclase y otras.
Responder afirmativamente a la pregunta ¿todo
objeto del dominio de la subcalse es un objeto del dominio de la superclase?
La relación de herencia es transmitiva:
Si C hereda A y F hereda-de C entonces F hereda-de A.
La herencia puede ser representada mediante un grafo
dirigido en el que los nodos son las clases y los arcos las relaciones de
hrencia que parten de la subclase a la superclase.
Multiplicidad
Indica el numero de instancias de una clase que se asocian
con las instancias de la otra clase.
Tipos de multiplicidad:
1.- uno_a_uno
2.-uno_a_muchos
3.-muchos_a_muchos
La implementación en código suele conseguirse mediante un
puntero desde la clase asociada. Un puntero (referencia), por cada instancia de
esa relación.
No hay comentarios:
Publicar un comentario