Introducción a la Programación Orientada a Objetos (POO)

Slides:



Advertisements
Presentaciones similares
Pilares de la POO.
Advertisements

Unidad 3 Lenguajes .Net y POO
Instituto Universitario de Gerencia y Tecnología N - Análisis de Sistemas DIAGRAMA DE CLASES INTEGRANTES: LEIVYS MAZA Informática Mención 205 Profesor:
Curso de Java Capitulo 7: Continuación Poo Profesor:
POLIMORFISMO UNIDAD 4.
PROGRAMACION ORIENTADA A OBJETOS
Tomado de:
Tecnología orientada a objeto
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Introducción a la Orientación a Objetos
Programación Orientada a Objetos (P.O.O.)
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
Tipo de Dato Abstracto Tipos de datos:
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA A OBJETOS
ORIENTADO A OBJETOS ESTUDIANTE JESSICA LORENA LEAL MEDINA INGENIERIA DE SOFTWARE PROGRAMA INGENIERIA DE SISTEMAS UNIVERSIDA COOPERATIVA DE COLOMBIA NEIVA-HUILA.
PROGRAMACION ORIENTADA
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
POO (Programación Orientada a Objetos)
U NIDAD III P ROGRAMACIÓN O RIENTADA A O BJETOS (POO) Facilitadora: Ing. Patricia Gómez.
METODOLOGIA DE LA PROGRAMACION
HERENCIA.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Desarrollo de Aplicaciones Basadas en Windows Programación Orientada a Objetos Jimena A. Timaná P. Octubre, 2006.
Tema 6: Clases Antonio J. Sierra.
Introducción a la programación Orientada 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.
PROGRAMACIÓN ORIETADA A OBJETOS
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.
Bases de Datos Orientadas a Objetos (BDOO)
Programación Orientada a Objetos
Programación Orientada Objetos
Métricas Técnicas para Sistemas Orientados a Objeto
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
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.
Programación Orientada a Objetos (P.O.O.)
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Facultad de Ingeniería
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Programación orientada a objetos
Introducción a la Programación Orientada a Objetos (POO)
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
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.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
PROGRAMACIÓN IV INTRODUCCIÓN.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
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.
Programación orientada a objetos
La Programación Orientado a Objetos
Paradigma Orientado 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.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
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.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Modelado UML Diagrama de Clases
:: Prof. Yeniffer Peña Introducción a JAVA Presentación Programación I.
Técnica de programación que utiliza abstracciones de la vida real (Objetos) como bloque esencial de construcció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.
Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar los.
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

Introducción a la Programación Orientada a Objetos (POO)

Clases, subclases y objetos Herencia Conceptos claves Encapsulamiento Motivación Definiciones básicas Objetos Mensajes y métodos Clases, subclases y objetos Herencia Conceptos claves Encapsulamiento Abstracción Polimorfismo Persistencia Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas (entre otras cosas) comenzó a trabajarse el concepto de programación orientada a objetos (POO). Una de las motivaciones principales de trabajar en este paradigma es la reutilización.

Introducción Qué vimos hasta ahora? Programación Estructurada La idea principal de esta forma de programación es separar las partes complejas del programa en módulos, que sean ejecutados a medida que sean necesarios. Estos módulos son independientes entre sí, y además deben poder comunicarse.

Introducción Problemas de la Programación Estructurada Varios programadores trabajan en equipo desarrollando una aplicación grande. Mas de un programador manipula funciones separadas que pueden referirse a tipos de datos mutuamente compartidos, y los cambios de un programador se deben reflejar en el trabajo del resto del equipo. Qué pasa si uno de los programadores decide que una estructura existente en el sistema en vez de representarse con una lista, ahora se representa con un arreglo? Este es uno de los problemas de la programación estructurada, por lo cual se siguió investigando sobre diferentes metodologías de programación.

Introducción - POO Qué es lo que ves?

Introducción - POO Qué es lo que ves?

Introducción - POO Qué es lo que ves?

Qué es lo que tienen en común? Introducción - POO Qué es lo que tienen en común? Modelo Marca Color Velocidad Acelerar Desacelerar Apagar Arrancar Se podría encontrar una forma de definir “algo” que encapsule las características y comportamiento comunes

