poo - relaciones entre clases

54
Programación Orientada a Objetos Programación Orientada a Objetos Mag. Estanislao Contreras Chávez [email protected] [email protected] Unidad 2: Elementos básicos de POO

Upload: hugo-meza-muzaurieta

Post on 02-Dec-2015

1.290 views

Category:

Documents


2 download

DESCRIPTION

Programación Orientada a Objetos - Relaciones Entre Clases

TRANSCRIPT

Page 1: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Programación Orientada a Objetos

Mag. Estanislao Contreras Chávez

[email protected]

[email protected]

Unidad 2: Elementos básicos de POO

Page 2: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Temario

• Elementos básicos de POO

• Relaciones entre clases

• Estándares de programación

Page 3: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Unidad 2: Elementos básicos de POO

Elementos básicos de POO

Page 4: POO - Relaciones Entre Clases

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.

Page 5: POO - Relaciones Entre Clases

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

Page 6: POO - Relaciones Entre Clases

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.

Page 7: POO - Relaciones Entre Clases

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.

Page 8: POO - Relaciones Entre Clases

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.

Page 9: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Elementos básicos de POO

Propiedades de los objetos

Page 10: POO - Relaciones Entre Clases

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.

Page 11: POO - Relaciones Entre Clases

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.

Page 12: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Elementos básicos de POO

Objetos y Algoritmia• Ejemplo de comunicación entre objetos

Page 13: POO - Relaciones Entre Clases

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

Page 14: POO - Relaciones Entre Clases

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.

Page 15: POO - Relaciones Entre Clases

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)

Page 16: POO - Relaciones Entre Clases

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.

Page 17: POO - Relaciones Entre Clases

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

Page 18: POO - Relaciones Entre Clases

Programación Orientada a ObjetosUPC - EPE - POO 18

Elementos básicos de POO

Clase

Page 19: POO - Relaciones Entre Clases

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.

Page 20: POO - Relaciones Entre Clases

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

Page 21: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Unidad 2: Elementos básicos de POO

Relaciones entre clases

Page 22: 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.

Page 23: POO - Relaciones Entre Clases

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í

Page 24: POO - Relaciones Entre Clases

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.

Page 25: POO - Relaciones Entre 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 ).

Page 26: POO - Relaciones Entre Clases

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 ).

Page 27: POO - Relaciones Entre Clases

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.

Page 28: POO - Relaciones Entre Clases

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.

Page 29: POO - Relaciones Entre Clases

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)

Page 30: POO - Relaciones Entre Clases

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.

Page 31: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Rangos de multiplicidad

Page 32: POO - Relaciones Entre Clases

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

Page 33: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Rangos de multiplicidad

Ejemplo 1

• Todo departamento tiene un director

• Un profesor puede dirigir un departamento

Page 34: POO - Relaciones Entre Clases

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.

Page 35: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Rangos de multiplicidad

Ejemplo 3

Page 36: POO - Relaciones Entre Clases

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

Page 37: POO - Relaciones Entre Clases

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

Page 38: POO - Relaciones Entre Clases

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.

Page 39: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Agregación / Composición

• Su representación gráfica es la siguiente:

Page 40: POO - Relaciones Entre Clases

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

Page 41: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Composición

Clase Compuesta

Page 42: POO - Relaciones Entre Clases

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.

Page 43: POO - Relaciones Entre Clases

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

Page 44: POO - Relaciones Entre Clases

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.

Page 45: POO - Relaciones Entre Clases

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”.

Page 46: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Generalización

Cliente

Código

Dirección

Persona

Nombres

Apellidos

Empresa

Razón Social

RUC

Page 47: POO - Relaciones Entre Clases

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”

Page 48: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Generalización

Cliente

Código

Dirección

Persona

Nombres

Apellidos

Empresa

Razón Social

RUC

SuperclaseSubclases

Page 49: POO - Relaciones Entre Clases

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.

Page 50: POO - Relaciones Entre Clases

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:

Page 51: POO - Relaciones Entre Clases

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.

Page 52: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Relaciones entre clases

Jerarquía de clases

Page 53: POO - Relaciones Entre Clases

Programación Orientada a Objetos

Unidad 2: Elementos básicos de POO

Estándares de programación