250 likes | 399 Views
Orientación a objetos. Conjunto de disciplinas (ingeniería) que desarrollan y modelan software que facilita la construcción de sistemas complejos a partir de componentes. Propiedades Abstracción Encapsulamiento Modularidad Jerarquía Polimorfismo. Objeto.
E N D
Orientación a objetos • Conjunto de disciplinas (ingeniería) que desarrollan y modelan software que facilita la construcción de sistemas complejos a partir de componentes. • Propiedades • Abstracción • Encapsulamiento • Modularidad • Jerarquía • Polimorfismo
Objeto • Entidad que contiene los atributos que describen el estado de un objeto del mundo real y las acciones que se asocian con él. • Pieza de software única. • Posee características o propiedades (atributos). • Posee habilidades o funcionalidades (comportamiento). • Pertenece a un tipo (clase). • Pueden o no corresponderse con objetos reales.
Objeto Fundamentos de la POO (Allan Kay) • Todo es un Objeto. • Un programa es un conjunto de objetos enviándose mensajes entre sí. • Cada Objeto tiene su memoria, conformada por otros Objetos. • Todo Objeto tiene su propio tipo (pertenece a una clase). • Todo Objeto de un mismo tipo puede recibir los mismos mensajes.
Objeto Composición Objeto = estado + comportamiento + identidad • Estado: propiedades o atributos que caracterizan al Objeto. • Comportamiento: Viene determinado por la forma en la que el objeto interactúa en el sistema (mensajes). • Identidad: propiedad característica que distingue un Objeto del resto de los Objetos.
Mensajes • Mensaje es la acción realizada por un objeto mediante la cual se invoca un método. Receptor.método(información necesaria) • El conjunto de mensajes que puede recibir un objeto se conoce como protocolo de un objeto
Clase • Es una plantilla que se utiliza para definir Objetos. • Puede verse como un tipo (que además, define métodos). • Los Objetos que se definen a través de esa clase son sus instancias. • Son las instancias las que reciben los mensajes definidos en su clase.
Clase • Descripción de un conjunto de objetos • Métodos y datos que resumen las características comunes de un conjunto de objetos. • Muestra el comportamiento general de un grupo de objetos. • Creación de objetos • Destrucción de objetos
Clase Ventajas de usar Clases: • Cada clase puede crearse de modo independiente. • Asegura consistencia de los datos que la componen. • La implementación queda escondida al usuario. • Puede variarse la implementación sin tener que cambiar los programas que las usan. • Es altamente reutilizable.
Identificación de clases • Partiendo del enunciado de un problema: • Nombres del enunciado -> objetos • Adjetivos y complementos del verbo -> atributos • Verbos -> métodos Tipos de método: • Constructor / Destructor • Modificadores del estado • Selectores Mezcladores • Cálculos o procesamientos
POO • Booch: “La POO es un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa un ejemplar de una clase y cuyas clases son miembros de una jerarquía de clases unidas mediante relaciones de herencia.” • En un Programa orientado a objetos • Creación de objetos mediante un mensaje de construcción a la clase. • Intercambio de mensajes entre objetos. • Eliminación de objetos cuando no se necesitan, mediante un mensaje de destrucción a la clase.
POO • La unidad lógica de programación es el objeto. • Los Objetos tienen relaciones. • Existen clases que agrupan conceptualmente los objetos. • Las clases pertenecen a una jerarquía (son las clases las que heredan y no los objetos).
POO “Un programa orientado a objetos se estructura como una comunidad de agentes interactuando, llamados objetos. Cada objeto tiene un papel que ejecutar. Cada objeto proporciona un servicio, o realiza una acción, usada por otros miembros de la comunidad.”
POO “La acción se inicia por la transmisión de un mensaje a un agente (objeto) responsable de la acción. El mensaje contiene el nombre y los argumentos necesarios. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción solicitada. En respuesta al mensaje, realizará algún método para satisfacer la petición.”
POO • “El cliente que envía la solicitud no tiene por qué conocer cómo se satisfará su petición” • Barrera difícil de superar • “La creencia del programador de que debe escribir TODO y no usar los servicios de otros” • Debe desarrollar componentes reutilizables
POO Mensajes frente a Procedimientos • M: Receptor designado • P: No hay receptor designado • M: Interpretación del mensaje depende del receptor y puede variar para diferentes receptores • M: Determino el método en Run Time • P: En tiempo de compilación
POO Clases e Instancias (Objetos) • “Todos los objetos son instancias de una clase. El método invocado en respuesta a un mensaje es determinado por la clase del receptor. TODOS los objetos de la misma clase usan el mismo método en respuesta a mensajes similares” • Las diferentes instancias de cada clase (Objetos) difieren en los valores de los atributos. • Dos objetos con los mismos valores de los atributos pueden ser diferentes
POO Ventajas de la POO • Reusabilidad. • Facilidades de prototipación. • Gran calidad de herramientas. • Mayor paralelismo en el desarrollo. • Representación del mundo real.
POO Características: • Ocultamiento de la información. • Encapsulamiento. • Herencia. • Polimorfismo.
Tipo abstracto de datos • Tipo de dato definido por el programador que se puede manipular de un modo similar a los tipos de datos definidos por el sistema Encapsulamiento + Ocultamiento. • Implementación escondida al cliente. • Se generan independientemente. • Se pueden probar independientemente. • Aumentan la reutilización de código.
Herencia • Herencia es la capacidad de un objeto para utilizar las estructuras y los métodos existentes en antepasados o ascendientes • Reutilización mediante herencia • Definición de nuevos tipos a partir de otros con los que comparten algún tipo de característica. • Tipos de herencia: • Herencia simple • Herencia múltiple • Anulación o sustitución
Herencia • Jerarquía de clases • Ej: Tom > gato > felino > mamífero > animal > ser vivo > objeto • El comportamiento de una categoría más general es aplicable a una categoría particular • Las clases se organizan en una estructura de herencia. Una clase hijo o subclase heredará atributos de una clase padre. Una clase padre abstracta es una clase para la que no hay instancias. Sólo se usa para crear subclases
Herencia • La búsqueda de un método a invocar en respuesta a un mensaje dado, se inicia con la clase del receptor. • Si no se encuentra un método apropiado, se busca en la clase padre. • La búsqueda continua hasta que la cadena de superclases se agota. • Si no se encuentra ningún método aplicable, se envía un mensaje de error. • Los métodos de nivel inferior sobrescriben (override) el comportamiento heredado.
Polimorfismo • El término polimorfismo se refiere a que una característica de una clase puede tomar varias formas. • Permite invocar métodos distintos con el mismo mensaje, resolviéndose qué método se utilizará en tiempo de ejecución • Tipos • Por sobrecarga de funciones. • Por vinculación dinámica.