Programación Orientada a Objetos ¿Tienen algo en común? La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas.

¿Cómo lo relacionamos con nuestro ejemplo de los autos? Introducción - POO ¿Qué es una clase? Es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de ciertas características comunes. Es una plantilla genérica para un conjunto de objetos de similares características. Contiene: ¿Cómo lo relacionamos con nuestro ejemplo de los autos? Conjunto de atributos comunes Estructura de datos Comportamiento por medio de métodos

Programación Orientada a Objetos - Clases ¿Cómo deberíamos implementar la clase auto? nombre Auto características marca modelo color velocidad capacidad baúl comportamiento acelerar() desacelerar() arrancar() apagar() Todos los métodos para ver y modificar c/ característica.

Programación Orientada a Objetos - Clases Cada uno de los diferentes autos vistos anteriormente tienen características comunes pero con valores diferentes. Es decir los tres autos tienen color pero cada uno un color diferente. Instancia de una clase = OBJETO Auto “es un”

Programación Orientada a Objetos Surge de la evolución de la programación estructurada y básicamente simplifica la programación con la nueva filosofía y nuevos conceptos que tiene. La POO se basa en dividir el sistema en componentes que contienen operaciones y datos. Cada componente se denomina objeto. Un objeto es una unidad que contiene datos y operaciones que operan sobre esos datos. Los objetos de un sistema se comunican entre sí mediante mensajes.

Programación Orientada a Objetos Datos Métodos Objeto Programación Estructurada Programa Datos Módulo 1 Módulo 2

Grady Booch resume la diferencia de la siguiente forma: Programación Orientada a Objetos Grady Booch resume la diferencia de la siguiente forma: “Lea las especificaciones del sistema que desea construir. Subraye los verbos si persigue un código procedimental, o los sustantivos si su objetivo es un programa orientado a objetos”.

Programación Orientada a Objetos Todo lo que vemos a nuestro alrededor puede ser considerado un objeto (una computadora, un teléfono celular, un árbol, un automóvil, etc). Ejemplo: una computadora está compuesta por varios componentes (tarjeta madre, chip, disco duro y otros), el trabajo en conjunto de todos ellos hace operar a una computadora. El usuario no necesita saber como trabajan internamente cada uno de estos componentes, sino como es la interacción con ellos. Es decir, cuando se conoce como interaccionan los componentes entre sí, el usuario podrá armar la computadora. La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas. Relación con la Programación Orientada a Objetos

Programación Orientada a Objetos ¿Cuales son las ventajas de la POO? Fomenta la reutilización y extensión de código Permite crear sistemas mas complejos Relacionar el sistema al mundo real Facilita la creación de programas visuales Construcción de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas.

Programación Orientada a Objetos La Programación orientada a objetos trabaja de esta manera: todo el programa está construido en base a diferentes componentes (objetos), cada uno tiene un rol específico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas. La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas. Todo objeto tiene sus atributos y sus métodos

CLASE AUTO Programación Orientada a Objetos Atributos: marca, modelo, color, velocidad máxima, velocidad actual, tamaño tanque de combustible, cantidad actual de combustible en el tanque. Métodos: frenar, acelerar, llenar tanque de combustible, etc CLASE AUTO La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas.

POO - Clases Sintaxis: Clase nombreClase; Atributos (características) Métodos (comportamiento) End;

POO - Clases Clase Auto; Son privados no accesibles desde afuera (características). Atributos Métodos Son privados o públicos (comportamiento) End;

Algoritmos, Datos y Programas 2010 POO - Clases Clase Auto; marca: string modelo: string color: string velocidad: integer; capacidad baúl: real Siempre debe existir constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real) procedure arrancar; procedure acelerar (vel:integer); procedure desacelerar (vel:integer); procedure apagar; procedure verColor ( ); {todos los otros!!!!} procedure pintar (nuevoColor: string); Se deben implementar cada uno de los métodos definidos End; Algoritmos, Datos y Programas 2010

