POO - Relaciones Entre Clases
-
Upload
hugo-meza-muzaurieta -
Category
Documents
-
view
1.293 -
download
2
description
Transcript of POO - Relaciones Entre Clases
Programación Orientada a Objetos
Programación Orientada a Objetos
Mag. Estanislao Contreras Chávez
Unidad 2: Elementos básicos de POO
Programación Orientada a Objetos
Temario
• Elementos básicos de POO
• Relaciones entre clases
• Estándares de programación
Programación Orientada a Objetos
Unidad 2: Elementos básicos de POO
Elementos básicos de POO
Programación Orientada a Objetos
Elementos básicos de POO
Objeto
• Cuando nos “abstraemos”, pensamos en una
entidad del problema que estamos analizando,
dejando de pensar en lo superficial, identificamos
sus principales características y su
comportamiento. Estamos definiendo un objeto.
Programación Orientada a Objetos
Elementos básicos de POO
Propiedades de los objetos
• Identidad: Es aquello que lo distingue de los demás, qué lo hace único. Se corresponde con la dirección de memoria que ocupa
Programación Orientada a Objetos
Elementos básicos de POO
Propiedades de los objetos
• Estado: Valores que tienen sus características en un instante dado. Un cambio de estado se da cuando cambia algunas de sus características.
Programación Orientada a Objetos
Elementos básicos de POO
Propiedades de los objetos
• Estado:
Por ejemplo:
Si el valor del atributo Saldo Disponible es 0
entonces el estado del objeto Teléfono Celular es
de no disponible para hacer llamadas.
Programación Orientada a Objetos
Elementos básicos de POO
Propiedades de los objetos
• Comportamiento: Es lo que el objeto puede o sabe hacer. Cómo reacciona antes los mensajes recibidos (cambiando de estado, enviando mensajes).
• Responsabilidad: Cuando un comportamiento está mas dirigido hacia el servicio que presta el objeto.
Programación Orientada a Objetos
Elementos básicos de POO
Propiedades de los objetos
Programación Orientada a Objetos
Elementos básicos de POO
Objetos y Algoritmia• La resolución de problemas se hace desde el
punto de vista de los objetos.
• Aplicación: Se compone de objetos que secomunican para lograr un objetivo común.
Programación Orientada a Objetos
Elementos básicos de POO
Objetos y Algoritmia• Los objetos son entidades activas, que emiten
mensajes y responden a estímulos. Es decir, unobjeto Emisor envía un mensaje a otro receptorpara requerir o para notificar algo.
Programación Orientada a Objetos
Elementos básicos de POO
Objetos y Algoritmia• Ejemplo de comunicación entre objetos
Programación Orientada a Objetos
Elementos básicos de POO
Método
• Un método es un conjunto de instrucciones a las que se les asocia un nombre de modo que si se desea ejecutarlos basta con hacer referencia a ellos mediante el nombre.
• Los métodos contienen la lógica asociada a las responsabilidades de la clase.
• Adicionalmente, existen métodos especiales que se tienen que considerar en una clase: constructores, de acceso y destructores
Programación Orientada a Objetos
Elementos básicos de POO
Métodos Constructores
• Se utilizan para inicializar un objeto nuevo. Una clase puede tener varios constructores estos se diferencian unos de otros en el número y tipo de sus argumentos
• Efectúan tareas de inicialización.
• Antes de usar un objeto se debe llamar a su constructor.
• Por lo tanto, cada clase debe tener por lo menos un constructor.
Programación Orientada a ObjetosUPC - EPE - POO 15
Elementos básicos de POO
Métodos de Acceso
• Operaciones que actúan sobre los atributos e
informan el valor actual (lectura) o permiten
cambiarlo (escritura)
Programación Orientada a ObjetosUPC - EPE - POO 16
Elementos básicos de POO
Métodos Destructores
• Cumplen tareas de liberación de memoria y
vínculos con otros objetos.
• Al final de la vida de un objeto es conveniente
llamar al destructor de la clase.
• Recomendación: Llamar al destructor al final del
bloque de código en el que fue declarado.
Programación Orientada a ObjetosUPC - EPE - POO 17
Elementos básicos de POO
Clase
• Cuando llevamos nuestra definición de objetos a
una “abstracción” superior, donde ubicamos una
plantilla que nos permitirá generar objetos de un
mismo tipo, con características y comportamientos
similares, hemos definido una Clase
Programación Orientada a ObjetosUPC - EPE - POO 18
Elementos básicos de POO
Clase
Programación Orientada a Objetos
Elementos básicos de POO
Instanciación
• Cuando utilizamos una clase para crear un objeto
de ese tipo decimos que estamos instanciando la
clase.
• Un objeto es una instancia de la clase y se puede
instanciar tantos objetos como sean necesarios.
Programación Orientada a Objetos
Elementos básicos de POO
Instanciación
• Creación de objetos invocando a los métodos
constructores de la clase.
class Alumno
Objeto Juan
Objeto Carlos
Objeto Maria
Objeto AnaInstanciación
Estructura de datos
Alumno juan := new Alumno();
Lógica asociada al comportamiento
Programación Orientada a Objetos
Unidad 2: Elementos básicos de POO
Relaciones entre clases
Programación Orientada a Objetos
Relaciones entre clases
Relación
• Una relación es una conexión semántica entre
elementos de un modelo.
• Dependiendo de que modelo se está tratando, la
relación será entre objetos de una o mas clases o
entre elementos de distinto nivel de abstracción.
Programación Orientada a Objetos
Relaciones entre clases
• Las relaciones entre clases que utilizaremos son:
– Asociación
– Agregación
– Composición
– Generalización.
• Las relaciones existentes entre las clases nos
indican como se comunican sus objetos entre sí
Programación Orientada a Objetos
Relaciones entre clases
Asociación
• Es una conexión entre clases. Significa que los
objetos de dos clases tendrán un vínculo
bidireccional en común, el cual puede
interpretarse como “para cada X existe un Y”.
• Se representa por medio de una línea continua
entre dos clases.
Programación Orientada a Objetos
Relaciones entre clases
Asociación
• Aquí, cada programador utiliza una computadora,
y cada computadora es utilizada por un solo
programador (es decir, un objeto Programador
está asociado sólo a un objeto Computadora ).
Programación Orientada a Objetos
Relaciones entre clases
Asociación
• Aquí, cada cliente vive en una dirección y
dirección es utilizada por un solo cliente (es decir,
un objeto Cliente está asociado sólo a un objeto
Dirección ).
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
• Se utiliza multiplicidad cuando no necesariamente
los vínculos entre objetos son de uno a uno. Se
especifica en cada extremo del vínculo, a través
de un rango, cuántos objetos pueden estar
vinculados.
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
Este diagrama indica que cada programador
tendrá varias computadoras (posiblemente
ninguna), y que cada computadora será usada por
al menos un programador.
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
• Cada asociación tiene dos multiplicidades. Una para cada extremo de la relación.
• Para especificar la multiplicidad de una asociación hay que indicar la multiplicidad mínima y la multiplicidad máxima (mínima…máxima)
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
• Cuando no se especifica ningún rango, se asume el valor uno (1) por defecto. Puede agregarse una flecha a la línea, indicando la dirección del vínculo:
• De esta manera, la clase A puede utilizar las operaciones de la clase B, pero no al revés.
Programación Orientada a Objetos
Relaciones entre clases
Rangos de multiplicidad
Programación Orientada a Objetos
Relaciones entre clases
Rangos de multiplicidad
• Cuando la multiplicidad mínima es 0, la relación es
opcional.
• Una multiplicidad mínima mayor o igual 1
establece una relación obligatoria
Programación Orientada a Objetos
Relaciones entre clases
Rangos de multiplicidad
Ejemplo 1
• Todo departamento tiene un director
• Un profesor puede dirigir un departamento
Programación Orientada a Objetos
Relaciones entre clases
Rangos de multiplicidad
Ejemplo 2
• Todo profesor pertenece a un departamento.
• A un departamento pueden pertenecer varios
profesores.
Programación Orientada a Objetos
Relaciones entre clases
Rangos de multiplicidad
Ejemplo 3
Programación Orientada a Objetos
Relaciones entre clases
Agregación / Composición
• Son formas especiales de relación donde una
clase se define con la conjunción de objetos de
otras clases de tal modo que éstos últimos forman
parte de la clase como un atributo adicional.
• Se les conoce como relación TODO-PARTE
Programación Orientada a Objetos
Relaciones entre clases
Agregación / Composición
• Si la relación es fuerte, tal que objetos de la clase
PARTE son dependiente de la existencia de la
clase TODO entonces la relación es
composición. La clase TODO, tiene la
responsabilidad de la creación y destrucción de
objetos de sus componentes
Programación Orientada a Objetos
Relaciones entre clases
Agregación / Composición
• Al contrario, si la existencia de objetos de la clase
PARTE es independiente de la existencia de
objetos de la clase TODO, entonces la relación es
agregación.
Programación Orientada a Objetos
Relaciones entre clases
Agregación / Composición
• Su representación gráfica es la siguiente:
Programación Orientada a Objetos
Relaciones entre clases
Agregación
Este diagrama indica que todo auto posee un motor, de una marca particular, y con su correspondiente número de identificación.
Clase Agregada
Programación Orientada a Objetos
Relaciones entre clases
Composición
Clase Compuesta
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
• En la composición o agregación, la multiplicidad de la clase agregada/compuesta debe ser cero, pero en las clases que conforman las partes puede ser un rango cualquiera.
Programación Orientada a Objetos
Relaciones entre clases
Multiplicidad
Aquí, el diagrama indica que una ventana de Windows puede contener uno o más botones.
Clase Compuesta
Programación Orientada a Objetos
Relaciones entre clases
Generalización
• Si se tiene una relación en la que un objeto posee
atributos y operaciones similares a otro, entonces
son objetos de la misma clase, pero si uno de los
objetos “posee” atributos y/o operaciones “extras”
o de diferente comportamiento, se tiene una
relación de generalización.
Programación Orientada a Objetos
Relaciones entre clases
Generalización
• La generalización es la relación entre una clase
más general y un clase más específica.
• Se denota con un triángulo en el extremo del vínculo correspondiente al elemento más general. La relación puede interpretarse informalmente como “es un”.
Programación Orientada a Objetos
Relaciones entre clases
Generalización
Cliente
Código
Dirección
Persona
Nombres
Apellidos
Empresa
Razón Social
RUC
Programación Orientada a Objetos
Relaciones entre clases
Generalización
• La clase con mayor refinamiento es llamada “clase de especialización o subclase” la otra, la de menor refinamiento es llamada “clase de generalización o superclase”
Programación Orientada a Objetos
Relaciones entre clases
Generalización
Cliente
Código
Dirección
Persona
Nombres
Apellidos
Empresa
Razón Social
RUC
SuperclaseSubclases
Programación Orientada a Objetos
Relaciones entre clases
Herencia
• Concepto derivado de la generalización, indica
que la subclase “hereda” los atributos,
operaciones y relaciones de la superclase.
Programación Orientada a Objetos
Relaciones entre clases
Generalización
• Cuando una clase posee más de una subclase,
pueden organizarse en forma de árbol de la
siguiente manera:
Programación Orientada a Objetos
Relaciones entre clases
Jerarquia de clases
• El comportamiento de una categoría más general
es aplicable a una categoría particular.
• Las subclases heredan características de las
clases de las que se derivan y añaden
características específicas que las diferencian
• Las clases se organizan en una estructura
jerárquica formando una taxonomía.
Programación Orientada a Objetos
Relaciones entre clases
Jerarquía de clases
Programación Orientada a Objetos
Unidad 2: Elementos básicos de POO
Estándares de programación
Programación Orientada a Objetos
Estándares de Programación
• http://javafoundations.blogspot.com/2010/07/java-
estandares-de-programacion.html