Programación III 21/04/2017
Introducción a la Programación Orientada a Objetos Programación III Lic. Judith Callisaya Choque 21/04/2017
INTRODUCCIÓN A LA PROGRAMACION OO ¿Que es Orientado a Objetos? Desarrollo de Software en lenguajes de programacion como: C++,smalltalk,ADA 95,Eiffel. Actualmente usado en lenguajes visuales:Java, Php, FrameWorks, conjugado con el planteamiento estándar UML(Lengaje de Modelado Visual) 21/04/2017
Programación OO La Programación OO trabaja exclusivamente con objetos y que cada uno de estos serán instancias de determinadas clases y que estas se relacionan las unas con las otras mediante herencias. Instancia: Efectuar una copia de la clase 21/04/2017
Siglas usadas POO y OOP POO: Programacion Orientada a Objetos. OOP: Object Oriented Programming Todo programa para ser considerado OO debe incluir: Objetos Clases Herencia 21/04/2017
Evolución de la POO Cobro importancia en el año 1968 en la conferencia de la OTAN “Ingeniería del Software y Crisis del software ” expresándose que el software era caro, poco fiable y escaso. En los años 70 y 80 los sistemas a implementarse adquirían mayor complejidad y los costes de mantenimiento requerían una inversión de mas de la mitas de los costos y recursos globales del desarrollo total del software. Es así que la POO baja los costos de mantenimiento debido al software reutilizable. 21/04/2017
Modularidad “Propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y débilmente acoplados” [Booch’96] 21/04/2017 [Booch’96]
Alta cohesión: Un módulo con responsabilidades altamente relacionadas y que no hace una gran cantidad de trabajo Bajo acoplamiento: Un módulo que no depende de demasiados otros módulos. Favorece: Comprensión modular: es posible entender un módulo sin conocer los otros. Continuidad modular: un cambio en la especificación afecta sólo a un módulo o a unos pocos. Protección modular: el efecto de una situación anormal producida en un módulo afecta sólo a éste o a unos pocos. Los módulos se comunican mediante interfaces estrechas y bien definidas. 21/04/2017
Principios de diseño modular Ocultación de información “El diseñador de cada módulo debe seleccionar un subconjunto de propiedades de un módulo como información oficial para ponerla a disposición de los autores de módulos clientes” Una abstracción de datos puede verse como que tiene dos caras: Interfaz: operaciones que definen el comportamiento (cliente) Implementación (programador) Encapsulación es distinto a Ocultación de Información. La encapsulación es una facilidad del lenguaje que me permite definir de manera conjunta los datos y las operaciones aplicables. La ocultación de información es un principio de diseño es un principio de diseño que evita que los clientes tengan que conocer profundamente los diseños de los módulos. Aisla al cliente de los detalles de programación. apilar desapilar #define TAM 10 int datos[TAM]; 21/04/2017
¿Qué significa Orientación a Objetos? El software se organiza como una colección de objetos que contienen tanto estructura como comportamiento. ¿Qué es el desarrollo OO? Una nueva forma de pensar acerca del software basándose en abstracciones que existen en el mundo real. Foco Potencia encender() apagar() 21/04/2017
Conceptos fundamentales de POO Clases y Objetos Las clases son la construcción lógica sobre la que se basa el lenguaje Java, definen la forma y naturaleza de un objeto y constituyen los fundamentos de la programación OO. Ahora veremos: CLASES Vs. OBJETOS 21/04/2017
Hablemos de Objetos Que es un objeto ? Un objeto es una instancia de una clase (una categoría). Un objeto tiene una estructura. Tiene atributos (propiedades) y actividades (comportamiento). El comportamiento de un objeto consiste en las operaciones que desempeña. 21/04/2017
¿Cómo se encuentran los objetos? “Los objetos están ahí para usarlos” 21/04/2017
Definición de un objeto Los objetos son concretos y pueden representar objetos reales o abstractos. Por ejemplo: Cada ser humano pertenece a la clase persona Tiene atributos (características): Luis Pérez Varón 15 años 1,7 m Funciones (Comportamientos o acciones) que puede realizar: Luis:: nace Luis::crece Luis::alimenta Luis:: muere 21/04/2017
Definición del objeto coche Funciones que puede realizar: Ir Parar Girar a la derecha Girar a la izquierda Tiene las características: Color Velocidad Tamaño Carburante 21/04/2017
Clasificación de objetos Cosas tangibles: Avión, libro. Roles o papeles: Gerente, cliente, empleado. Organizaciones: Equipo, empresa, división Incidentes: (Sucesos, eventos) vuelo, accidente. Interacciones: (Transición, contratos) compras, ventas, contrato laboral. Especificaciones: Inventarios, proformas. Lugares: Sala de espera, parqueo, oficina. 21/04/2017
Los objetos con estados similares y el mismo comportamiento se agrupan en clases 21/04/2017
Clases (UML) Una clase esta conformada básicamente por atributos y operaciones, los atributos representan los datos de la clase y se implementan mediante variables, las operaciones se implementan a través de métodos, se deben manipular solamente a través de los métodos. Aeronave tipo marca modelo capacidad fuerza velMax …….. acelerar() desacelerar() ascender() descender() giroDer() giroIzq() ……… 21/04/2017
Ejemplo: Clase Aeronave Los objetos se los categoriza en clases. Aeronave tipo marca modelo capacidad fuerza velMax …….. acelerar() desacelerar() ascender() descender() giroDer() giroIzq() ……… En OO, una clase no solo tiene el objetivo de categorizar sino también el de servir como plantilla para crear objetos. 21/04/2017
Conceptos fundamentales de POO La Orientación a Objetos (OO) tiene como objetivo desarrollar programas (software) que reflejen un pedazo del mundo real. La OO va mas allá de solo considerar atributos y comportamiento. Considera otros aspectos de los objetos: Abstracción, herencia, polimorfismo, encapsulación... 21/04/2017
Abstracción En palabras sencillas “abstracción” significa filtrar las propiedades y operaciones de un objeto hasta que queden solamente aquellas que necesitamos. (Generalización) HH:mm:ss 21/04/2017
Abstracción (2) “Supresión intencionada, u ocultamiento, de algunos detalles de un proceso o artefacto, con el objeto de destacar de manera más clara otros aspectos, detalles o estructuras” 21/04/2017 [Booch’96]
La calculadora oculta las operaciones que realiza Encapsulación Es el “empaquetar” en una clase los datos (propiedades) y el código (métodos) que operan en esos datos. El acceso a esos datos solo es permitido a través de los métodos del objeto. La calculadora oculta las operaciones que realiza internamente de la persona que la utiliza. 21/04/2017
Encapsulación (2) Las clases pueden ser declaradas como publicas y como packaje. Los atributos y métodos pueden ser public, private, protected y packaje. De esta forma se puede controlar el acceso y evitar un uso inadecuado. 21/04/2017
Encapsulación (3) “Proceso de almacenar en un mismo compartimento los elementos de una abstracción que constituyen su estructura y su comportamiento” [Booch’96] [Booch’96] 21/04/2017
Herencia La herencia podemos definirla como la capacidad para crear nuevas clases a partir de clases existentes (extends). Las nuevas clases podrán contar con otros atributos y operaciones (métodos). Una clase derivada puede añadir nuevos atributos y métodos y/o redefinir los atributos y métodos heredados. Ventaja principal: Reutilización del código. Existen 2 tipos de herencia: Simple y Múltiple. 21/04/2017
Ejemplo de herencia: Padre e hijo. Superclase Subclase 21/04/2017
Herencia Simple Herencia Simple:En este tipo de jerarquía cada clases tiene como máximo una sola clase base. Polígono Triangulo Rectángulo Hexágono 21/04/2017
Herencia Multiple Herencia Múltiple: Se refiere a que una clase derivada puede heredar todas las características asociadas a más de una clase base o superclase. Persona Profesor Profesor Universitario Investigador 21/04/2017
Relaciones entre clases. Herencia TRANSPORTE 21/04/2017
Polimorfismo Es la habilidad de enviar el mismo mensaje a objetos de diferentes clases y que cada objeto responda de una manera particular, según su naturaleza. Se producirá una operación diferente, para cada uno de ellos, a pesar de que la acción tiene el mismo nombre.. abrir 21/04/2017
Envío de Mensajes Los objetos trabajan entre si por medio del envío de mensajes. Todos los objetos se comunican entre sí mediante el paso de mensajes, y esta referido a la ejecución de un método asociado con el objeto que lo llama. Luego para enviar mensajes se estipula el nombre del objeto y la acción que se requiere poner en ejecución. 21/04/2017
Asociaciones Una asociación es un mapeo entre un objeto en una clase con uno o más objetos en otra clase. conduce 21/04/2017
Relación de Persona y Coche propietario Persona 21/04/2017
Relaciones entre módulos: Editorial Publicacion Autor Revista Libro Actas Congreso “Libro es una especialización de Publicacion” “Publicacion usa servicios de Autor” 21/04/2017
Agregación Es el proceso de crear una clase que esta conformada en su totalidad o en parte por objetos de otra clase. PC CPU memoria monitor ratón teclado ….. 21/04/2017
Fin de la presentaciòn 21/04/2017