Algoritmos, Datos y Programas 2010 POO - Clases Clase Auto; marca: string; modelo: string color: string; velocidad: integer; capacidad baúl: real; constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real) Begin marca:= unaMarca; modelo:= unModelo; color:= unColor; capacidad:= unaCapacidad; End; procedure arrancar; Begin velocidad:= 0; End; procedure acelerar (vel:integer) velocidad:= velocidad + vel; Notar que a diferencia de los TADs el objeto no es pasado como parámetro Algoritmos, Datos y Programas 2010

POO - Clases procedure arrancar; Begin velocidad:= 0; End; procedure acelerar (vel:integer) velocidad:= velocidad + vel; Procedure verColor (var unColor: string) unColor:=color; Notar que a diferencia de los TADs el objeto no es pasado como parámetro procedure pintar (nuevoColor: string); Begin color:= nuevoColor; End;

¿Cómo sería un programa ? POO – Consideraciones útiles 1- El programa es una colección de objetos que interactúan. 2- En la definición de la clase siempre debe existir el método crear (que tiene antepuesta la palabra constructor). 3- Como parámetros de los métodos nunca se encuentra el objeto. 4- No hay encabezado de los métodos y luego la implementación. ¿Cómo sería un programa ?

POO - Clases Program uno; Var a1,a2: Auto; Begin Notar que sólo para utilizar la operación “constructor” debe anteponerse el nombre de la clase. Begin a1:= Auto.crear (“Citroen”,”3CV”,”amarillo”, 50); a1.arrancar; a1.acelerar (100); a1.desacelerar(30); a2:= Auto.crear (“Ferrari”,”2007”,”roja”, 100); a2.arrancar; End. Forma de invocar los métodos Notar que a diferencia de los TADs, las operaciones se identifican como varObjeto.método (salvo el constructor) Existen objetos que utilicen objetos?

Cómo redefinimos el auto? POO - Clases Considerando la clase auto descripta anteriormente. Además podemos suponer que el auto está compuesto por un motor, el cual podría estar representado por otra clase motor marca modelo color velocidad capacidad baúl motor arrancar acelerar() desacelerar() apagar pintar () verColor() métodos para ver y modificar auto marca válvulas prendido motor Arrancar Apagar Métodos para ver y modificar Cómo redefinimos el auto?

Algoritmos, Datos y Programas 2010 POO - Clases Clase auto; marca: string; modelo: string color: string; velocidad: integer; capacidad baúl: real; miMotor:motor; constructor crear (unaMarca,unModelo,unColor:string; unaVelocidad, unaCapacidad:real; marcaMotor:string; valvulasMotor:integer) Begin marca:= unaMarca; modelo:= unModelo; color:= unColor; capacidad:= unaCapacidad; miMotor:= Motor.crear(marcaMotor, valvulasMotor); End; procedure arrancar(vel:integer) Begin velocidad:= 0; miMotor.arrancar; End; Algoritmos, Datos y Programas 2010

POO - Clases procedure apagar; Begin velocidad:= 0; miMotor.apagar; End; procedure acelerar (vel:integer) velocidad:= velocidad + vel; procedure desacelerar (vel:integer) Begin velocidad:= velocidad - vel; End; procedure verColor (var unColor:string) Begin unColor:= color; End; procedure pintar (unColor:string) Begin color:= unColor; End;

Algoritmos, Datos y Programas 2010 POO - Clases Clase motor; marca: string; valvulas:integer; prendido:boolean; constructor crear (unaMarca:string; unaValvula:integer) Begin marca:= unaMarca; valvulas:= unaValvula; prendido:= false; End; procedure arrancar Begin prendido:= true; End; procedure apagar prendido:= false; Cómo escribimos el programa que lo usa? Algoritmos, Datos y Programas 2010

POO - Clases Cómo funciona? Program dos; Var a1,a2: Auto; Begin a1:= Auto.crear(“Citroen”, ”3CV”, ”amarillo”, 50, “citroen”, 4); a1.arrancar; a1.acelerar(30); a1.apagar; End. Cómo funciona?

