Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.

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:
POLIMORFISMO UNIDAD 4.
PROGRAMACION ORIENTADA A OBJETOS
Herencia en C#.
Fundamentos de la programación orientada a objetos
POLIMORFISMO "una interfaz, múltiples métodos".
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
UML 1.4 Peter Emerson Pinchao Solis.
Arquitectura CLARO-TECNOTREE
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.
La Programación Orientado a Objetos
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
HERENCIA.
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos.
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
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.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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.
Diagramas de Clase Angela Carrillo R..

Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
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.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Programación Orientada Objetos
Herramientas de polimorfismo y herencia en C++
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
Diagrama de Clases ACI 570.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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.
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Facultad de Ingeniería
Algoritmos y Programación III
Introducción a la Programación Orientada a Objetos (POO)
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Herencia y Clases Abstractas
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
UML Casos de Uso (repaso) y Diagramas de Clase
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
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,
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
La Programación Orientado a Objetos
Clases “ Es una Abstracción de un elemento del mundo real ”
Diagrama de Clases.
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
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.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Modelado UML Diagrama de Clases
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
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.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS

Promueve entendimiento del mundo real. Provee una base práctica para la implementación en computador. Atiende dos propósitos: Concepto, abstracción o cosa con límite y significado conocido para el problema en estudio. Objeto: Clases y Objetos

Clase: Describe un grupo de objetos con propiedades similares (atributos), comportamiento común (operaciones), relaciones comunes con otros objetos, y semántica común. Clases y Objetos Cada objeto “conoce” su clase, y la puede determinar en tiempo de ejecución. Es una propiedad implícita del objeto.

Clase (cont.): Permite un esquema de acceso del tipo cliente/servidor. Agrega conceptos de modelamiento más avanzados, como encapsulación, herencia, polimorfismo, interfaces. Clases y Objetos

Clase (cont.): A pesar de que son los objetos el centro del modelamiento, son las clases las que se modelan, pues al agrupar los objetos en clases, es posible hacer la abstracción del problema. Clases y Objetos

