Programación Orientada a Objetos Unidad 2: Elementos básicos de POO Mag. Estanislao Contreras Chávez
[email protected] [email protected]
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 se comunican 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, un objeto Emisor envía un mensaje a otro receptor para 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 Objetos
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)
UPC - EPE - POO
Programación Orientada a Objetos
15
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.
UPC - EPE - POO
Programación Orientada a Objetos
16
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
UPC - EPE - POO
Programación Orientada a Objetos
17
Elementos básicos de POO Clase
UPC - EPE - POO
Programación Orientada a Objetos
18
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. Lógica asociada al comportamiento
Estructura de datos Objeto Juan Objeto Carlos
class Alumno
Instanciación Alumno juan := new Alumno();
Programación Orientada a Objetos
Objeto Maria
Objeto Ana
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 Clase Agregada
Este diagrama indica que todo auto posee un motor, de una marca particular, y con su correspondiente número de identificación. 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 Clase Compuesta
Aquí, el diagrama indica que una ventana de Windows puede contener uno o más botones.
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 Persona Cliente Código Dirección
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 Subclases Superclase
Cliente Código Dirección
Persona Nombres Apellidos
Empresa Razón Social RUC
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/javaestandares-de-programacion.html
Programación Orientada a Objetos