El modelo orientado a objetos consta de 4 conceptos básicos: POO - Conceptos El modelo orientado a objetos consta de 4 conceptos básicos: Objetos Clases Herencia Envío de Mensajes La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para el paradigma de orientación a objetos. Las variables de clase tienen valores almacenados en una clase; las variables de instancia tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase. Cuando hablábamos del objeto persona en realidad nos referimos a una instancia de una clase persona que agrupa las principales características intrínsecas a las personas.

POO – Concepto de Herencia ¿Qué aspectos tienen en común? Todos tienen atributos comunes: color modelo motor Todos tienen características comunes: arrancan aceleran apagan

Clases – Características Marca Modelo Color Velocidad Motor Capacidad del baúl Marca Modelo Color Velocidad Motor PosiciónAncla Potencia de las turbinas Eslora Marca Modelo Color Velocidad Motor trenAterrizaje Potencia de las turbinas Altura máxima de vuelo Tamaño de las alas Qué se puede notar? Hay características comunes y propias de cada uno

Clases – Características Cuando se da esta situación aparece el concepto de HERENCIA Marca Modelo Color Velocidad Motor Arrancar Acelerar Desacelerar Apagar Crear Transporte “es un” Auto Barco Avión Potencia de las turbinas Altura máxima de vuelo trenAterrizaje Arrancar Apagar Crear Capacidad del baúl Crear Potencia de las turbinas Eslora posiciónAncla Arrancar Apagar Crear

POO – Concepto de Herencia La herencia es el mecanismo que le permite a un objeto heredar propiedades de otra clase de objetos. La herencia permite a un objeto contener sus propios procedimientos o funciones y heredar los mismos de otros objetos. Un mecanismo potente que no se encuentra en sistemas procedimentales. La herencia hace las tareas de programación más fáciles, ya que se pueden crear sus objetos de modo creciente. Es decir, se puede definir un tipo general de clase y se utiliza como una parte de objetos específicos sin necesidad de tener que declarar todos los campos individuales nuevamente. Para definir una clase que hereda de otra clase se debe incluir el nombre de la clase “padre” entre paréntesis. Así ocurre en nuestro ejemplo de los transportes. Dónde vemos la herencia allí?

POO – Concepto de Herencia Por ejemplo, la subclase auto, barco y la subclase avión heredan todos los métodos y atributos correspondientes a los transportes, por ser estas subclases de la clase transporte. Además, al crear un objeto auto, tendrá no sólo los atributos y comportamiento propios de un transporte sino también los específicos de un auto, por ejemplo podré conocer la capacidad del baúl. Por ejemplo, la subclase alumno, y la subclase docente heredan todos los métodos y atributos correspondientes a las personas, por ser estas subclases de la clase persona. Asimismo al crear un objeto alumno este tendrá no sólo los atributos y comportamiento propios de una persona sino también los específicos de un alumno, por ejemplo probablemente podré conocer en qué institución estudia, y cuál es su nivel de formación.

POO – Concepto de Herencia La herencia consiste entonces en utilizar una clase ya creada para tomar sus características en clases más especializadas o derivadas de ésta para reutilizar el código que sea común con la clase base y solamente definir nuevos métodos o redefinir algunos de los existentes. Debido a la herencia, los programas orientados a objetos constan de taxonomías, árboles y jerarquías de clases que, por medio de la subclasificación, llegan a ser más específicas. Existe la clase OBJECT la cual es “super” clase de todas las clases que se definen en la aplicación. Es la clase padre por defecto si en la definición de la nueva clase no se especifica otra. La herencia consiste entonces en utilizar una clase ya creada para tomar sus características en clases más especializadas o derivadas de esta para, de esta manera, reutilizar el código que sea común con la clase base y solamente definir nuevos métodos o redefinir algunos de los existentes para ajustarse a los comportamientos particulares de esta sub-clase. Debido a la herencia, los programas orientados a objetos constan de taxonomías, árboles y jerarquías de clases que, por medio de la subclasificación, llegan a ser más específicas. Las clases proporcionan los anteproyectos para las subclases o para los objetos relacionados con una aplicación. Herencia simple y múltiple son dos tipos de mecanismos de herencia utilizados normalmente en la POO. Con la herencia simple, una subclase puede heredar datos y métodos de una clase simple así como añadir o sustraer un comportamiento por sí misma. La herencia múltiple se refiere a la posibilidad de una subclase de adquirir los datos y métodos de más de una clase. La herencia múltiple es útil al construir comportamiento compuesto a partir de más de una rama de la jerarquía. Marco estructural “framework”: una biblioteca de clases específicas para una aplicación se denomina un marco estructural “framework”. Los marcos estructurales difieren de las bibliotecas de clases en un distinto grado: un marco estructural es una biblioteca de clases ajustada especialmente para una determinada categoría de aplicaciones. Construir y adaptar aplicaciones a partir de marcos estructurales es más rápido y fácil que empezar con bibliotecas de clases genéricas. Asimismo, un marco estructural no será normalmente útil fuera del campo de la aplicación ya que contiene clases específicas para la aplicación.