public class Pila { private int datos[10]; private int tope; public Stack() { tope = -1; } public void enqueue(int valor) { if (tope < 9) datos[++tope] = valor; } public boolean full() { if (tope == 9) return true; else return false; } Clases y Objetos public class Programa { public static void main (String args[]) { Pila p = new Pila();... if (! p.full()) p.enqueue(3); }

Encapsulamiento de Información: Oculta ciertos elementos del objeto, permitiendo definir y trabajar con su interfaz. Protege la implementación, dejando ver sólo los servicios que la clase provee para sus objetos (caja negra). Clases y Objetos

arreglo datos tope enqueue full Sección privada: arreglo datos entero tope Sección pública: enqueue full Encapsulamiento de Información: Clases y Objetos

datos: Array tope: integer enqueue full... Diagrama de Clases UML: Clases y Objetos Stack

Asociaciones entre Clases: Un asociación es una relación entre tipos (o más concretamente, instancias de estos tipos) que indica alguna conexión significativa e interesante. Clases y Objetos

Diagrama de Clases UML: asociaciones entre clases. Ejemplo de Asociación 1:1, Binaria Clases y Objetos

Composición: La composición es un tipo especial de asociación, que también modela relaciones “todo/parte”. La diferencia es que tiene una fuerte relación de pertenencia y vidas coincidentes de la parte con el todo. Las “partes” pueden crearse después del “todo”, pero una vez creadas, viven y mueren con el “todo”. Clases y Objetos

Composición: ejemplo. Clases y Objetos

Herencia: Propiedad mediante la cual instancias de una clase “hija” (subclase) puedan tener acceso tanto a la estructura como al comportamiento asociados a una clase “padre” (superclase). Las clases que se organizan en torno a la herencia siguen una estructura jerárquica. Herencia

public class Persona { private String nombre(30); private String rut(9); private String nombre(30); private Date fechaNacimiento(9); public Persona() {... } public int edad() {... } public void mudanza() {... }... } Clases y Objetos public class Alumno extends Persona { private int curso; private String carrera(30); public void matricularse() {... } public void egresar() {... }

Herencia: Es siempre transitiva, es decir una clase puede heredar características de superclases alejadas varias niveles. La herencia significa que el comportamiento y la estructura de las subclases son siempre una extensión de las propiedades asociadas con la(s) superclase(s). Herencia

Diagrama de Clase UML: Herencia. Herencia

Herencia: Por otro lado, ya que una subclase es una forma más especializada (o restringida) de la superclase, en cierto modo también es una versión restringida de la superclase. Lo anterior parece una contradicción, pero es de donde toma fuerza la herencia en sí misma. Herencia

Herencia - Atributos: Una subclase tiene la posibilidad de accesar todos los atributos públicos. Una subclase puede tener atributos nuevos. Una subclase “nieta” hereda los atributos de sus niveles superiores. Herencia

Herencia - Métodos: Un hijo tiene todos los métodos públicos de la superclase. Puede agregar nuevos métodos, heredar los de las superclases más alejadas, y hasta redefinir métodos de sus ancestros. También existe la posibilidad de que existan métodos estáticos. Herencia

Jerarquías Múltiples: Es posible tener varias jerarquías de herencia, donde un objeto puede pertenecer a más de una jerarquía si es necesario. Herencia

Herencia Múltiple: Una subclase puede ser derivada de más de una superclase. Herencia

Polimorfismo: Significa “muchas formas”. Un objeto polimórfico es una entidad, como una variable o argumento de función, a la que se le permite tener valores de tipos diferentes en el curso de la ejecución. Polimorfismo

Sobrecarga de métodos. Polimorfismo: Anulación: reemplazo y refinamiento. Métodos Virtuales. Polimorfismo

Sobrecarga de Métodos: Cada función tiene una firma compuesta por los parámetros (cantidad, orden, tipo). Se pueden encontrar varias funciones con el mismo nombre, pero con diferentes firmas --> sobrecarga de métodos. Valor y/o presencia del parámetro definen comportamiento interno de un método. Polimorfismo

public class Pila { private int datos[10]; private int tope; public Stack() { tope = -1; } public void enqueue(int valor) { if (tope < 9) datos[++tope] = valor; } public void enqueue (int valor1, int valor2) { if (tope < 8) { datos[++tope] = valor; datos[++tope] = valor; } }... } public class Programa { public static void main (String args[]) { Pila p = new Pila();... if (! p.full()) p.enqueue(3, 4);... if (! p.full()) p.enqueue(5);... } Polimorfismo

Anulación: Se dice que el método de una clase que tiene el mismo nombre que el método de una superclase anula al método de la superclase. Polimorfismo

Anulación: Un reemplazo sustituye totalmente el método de la superclase durante la ejecución, es decir, el código en la superclase no será ejecutado cuando se manipulan instancias de la subclase. Polimorfismo

public class Pila { private int datos[10]; private int tope; public Stack() { tope = -1; } public void enqueue(int valor) { if (tope < 9) datos[++tope] = valor; } public boolean full() { if (tope == 9) return true; else return false; }... } public class Pila2 extends Pila {... public void enqueue(int valor) { if (tope < 5) datos[++tope] = valor; } } Polimorfismo

Anulación: Un refinamiento de método incluye, como parte de su comportamiento, la ejecución del método heredado de la superclase…luego, se preserva y se aumenta el comportamiento de la superclase. Polimorfismo

public class Pila { private int datos[10]; private int tope; public Stack() { tope = -1; } public void enqueue(int valor) { if (tope < 9) datos[++tope] = valor; } public boolean full() { if (tope == 9) return true; else return false; }... } public class Pila2 extends Pila {... public void enqueue(int valor) { super(3); if (tope < 5) datos[++tope] = valor; } } Polimorfismo

Métodos Virtuales: Esto se relaciona con el concepto de enlace dinámico que hace un lenguaje orientado al objeto, en lugar del tradicional enlace estático que hacen lenguajes de programación como C. Su definición indica que se debe preferir la implementación de la instancia, obteniéndose una ejecución no determinista del código. Polimorfismo

“Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semántica del programa escrito en los términos de la superclase se vea afectado.” Polimorfismo El Principio de Sustitución de Liskow (1987) afirma que:

dormir ? ? Polimorfismo Ejemplo: cada animal, pero de forma diferente.

Dormir() { en un árbol } Dormir() { sobrela espalda } Dormir() { sobre el vientre } ZooAnimal LeónTigreOso 1 * Dormir() { } Polimorfismo Ejemplo: continuación...

Métodos Abstractos: Polimorfismo Un caso especial de método virtual es aquél que no contiene código, el cual se denomina método abstracto. Es un método no implementado que obliga a las subclases a sobrecargarlo con una implementación concreta.

public abstract class Persona { private String Nombre; private String Direccion; private int edad; public Persona(...) {... } public abstract int sueldo(); } public class Empleado extends Persona { private int cantidad_horas;... public int sueldo() {...while...switch... } Polimorfismo public class Externo extends Persona { private String Empresa;... public int sueldo() {...for...switch... }

Métodos Abstractos: En la invocación, siempre se usa la implementación de la clase de la instancia, mediante el enlace dinámico que se hace durante la ejecución del programa. Ayuda a la escabilidad del programa frente a la aparición de nuevas subclases en la jerarquía de herencia. Polimorfismo

Clases Abstractas: Una clase abstracta es aquélla que contiene, al menos, un método abstracto. Dado que el método abstracto no tiene implementación, una instancia de la clase no podría ejecutar nada al respecto…luego, no es posible tener instancias asociadas a la clase abstracta. Polimorfismo

Clases Abstractas: Si es posible tener referencias a instancias de la clase abstracta, invocando cualquier método de la misma, incluso el método abstracto......pues, en la práctica se reemplazarán por instancias de las subclases (principio de sustitución). Polimorfismo

Clase Abstracta en UML Polimorfismo

Interface: Es un conjunto de declaraciones de métodos sin implementación. Una clase “implementa” una interface debe especificar los códigos correspondientes a todos los métodos presentes en él. Interfaces

Interface: Si una clase implementa una interface y no provee de una implementación, debe ser declarada como abstracta. Una clase puede implementar las interfaces como sean necesarias. Interfaces

Interface s en UML Interfaces

public class Mamifero { private String raza; private String especie; private int edad; public Mamifero(...) {... } public void vacunar (String tipo_vacuna) {...if...while...for } public interface Oviparo { public void poner_huevos (int cantidad); public void empollar_huevos (int semanas); } Interfaces public class Ornitorrinco extends Mamifero implements Oviparo {... public void poner_huevos (int cantidad) {...if...while...for... } public void empollar_huevos (int semanas) {...for...if... } }