![Page 1: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/1.jpg)
Introducción a la Programación Orientada a Objetos (POO)
![Page 2: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/2.jpg)
Motivación
Definiciones básicas Objetos Mensajes y métodos Clases, subclases y objetos Herencia
Conceptos claves Encapsulamiento Abstracción Polimorfismo Persistencia
![Page 3: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/3.jpg)
Qué vimos hasta ahora?
Programación Estructurada
La idea principal de esta forma de programación es separar laspartes complejas del programa en módulos, que seanejecutados a medida que sean necesarios. Estos módulos sonindependientes entre sí, y además deben poder comunicarse.
Introducción
![Page 4: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/4.jpg)
Problemas de la Programación Estructurada
Varios programadores trabajan en equipo desarrollando unaaplicación grande.
Mas de un programador manipula funciones separadas que pueden referirsea tipos de datos mutuamente compartidos, y los cambios de un programadorse deben reflejar en el trabajo del resto del equipo.
Qué pasa si uno de los programadores decide que una estructuraexistente 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
![Page 5: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/5.jpg)
Qué es lo que ves?
Introducción - POO
![Page 6: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/6.jpg)
Qué es lo que ves?
Introducción - POO
![Page 7: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/7.jpg)
Qué es lo que ves?
Introducción - POO
![Page 8: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/8.jpg)
Qué es lo que tienen en común?
ModeloMarcaColorVelocidad
AcelerarDesacelerarApagarArrancar
Se podría encontrar una forma dedefinir “algo” que encapsule lascaracterísticas y comportamientocomunes
Introducción - POO
![Page 9: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/9.jpg)
¿Tienen algo en común?
Programación Orientada a Objetos
![Page 10: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/10.jpg)
¿Qué es una clase?
Es un modelo o prototipo que define las variables y métodoscomunes a todos los objetos de ciertas característicascomunes.
Es una plantilla genérica para un conjunto de objetos desimilares características.
Contiene:
Conjunto de atributos comunes
Estructura de datos
Comportamiento por medio de métodos
¿Cómo lo relacionamos con nuestro ejemplo
de los autos?
Introducción - POO
![Page 11: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/11.jpg)
¿Cómo deberíamos implementar la clase auto?
marcamodelocolorvelocidadcapacidad baúl
Auto
acelerar()desacelerar()arrancar()apagar()Todos los métodos para ver y modificar c/ característica.
nombre
características
comportamiento
Programación Orientada a Objetos - Clases
![Page 12: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/12.jpg)
Cada uno de los diferentes autos vistos anteriormente tienencaracterísticas comunes pero con valores diferentes. Es decir los tresautos tienen color pero cada uno un color diferente.
Instancia de una clase = OBJETO
Auto
Programación Orientada a Objetos - Clases
“es un”
![Page 13: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/13.jpg)
Surge de la evolución de la programación estructurada y básicamentesimplifica la programación con la nueva filosofía y nuevos conceptos quetiene.
La POO se basa en dividir el sistema en componentes que contienenoperaciones y datos. Cada componente se denomina objeto.
Un objeto es una unidad que contiene datos y operacionesque operan sobre esos datos. Los objetos de un sistema secomunican entre sí mediante mensajes.
Programación Orientada a Objetos
![Page 14: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/14.jpg)
ProgramaciónEstructurada
Programa
DatosMódulo 1
Módulo 2
Programación Orientada a Objetos
Programación Orientada a Objetos
Programa
Datos Métodos
Objeto
Objeto
Objeto
Datos Métodos
Datos Métodos
![Page 15: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/15.jpg)
Grady Booch resume la diferencia de la siguienteforma:
“Lea las especificaciones del sistema que deseaconstruir. Subraye los verbos si persigue uncódigo procedimental, o los sustantivos si suobjetivo es un programa orientado a objetos”.
Programación Orientada a Objetos
![Page 16: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/16.jpg)
Todo lo que vemos a nuestro alrededor puede ser considerado unobjeto (una computadora, un teléfono celular, un árbol, unautomóvil, etc).
Ejemplo: una computadora está compuesta por varios componentes (tarjetamadre, chip, disco duro y otros), el trabajo en conjunto de todos ellos haceoperar a una computadora. El usuario no necesita saber como trabajaninternamente cada uno de estos componentes, sino como es la interaccióncon ellos. Es decir, cuando se conoce como interaccionan los componentesentre sí, el usuario podrá armar la computadora.
Relación con la Programación Orientada a Objetos
Programación Orientada a Objetos
![Page 17: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/17.jpg)
¿Cuales son las ventajas de la POO?
Fomenta la reutilización y extensión de códigoPermite crear sistemas mas complejosRelacionar el sistema al mundo realFacilita la creación de programas visualesConstrucción de prototiposAgiliza el desarrollo de softwareFacilita el trabajo en equipoFacilita el mantenimiento del software
Programación Orientada a Objetos
![Page 18: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/18.jpg)
Programación Orientada a Objetos
La Programación orientada a objetos trabaja de estamanera: todo el programa está construido en base adiferentes componentes (objetos), cada uno tiene unrol específico en el programa y todos los componentespueden comunicarse entre ellos de formaspredefinidas.
Todo objeto tiene sus atributos y sus métodos
![Page 19: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/19.jpg)
Programación Orientada a Objetos CL
ASE
AUTO
Atributos:marca, modelo, color, velocidad máxima, velocidad actual,tamaño tanque de combustible, cantidad actual decombustible en el tanque.
Métodos:frenar, acelerar, llenar tanque de combustible, etc
![Page 20: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/20.jpg)
Clase nombreClase;
End;
Atributos (características)
Métodos (comportamiento)
Sintaxis:
POO - Clases
![Page 21: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/21.jpg)
Clase Auto;
Atributos
Métodos
End;
Son privados no accesibles desde afuera (características).
Son privados o públicos(comportamiento)
POO - Clases
![Page 22: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/22.jpg)
Algoritmos, Datos y Programas 2010
Clase Auto;
End;
marca: stringmodelo: stringcolor: stringvelocidad: integer;capacidad baúl: real
procedure arrancar;procedure acelerar (vel:integer);procedure desacelerar (vel:integer);procedure apagar;procedure verColor ( ); {todos los otros!!!!}procedure pintar (nuevoColor: string);
constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real)
Siempre debe existir
Se deben implementar cada uno de los métodos definidos
POO - Clases
![Page 23: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/23.jpg)
Algoritmos, Datos y Programas 2010
Clase Auto;
marca: string; modelo: stringcolor: string; velocidad: integer;capacidad baúl: real;
procedure arrancar;Beginvelocidad:= 0;
End;
procedure acelerar (vel:integer)Beginvelocidad:= velocidad + vel;
End;
constructor crear (unaMarca, unModelo, unColor:string; unaCapacidad:real) Beginmarca:= unaMarca; modelo:= unModelo; color:= unColor; capacidad:= unaCapacidad;
End;
Notar que a diferencia de los TADs el objeto no es pasado como parámetro
POO - Clases
![Page 24: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/24.jpg)
procedure arrancar;Beginvelocidad:= 0;
End;
procedure acelerar (vel:integer)Beginvelocidad:= velocidad + vel;
End;
Procedure verColor (var unColor: string)BeginunColor:=color;
End; Notar que a diferencia de los TADs el objeto
no es pasado como parámetro
procedure pintar (nuevoColor: string);Begincolor:= nuevoColor;
End;
POO - Clases
![Page 25: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/25.jpg)
POO – Consideraciones útiles
1- El programa es una colección de objetos queinteractúan.
2- En la definición de la clase siempre debe existir elmétodo crear (que tiene antepuesta la palabraconstructor).
3- Como parámetros de los métodos nunca se encuentrael objeto.
4- No hay encabezado de los métodos y luego laimplementación.
¿Cómo sería un programa ?
![Page 26: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/26.jpg)
Program uno;Vara1,a2: Auto;
Notar que adiferencia de losTADs, lasoperaciones seidentifican comovarObjeto.método(salvo elconstructor)
Begina1:= Auto.crear (“Citroen”,”3CV”,”amarillo”, 50);a1.arrancar;a1.acelerar (100);a1.desacelerar(30);
a2:= Auto.crear (“Ferrari”,”2007”,”roja”, 100);a2.arrancar;
End.
POO - Clases
Forma de invocar los métodos
Existen objetos que utilicen objetos?
Notar que sólo para utilizar la operación “constructor” debe
anteponerse el nombre de la clase.
![Page 27: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/27.jpg)
Considerando la clase auto descripta anteriormente. Además podemossuponer que el auto está compuesto por un motor, el cual podría estarrepresentado por otra clase motor
marcaválvulasprendido
motor
ArrancarApagarMétodos para ver y modificar Cómo redefinimos
el auto?
marcamodelocolorvelocidadcapacidad baúlmotor
arrancaracelerar()desacelerar()apagarpintar ()verColor()métodos para ver y modificar
auto
POO - Clases
![Page 28: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/28.jpg)
Algoritmos, Datos y Programas 2010
Clase auto;marca: string; modelo: stringcolor: string; velocidad: integer;capacidad baúl: real; miMotor:motor;
constructor crear (unaMarca,unModelo,unColor:string; unaVelocidad, unaCapacidad:real; marcaMotor:string; valvulasMotor:integer)
procedure arrancar(vel:integer)
Beginmarca:= unaMarca; modelo:= unModelo;color:= unColor; capacidad:= unaCapacidad; miMotor:= Motor.crear(marcaMotor, valvulasMotor);
End;
Beginvelocidad:= 0;miMotor.arrancar;
End;
POO - Clases
![Page 29: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/29.jpg)
procedure apagar;Beginvelocidad:= 0;miMotor.apagar;
End;
procedure acelerar (vel:integer)Begin
velocidad:= velocidad + vel;End;
procedure pintar (unColor:string)Begincolor:= unColor;
End;
procedure verColor (var unColor:string)BeginunColor:= color;
End;
procedure desacelerar (vel:integer)Begin
velocidad:= velocidad - vel;End;
POO - Clases
![Page 30: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/30.jpg)
Algoritmos, Datos y Programas 2010
Clase motor;
marca: string; valvulas:integer; prendido:boolean;
procedure arrancarBeginprendido:= true;End;
procedure apagarBeginprendido:= false;End;
constructor crear (unaMarca:string; unaValvula:integer) Beginmarca:= unaMarca; valvulas:= unaValvula;
prendido:= false; End;
Cómo escribimos elprograma que lo usa?
POO - Clases
![Page 31: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/31.jpg)
Program dos;Vara1,a2: Auto;Begina1:= Auto.crear(“Citroen”, ”3CV”, ”amarillo”, 50, “citroen”, 4);a1.arrancar;a1.acelerar(30);a1.apagar;
End.
POO - Clases
Cómo funciona?
![Page 32: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/32.jpg)
El modelo orientado a objetos consta de 4conceptos básicos:
ObjetosClasesHerenciaEnvío de Mensajes
POO - Conceptos
![Page 33: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/33.jpg)
¿Qué aspectos tienen en común?
POO – Concepto de Herencia
Todos tienen atributoscomunes: color modelo motor
Todos tienen característicascomunes: arrancan aceleran apagan
![Page 34: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/34.jpg)
MarcaModeloColorVelocidad
MotorPosiciónAnclaPotencia de las turbinasEslora
MarcaModeloColorVelocidad
Motor
Capacidad del baúl
Qué se puede notar? Hay características comunes y propias de cada uno
Clases – Características
MarcaModeloColorVelocidad
MotortrenAterrizajePotencia de las turbinasAltura máxima de vueloTamaño de las alas
![Page 35: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/35.jpg)
Cuando se da esta situación aparece el concepto de HERENCIA
Transporte
AviónBarcoAuto
MarcaModeloColorVelocidadMotor
“es un”
ArrancarAcelerarDesacelerarApagarCrear
Potencia de lasturbinasEsloraposiciónAncla
ArrancarApagarCrear
Potencia de lasturbinasAltura máxima devuelotrenAterrizaje
ArrancarApagarCrear
Capacidad delbaúl
Crear
Clases – Características
![Page 36: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/36.jpg)
Así ocurre en nuestro ejemplo de los transportes. Dónde vemos la herencia allí?
La herencia es el mecanismo que le permite a un objeto heredarpropiedades de otra clase de objetos. La herencia permite a un objetocontener sus propios procedimientos o funciones y heredar los mismos deotros 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 puedencrear sus objetos de modo creciente. Es decir, se puede definir un tipogeneral de clase y se utiliza como una parte de objetos específicos sinnecesidad de tener que declarar todos los campos individuales nuevamente.
Para definir una clase que hereda de otra clase se debe incluir el nombre dela clase “padre” entre paréntesis.
POO – Concepto de Herencia
![Page 37: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/37.jpg)
Por ejemplo, la subclase auto, barco y la subclase avión heredantodos 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 ycomportamiento propios de un transporte sino también losespecíficos de un auto, por ejemplo podré conocer la capacidad delbaúl.
POO – Concepto de Herencia
![Page 38: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/38.jpg)
La herencia consiste entonces en utilizar una clase ya creada paratomar sus características en clases más especializadas oderivadas de ésta para reutilizar el código que sea común con laclase base y solamente definir nuevos métodos o redefinir algunosde los existentes.
Debido a la herencia, los programas orientados a objetos constande taxonomías, árboles y jerarquías de clases que, por medio de lasubclasificación, llegan a ser más específicas.
Existe la clase OBJECT la cual es “super” clase de todas las clasesque se definen en la aplicación. Es la clase padre por defecto si en ladefinición de la nueva clase no se especifica otra.
POO – Concepto de Herencia
![Page 39: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/39.jpg)
Transporte
Marítimo Aire Nieve Tierra
DentroAtmosfera FueraAtmosfera 1-Persona N-Personas
Object
Recordar que un transporte de aire, además de “ser” un transporte “es un” object
POO – Concepto de Herencia
![Page 40: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/40.jpg)
Es importante hacer notar que la programaciónorientada a objetos incluye el concepto de herencia, elcual no es incluido en la programación estructurada.
POO – Concepto de Herencia
![Page 41: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/41.jpg)
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
![Page 42: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/42.jpg)
Cuántas clases definimos?
Dónde definimos cadaatributo?
Dónde definimos cadamétodo?
Dónde implementamoscada método?
La clase transporte, auto, barco, avión
Los atributos comunes a todas lasclases en la clase “padre” (Transporte),y los particulares de cada clase en cadauna de ellas (Auto, Barco, Avión).
Los métodos comunes en la clase“padre” y los correspondientes a losatributos propios de cada clase encada una de ellas. Además un métodopuede definirse en la clase hijo y padrea la vez.
Depende…
POO – Concepto de Herencia
![Page 43: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/43.jpg)
Clase Transporte;
marca: string; modelo: stringcolor: string; velocidad: integer;miMotor:motor;constructor crear (unaMarca, unModelo, unColor:string;
marcaMotor:string; valvulasMotor:integer) Beginmarca:= unaMarca; modelo:= unModelo;color:= unColor; miMotor:= Motor.crear (marcaMotor, valvulasMotor);
End;
procedure arrancar (vel:integer)Beginvelocidad:= 0;miMotor.arrancar;
End;
POO – Concepto de Herencia
![Page 44: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/44.jpg)
procedure apagar;Beginvelocidad:= 0;miMotor.apagar;
End;
procedure acelerar (vel:integer)Begin
velocidad:= velocidad + vel;End;
procedure pintar (unColor:string)Begincolor:= unColor;
End;
procedure desacelerar (vel:integer)Begin
velocidad:= velocidad - vel;End;
Cómo implementamos la clase auto?
POO – Concepto de Herencia
![Page 45: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/45.jpg)
Clase Auto (Transporte);
capacidad baúl: real;
constructor crear (unaMarca, unModelo, unColor:string;unaCapacidad:real; marcaMotor:string; valvulasMotor:integer)
Begincapacidad:= unaCapacidad; super.crear(unaMarca, unModelo, unColor, marcaMotor, valvulasMotor);
End;
Indica que la clase auto hereda de la clase transporte (se indica entre paréntesis) ¿Qué hereda?
Sólo se definen las características propias del auto
Sólo se implementan los métodos propios del auto
Invoca al método crear de la clase “padre” (de la cual hereda)
Notar que los métodos no implementados seheredan de la clase padre
POO – Concepto de Herencia
![Page 46: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/46.jpg)
Algoritmos, Datos y Programas 2010
Clase Barco (Transporte);
potenciaTurbinas: real; eslora:real;posicionAncla:string;
constructor crear (unaMarca, unModelo, unColor:string; unaPotencia:real;unaEslora:real;marcaMotor:string; valvulasMotor:integer)
BeginpotenciaTurbinas:= unaPotencia;eslora:= unaEslora;posicionAncla:=“en superficie”; super.crear (unaMarca, unColor, marcaMotor, valvulasMotor);
End;
Procedure arrancarBeginposicionAncla:=“en superficie”; super.arrancar;
End;
Procedure apagarBeginposicionAncla:=“en agua”; super.apagar;
End;
Notar que los métodos no implementados se heredan de la clase padre
Notar que se reimplementaron los métodos arrancar y apagar ya que se les quiere dar un comportamiento diferente
POO – Concepto de Herencia
![Page 47: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/47.jpg)
Algoritmos, Datos y Programas 2010
Clase Avion (Transporte);
potenciaTurbinas: real; alturaMaxVuelo:real;trenAterrizaje:string;
constructor crear (unaMarca, unModelo, unColor:string; unaPotencia:real;unaAltura:real;marcaMotor:string; valvulasMotor:integer)
BeginpotenciaTurbinas:= unaPotencia;alturaMaxVuelo:= unaAltura;trenAterrizaje:=“desplegado”; super.crear(unaMarca, unColor, marcaMotor, valvulasMotor);
End;
Procedure arrancarBegintrenAterrizaje:=“ no desplegado”; super.arrancar;
End;
Procedure apagarBegintrenAterrizaje:=“desplegado”; super.apagar;End;
POO – Concepto de Herencia
Notar que los métodos no implementados se heredan de la clase padre
Notar que se reimplementaron los métodos arrancar y apagar ya que se les quiere dar un comportamiento diferente
![Page 48: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/48.jpg)
POO – Concepto de Herencia
Program dos;Vara:auto; b:barco, av:avion;ma, mo, co, maMotor:string;val:integer;
Beginread (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.
Recordar que cuando un objetoinvoca a un método, primerose lo busca en su definición,sino está definido en él, se lobusca en el “padre’ del objeto.
![Page 49: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/49.jpg)
Cuando un programador define una jerarquía de clases, es porque identificacaracterísticas comunes en los objetos, y algunas características que losdiferencian.
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, debenimplementarse en la “super” clase.
Los métodos que se implementan de manera diferente en cada subclase, debenimplementarse en cada una.
Para hacer referencia a un método de una super clase desde una subclase debeponerse: super.nombremetodo.
POO – Concepto de Herencia - Consideraciones
![Page 50: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/50.jpg)
Otros conceptos clave además de los vistos queresumen las ventajas de la programación orientada aobjetos son:
EncapsulamientoAbstracciónPolimorfismo
POO – Otros conceptos importantes
![Page 51: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/51.jpg)
Es el término formal que describe al conjunto demétodos y datos dentro de un objeto de forma que elacceso a los datos se permite solamente a través delos propios métodos del objeto.
Ninguna otra parte de un programa orientado aobjetos puede operar directamente sobre los datos deun objeto.
La comunicación entre un conjunto de objetos sucedeexclusivamente por medio de mensajes explícitos.(Concepto que también poseen los TADs)
POO – Encapsulamiento
![Page 52: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/52.jpg)
La orientación a objetos fomenta que los programadores yusuarios piensen sobre las aplicaciones en términos abstractos.
Comenzando con un conjunto de objetos, se busca un factor decomportamiento común y se sitúa en clases superiores.
Las bibliotecas de clases proporcionan un depósito para elementoscomunes y reutilizables.
La herencia mantiene automáticamente las relaciones entre lasclases dispuestas jerárquicamente en una biblioteca de clases.
POO – Abstracción
![Page 53: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/53.jpg)
Cada nivel de abstracción facilita el trabajo deprogramación porque hay disponible más cantidad decódigo reutilizable.
Podríamos decir que la abstracción es la capacidad de unobjeto de cumplir sus funciones independientemente delcontexto en el que se lo utilice.
O sea, un cierto objeto siempre expondrá sus mismaspropiedades y dará los mismos resultados a través de suseventos, sin importar el ámbito en el cual se lo hayacreado.
POO – Abstracción
![Page 54: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/54.jpg)
Los objetos actúan en respuesta a los mensajes quereciben.
El mismo mensaje puede originar accionescompletamente diferentes al ser recibido por diferentesobjetos. Este fenómeno se conoce como polimorfismo.
El mensaje crear, por ejemplo, al ser enviado a unauto o barco invocará diferentes métodos de creación.
POO – Polimorfismo
![Page 55: Introducción a la Programación Orientada a Objetos (POO)](https://reader030.vdocuments.pub/reader030/viewer/2022012104/616a161f11a7b741a34ea7d3/html5/thumbnails/55.jpg)
El polimorfismo, entonces, se refiere a que unamisma operación puede tener diferentecomportamiento en diferentes objetos.
a1:= Auto.crear (….)
b1:= Barco.crear (….)
POO – Polimorfismo