POO – Concepto de Herencia Object Transporte Marítimo Aire Nieve Tierra DentroAtmosfera FueraAtmosfera 1-Persona N-Personas Recordar que un transporte de aire, además de “ser” un transporte “es un” object

POO – Concepto de Herencia Es importante hacer notar que la programación orientada a objetos incluye el concepto de herencia, el cual no es incluido en la programación estructurada.

POO – Concepto de Herencia Volviendo a nuestro ejemplo de los transportes: cuántas clases hay que definir? dónde se define cada atributo? dónde se define cada método? donde se implementa cada método?

POO – Concepto de Herencia La clase transporte, auto, barco, avión Cuántas clases definimos? Los atributos comunes a todas las clases en la clase “padre” (Transporte), y los particulares de cada clase en cada una de ellas (Auto, Barco, Avión). Dónde definimos cada atributo? Los métodos comunes en la clase “padre” y los correspondientes a los atributos propios de cada clase en cada una de ellas. Además un método puede definirse en la clase hijo y padre a la vez. Dónde definimos cada método? Dónde implementamos cada método? Depende…

POO – Concepto de Herencia Clase Transporte; marca: string; modelo: string color: string; velocidad: integer; miMotor:motor; constructor crear (unaMarca, unModelo, unColor:string; marcaMotor:string; valvulasMotor:integer) Begin marca:= unaMarca; modelo:= unModelo; color:= unColor; miMotor:= Motor.crear (marcaMotor, valvulasMotor); End; procedure arrancar (vel:integer) Begin velocidad:= 0; miMotor.arrancar; End;

Cómo implementamos la clase auto? POO – Concepto de Herencia procedure desacelerar (vel:integer) Begin velocidad:= velocidad - vel; End; procedure apagar; Begin velocidad:= 0; miMotor.apagar; End; procedure acelerar (vel:integer) velocidad:= velocidad + vel; Cómo implementamos la clase auto? procedure pintar (unColor:string) Begin color:= unColor; End;

POO – Concepto de Herencia Indica que la clase auto hereda de la clase transporte (se indica entre paréntesis) ¿Qué hereda? Clase Auto (Transporte); capacidad baúl: real; Sólo se definen las características propias del auto constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real; marcaMotor:string; valvulasMotor:integer) Begin capacidad:= unaCapacidad; super.crear(unaMarca, unModelo, unColor, marcaMotor, valvulasMotor); End; Invoca al método crear de la clase “padre” (de la cual hereda) Sólo se implementan los métodos propios del auto Notar que los métodos no implementados se heredan de la clase padre

Algoritmos, Datos y Programas 2010 POO – Concepto de Herencia Clase Barco (Transporte); Notar que los métodos no implementados se heredan de la clase padre potenciaTurbinas: real; eslora:real; posicionAncla:string; constructor crear (unaMarca, unModelo, unColor:string; unaPotencia:real; unaEslora:real;marcaMotor:string; valvulasMotor:integer) Begin potenciaTurbinas:= unaPotencia; eslora:= unaEslora; posicionAncla:=“en superficie”; super.crear (unaMarca, unColor, marcaMotor, valvulasMotor); End; Notar que se reimplementaron los métodos arrancar y apagar ya que se les quiere dar un comportamiento diferente Procedure arrancar Begin posicionAncla:=“en superficie”; super.arrancar; End; Procedure apagar Begin posicionAncla:=“en agua”; super.apagar; End; Algoritmos, Datos y Programas 2010

