4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Lenguaje de programación Java
UML 1.4 Peter Emerson Pinchao Solis.
Arquitectura CLARO-TECNOTREE
Polimorfismo Unidad 4.
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Fundamentos de Ingeniería de Software
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Diseño y programación de
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
HERENCIA.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
Introducción a la programación Orientada a objetos
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Ingeniería de Software
Diagramas de Clase Angela Carrillo R..

Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Programación orientada a objetos
1.- Repaso Ingeniería del Software I
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Programación Orientada Objetos
CS-432: Ingeniería Moderna de Software Semana 3
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Programación orientada a objetos. La programación orientada a objetos es un conjunto de normas, que se basan en la idea de construir un software de forma.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Facultad de Ingeniería
Programación Orientada a Objeto
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Programación orientada a objetos
Introducción a la Programación Orientada a Objetos (POO)
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
Programación orientada a objetos
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Objetivos del tema. Hemos visto lo que es la estructura de un programa, los datos, que esos datos en realidad se convierten en variables de distinto.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS TECNOLOGÍAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO. GONZALO ROSAS CABRERA.
ORIENTACIÓN A OBJETOS El paradigma.
Programación Orientada a Objetos: CLASES Y OBJETOS
Programación Orientada Objetos
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
2015-BM5A. Introducción Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos.
Modelado UML Diagrama de Clases
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Estructura de Datos Departamento de Programación Universidad Metropolitana Contenido: UML. Envío de mensajes. Relaciones. Asociación. Agregación o composición.
Transcripción de la presentación:

4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Índice La abstracción de los hechos La interfaz: esa gran desconocida Encapsulamiento Herencia Reutilización Tipos de relaciones Polimorfismo

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) La abstracción de los hechos El programador ha de establecer una relación entre la máquina en la cual se está resolviendo el problema y el modelo de conocimiento del cual procede; es decir, entre el espacio de soluciones y el espacio de problemas. La orientación a objetos provee al desarrollador la capacidad de representar elementos en el espacio de problemas. Estos elementos se denominan “objetos”. Smalltalk, C++, Java,... son tipos más o menos puristas de OOL (Object-oriented languages).

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Características de OOLs 1. Todo es un objeto 2. La comunicación entre objetos se realiza mediante paso de mensajes. 3. Todo objeto está construido por otros objetos internamente. 4. Todo objeto tiene un tipo O, utilizando otra manera de hablar, toda instancia proviene de una clase. 5. Todo objeto del mismo tipo puede recibir los mismos mensajes. Si un objeto del tipo “pastor aleman” es también del tipo “perro”, ambos podrán aceptar mensajes del tipo “ladra”.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Interfaz: esa gran desconocida Desde la filosofía antigua se viene hablando de “tipos” o “clases” –tipo de pájaro, clase de pez-. Todos los objetos, aunque son únicos, comparten características comunes. Realmente, podríamos hablar de un árbol – aunque como veremos, también se podría tratar de un grafo-.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Interfaz: esa gran desconocida (II) En la programación OO, es vital la obtención de “clases”: tipos abstractos de datos. A partir de esas clases se pueden obtener “variables” (denominadas “instancias” en la jerga OO). Y comunicarlas mediante el paso de mensajes. Cada instancia es idéntica a su hermana, pero cada una mantiene su propio estado. TV::Grundig TV::Thomson TV

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Interfaz: esa gran desconocida (III) Pero, ¿cómo conseguimos que los objetos trabajen? Cada objeto ha de satisfacer un conjunto de peticiones que se le puedan realizar. P.e. Un objeto “bombilla” (“light” en el dibujo): El conjunto de peticiones que se pueden realizar sobre el objeto se encuentra definido por su INTERFAZ. El tipo (o clase) es lo que determina la interfaz.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Interfaz: esa gran desconocida (y IV) Así que la interfaz ofrece al exterior el comportamiento del objeto. Por otra parte, el código que satisface esa petición, así como datos u operaciones internas, conforman la IMPLEMENTACIÓN del objeto. Del ejemplo anterior: Light lt = new Light(); lt.on(); Así que, importante para el futuro: Un objeto de un tipo (clase) determinado comprende: Interfaz: qué se ofrece. Implementación: cómo se ofrece.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Encapsulamiento Una de las características de los sistemas distribuidos –pero que es aplicable a cualquier otro sistema- es la Apertura: Permite a un SO expandirse en múltiples direcciones. La apertura se consigue especificando y documentando las interfaces fundamentales del sistema y poniéndolos disponibles a los desarrolladores, para, finalmente, estandarizar esas interfaces: las interfaces de las clases que conforman el API se hacen públicas Para ello hay que exponer al usuario sólo aquellas operaciones que se establezcan como públicas. Facilidad de utilización. Posibilidad de errores por programadores inexpertos. Java utiliza tres palabras clave: public, protected, private – aparte, existe otro estado por defecto-. Se explicará más adelante.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Herencia Sería un inconveniente tener que crear nuevas clases muy parecidas a otras que ya existían. El concepto de Herencia nos permite crear “clones” o “hijos” de clases, de tal forma que heredan su estado. A esta clase hija se le puede añadir o modificar funcionalidad con respecto a la del padre. ¡La interfaz se duplica!

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Herencia (y II) Opciones de utilización de la herencia 1.<= Añadir funcionalidad 2. Modificación de comportamiento =>

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Reutilización La reutilización de código es una de las grandes ventajas de la OO. No es fácil de obtener –parece fácil al principio...- Técnicas de reutilización: Utilización directa. La misma clase vale. Subclassing: heredar una clase (frameworks). Modificación de una clase existente: 

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Tipo de relaciones 1. Ya conocido: Herencia 2. Agregación Dentro de una objeto puede albergarse un conjunto de instancias de diferentes clases que conformen parte del estado del primero. Composición: especialización de la agregación. “Has-a”.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Polimorfismo “Early binding”. Linker => dirección absoluta. En OOP eso no se puede hacer hasta run-time: late- binding. Controlador de pájaros.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Polimorfismo (II) Operación del BirdController: hazAlgo(Bird b) { b.move(); } Y en otra parte del código: Goose g = new Goose(); Penguin p = new Penguin(); hazAlgo(g); hazAlgo(p); ¿Y si ahora añadimos un tipo “Tweety” descendiente de Bird sin método “move” sobrecargado? Tweety t = new Tweety(); hazAlgo(t);

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática (DII) Polimorfismo (y III) Si “Bird” o “Shape” nunca van a ser instanciables, es mejor declararlas como clases abstractas o virtuales puras. También las operaciones –métodos- pueden ser abstractas: Sólo dentro de clases abstractas. Obliga a las subclases a implementar ese método. signatures Otra opción es definir directamente “interfaces”: se pueden entender como clases abstractas sin implementación alguna, sólo signatures (¿nos suena de algo?)