Algoritmos, Datos y Programas 2010 POO – Concepto de Herencia Clase Avion (Transporte); Notar que los métodos no implementados se heredan de la clase padre potenciaTurbinas: real; alturaMaxVuelo:real; trenAterrizaje:string; constructor crear (unaMarca, unModelo, unColor:string; unaPotencia:real; unaAltura:real;marcaMotor:string; valvulasMotor:integer) Begin potenciaTurbinas:= unaPotencia; alturaMaxVuelo:= unaAltura; trenAterrizaje:=“desplegado”; super.crear(unaMarca, unColor, marcaMotor, valvulasMotor); End; Notar que se reimplementaron los métodos arrancar y apagar ya que se les quiere dar un comportamiento diferente Procedure arrancar Begin trenAterrizaje:=“ no desplegado”; super.arrancar; End; Procedure apagar Begin trenAterrizaje:=“desplegado”; super.apagar; End; Algoritmos, Datos y Programas 2010

POO – Concepto de Herencia Recordar que cuando un objeto invoca a un método, primero se lo busca en su definición, sino está definido en él, se lo busca en el “padre’ del objeto. Program dos; Var a:auto; b:barco, av:avion; ma, mo, co, maMotor:string; val:integer; Begin read (mo, ma, co, maMotor); read(val); a:= Auto.crear (ma, mo, co, 150.23, maMotor, val); a.arrancar; a.acelerar (30); b:= Barco.crear (“Royal”, “Nautilus”, ”verde”, 200.90, 7.80, ”Honda”, 5); b.arrancar; b.acelerar(50); b.pintar(“rojo”); a.apagar; End.

POO – Concepto de Herencia - Consideraciones Cuando un programador define una jerarquía de clases, es porque identifica características comunes en los objetos, y algunas características que los diferencian. Los atributos comunes se definen en la “super” clase (clase transporte). Los atributos diferentes se definen en cada clase (clase auto, barco, avión). Los métodos que se implementan de igual manera para todas las clases, deben implementarse en la “super” clase. Los métodos que se implementan de manera diferente en cada subclase, deben implementarse en cada una. Para hacer referencia a un método de una super clase desde una subclase debe ponerse: super.nombremetodo.

POO – Otros conceptos importantes Otros conceptos clave además de los vistos que resumen las ventajas de la programación orientada a objetos son: Encapsulamiento Abstracción Polimorfismo Conceptos Clave Cuatro conceptos clave que resumen las ventajas del método orientado a objetos son: el encapsulamiento, la abstracción, el polimorfismo y la persistencia.

POO – Encapsulamiento Es el término formal que describe al conjunto de métodos y datos dentro de un objeto de forma que el acceso a los datos se permite solamente a través de los propios métodos del objeto. Ninguna otra parte de un programa orientado a objetos puede operar directamente sobre los datos de un objeto. La comunicación entre un conjunto de objetos sucede exclusivamente por medio de mensajes explícitos. (Concepto que también poseen los TADs) Encapsulamiento: es el término formal que describe al conjunto de métodos y datos dentro de un objeto de forma que el acceso a los datos se permite solamente a través de los propios métodos del objeto. Ninguna otra parte de un programa orientado a objetos puede operar directamente sobre los datos de un objeto. La comunicación entre un conjunto de objetos sucede exclusivamente por medio de mensajes explícitos. (Concepto que también poseen los TADs)

POO – Abstracción La orientación a objetos fomenta que los programadores y usuarios piensen sobre las aplicaciones en términos abstractos. Comenzando con un conjunto de objetos, se busca un factor de comportamiento común y se sitúa en clases superiores. Las bibliotecas de clases proporcionan un depósito para elementos comunes y reutilizables. La herencia mantiene automáticamente las relaciones entre las clases dispuestas jerárquicamente en una biblioteca de clases. Abstracción: la orientación a objetos fomenta que los programadores y usuarios piensen sobre las aplicaciones en términos abstractos. Comenzando con un conjunto de objetos, se busca un factor de comportamiento común y se sitúa en clases superiores abstractas. Las bibliotecas de clases proporcionan un depósito para elementos comunes y reutilizables. La maquinaria de la herencia mantiene automáticamente las relaciones entre las clases dispuestas jerárquicamente en una biblioteca de clases. Los marcos estructurales contienen las bibliotecas de clases específicas de la aplicación. Cada nivel de abstracción facilita el trabajo de programación porque hay disponible más cantidad de código reutilizable. Podríamos decir que la abstracción es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en el que se lo utilice; o sea, un objeto “cliente” siempre expondrá sus mismas propiedades y dará los mismos resultados a través de sus eventos, sin importar el ámbito en el cual se lo haya creado.

POO – Abstracción Cada nivel de abstracción facilita el trabajo de programación porque hay disponible más cantidad de código reutilizable. Podríamos decir que la abstracción es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en el que se lo utilice. O sea, un cierto objeto siempre expondrá sus mismas propiedades y dará los mismos resultados a través de sus eventos, sin importar el ámbito en el cual se lo haya creado. Abstracción: la orientación a objetos fomenta que los programadores y usuarios piensen sobre las aplicaciones en términos abstractos. Comenzando con un conjunto de objetos, se busca un factor de comportamiento común y se sitúa en clases superiores abstractas. Las bibliotecas de clases proporcionan un depósito para elementos comunes y reutilizables. La maquinaria de la herencia mantiene automáticamente las relaciones entre las clases dispuestas jerárquicamente en una biblioteca de clases. Los marcos estructurales contienen las bibliotecas de clases específicas de la aplicación. Cada nivel de abstracción facilita el trabajo de programación porque hay disponible más cantidad de código reutilizable. Podríamos decir que la abstracción es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en el que se lo utilice; o sea, un objeto “cliente” siempre expondrá sus mismas propiedades y dará los mismos resultados a través de sus eventos, sin importar el ámbito en el cual se lo haya creado.

Los objetos actúan en respuesta a los mensajes que reciben. POO – Polimorfismo Los objetos actúan en respuesta a los mensajes que reciben. El mismo mensaje puede originar acciones completamente diferentes al ser recibido por diferentes objetos. Este fenómeno se conoce como polimorfismo. El mensaje crear, por ejemplo, al ser enviado a un auto o barco invocará diferentes métodos de creación. Polimorfismo: los objetos actúan en respuesta a los mensajes que reciben. El mismo mensaje puede originar acciones completamente diferentes al ser recibido por diferentes objetos. Este fenómeno se conoce como polimorfismo. El mensaje imprimir, por ejemplo, al ser enviado a una figura o diagrama invocará diferentes métodos de impresión que en el caso de enviar el mensaje imprimir a un documento de texto. El polimorfismo, entonces, se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos. Otro ejemplo, consideremos la operación sumar. El operador + realiza la suma de dos números. Además se puede definir la operación de sumar dos cadenas de caracteres mediante el operador suma (concatenación).

a1:= Auto.crear (….) b1:= Barco.crear (….) POO – Polimorfismo El polimorfismo, entonces, se refiere a que una misma operación puede tener diferente comportamiento en diferentes objetos. a1:= Auto.crear (….) b1:= Barco.crear (….) Polimorfismo: los objetos actúan en respuesta a los mensajes que reciben. El mismo mensaje puede originar acciones completamente diferentes al ser recibido por diferentes objetos. Este fenómeno se conoce como polimorfismo. El mensaje imprimir, por ejemplo, al ser enviado a una figura o diagrama invocará diferentes métodos de impresión que en el caso de enviar el mensaje imprimir a un documento de texto. El polimorfismo, entonces, se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos. Otro ejemplo, consideremos la operación sumar. El operador + realiza la suma de dos números. Además se puede definir la operación de sumar dos cadenas de caracteres mediante el operador suma (concatenación).