introduccion poo
DESCRIPTION
nadaTRANSCRIPT
-
Introduccin a la Programacin Orientada a Objetos (POO)
-
Motivacin
Definiciones bsicas Objetos Mensajes y mtodos Clases, subclases y objetos Herencia
Conceptos claves Encapsulamiento Abstraccin Polimorfismo Persistencia
-
Qu vimos hasta ahora?
Programacin Estructurada
La idea principal de esta forma de programacin es separar laspartes complejas del programa en mdulos, que seanejecutados a medida que sean necesarios. Estos mdulos sonindependientes entre s, y adems deben poder comunicarse.
Introduccin
-
Problemas de la Programacin Estructurada
Varios programadores trabajan en equipo desarrollando unaaplicacin 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 programacin estructurada, por lo cual se sigui investigando sobre diferentes metodologas de programacin.
Introduccin
-
Qu es lo que ves?
Introduccin - POO
-
Qu es lo que ves?
Introduccin - POO
-
Qu es lo que ves?
Introduccin - POO
-
Qu es lo que tienen en comn?
ModeloMarcaColorVelocidad
AcelerarDesacelerarApagarArrancar
Se podra encontrar una forma dedefinir algo que encapsule lascaractersticas y comportamientocomunes
Introduccin - POO
-
Tienen algo en comn?
Programacin Orientada a Objetos
-
Qu es una clase?
Es un modelo o prototipo que define las variables y mtodoscomunes a todos los objetos de ciertas caractersticascomunes.
Es una plantilla genrica para un conjunto de objetos desimilares caractersticas.
Contiene:
Conjunto de atributos comunes
Estructura de datos
Comportamiento por medio de mtodos
Cmo lo relacionamos con nuestro ejemplo
de los autos?
Introduccin - POO
-
Cmo deberamos implementar la clase auto?
marcamodelocolorvelocidadcapacidad bal
Auto
acelerar()desacelerar()arrancar()apagar()Todos los mtodos para ver y modificar c/ caracterstica.
nombre
caractersticas
comportamiento
Programacin Orientada a Objetos - Clases
-
Cada uno de los diferentes autos vistos anteriormente tienencaractersticas comunes pero con valores diferentes. Es decir los tresautos tienen color pero cada uno un color diferente.
Instancia de una clase = OBJETO
Auto
Programacin Orientada a Objetos - Clases
es un
-
Surge de la evolucin de la programacin estructurada y bsicamentesimplifica la programacin con la nueva filosofa 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.
Programacin Orientada a Objetos
-
ProgramacinEstructurada
Programa
DatosMdulo 1
Mdulo 2
Programacin Orientada a Objetos
Programacin Orientada a Objetos
Programa
Datos Mtodos
Objeto
Objeto
Objeto
Datos Mtodos
Datos Mtodos
-
Grady Booch resume la diferencia de la siguienteforma:
Lea las especificaciones del sistema que deseaconstruir. Subraye los verbos si persigue uncdigo procedimental, o los sustantivos si suobjetivo es un programa orientado a objetos.
Programacin Orientada a Objetos
-
Todo lo que vemos a nuestro alrededor puede ser considerado unobjeto (una computadora, un telfono celular, un rbol, unautomvil, 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 interaccincon ellos. Es decir, cuando se conoce como interaccionan los componentesentre s, el usuario podr armar la computadora.
Relacin con la Programacin Orientada a Objetos
Programacin Orientada a Objetos
-
Cuales son las ventajas de la POO?
Fomenta la reutilizacin y extensin de cdigoPermite crear sistemas mas complejosRelacionar el sistema al mundo realFacilita la creacin de programas visualesConstruccin de prototiposAgiliza el desarrollo de softwareFacilita el trabajo en equipoFacilita el mantenimiento del software
Programacin Orientada a Objetos
-
Programacin Orientada a Objetos
La Programacin orientada a objetos trabaja de estamanera: todo el programa est construido en base adiferentes componentes (objetos), cada uno tiene unrol especfico en el programa y todos los componentespueden comunicarse entre ellos de formaspredefinidas.
Todo objeto tiene sus atributos y sus mtodos
-
Programacin Orientada a Objetos CL
ASE
AUTO
Atributos:marca, modelo, color, velocidad mxima, velocidad actual,tamao tanque de combustible, cantidad actual decombustible en el tanque.
Mtodos:frenar, acelerar, llenar tanque de combustible, etc
-
Clase nombreClase;
End;
Atributos (caractersticas)
Mtodos (comportamiento)
Sintaxis:
POO - Clases
-
Clase Auto;
Atributos
Mtodos
End;
Son privados no accesibles desde afuera (caractersticas).
Son privados o pblicos(comportamiento)
POO - Clases
-
Algoritmos, Datos y Programas 2010
Clase Auto;
End;
marca: stringmodelo: stringcolor: stringvelocidad: integer;capacidad bal: 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 mtodos definidos
POO - Clases
-
Algoritmos, Datos y Programas 2010
Clase Auto;
marca: string; modelo: stringcolor: string; velocidad: integer;capacidad bal: 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 parmetro
POO - Clases
-
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 parmetro
procedure pintar (nuevoColor: string);Begincolor:= nuevoColor;
End;
POO - Clases
-
POO Consideraciones tiles
1- El programa es una coleccin de objetos queinteractan.
2- En la definicin de la clase siempre debe existir elmtodo crear (que tiene antepuesta la palabraconstructor).
3- Como parmetros de los mtodos nunca se encuentrael objeto.
4- No hay encabezado de los mtodos y luego laimplementacin.
Cmo sera un programa ?
-
Program uno;Vara1,a2: Auto;
Notar que adiferencia de losTADs, lasoperaciones seidentifican comovarObjeto.mtodo(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 mtodos
Existen objetos que utilicen objetos?
Notar que slo para utilizar la operacin constructor debe
anteponerse el nombre de la clase.
-
Considerando la clase auto descripta anteriormente. Adems podemossuponer que el auto est compuesto por un motor, el cual podra estarrepresentado por otra clase motor
marcavlvulasprendido
motor
ArrancarApagarMtodos para ver y modificar Cmo redefinimos
el auto?
marcamodelocolorvelocidadcapacidad balmotor
arrancaracelerar()desacelerar()apagarpintar ()verColor()mtodos para ver y modificar
auto
POO - Clases
-
Algoritmos, Datos y Programas 2010
Clase auto;marca: string; modelo: stringcolor: string; velocidad: integer;capacidad bal: 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
-
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
-
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;
Cmo escribimos elprograma que lo usa?
POO - Clases
-
Program dos;Vara1,a2: Auto;Begina1:= Auto.crear(Citroen, 3CV, amarillo, 50, citroen, 4);a1.arrancar;a1.acelerar(30);a1.apagar;
End.
POO - Clases
Cmo funciona?
-
El modelo orientado a objetos consta de 4conceptos bsicos:
ObjetosClasesHerenciaEnvo de Mensajes
POO - Conceptos
-
Qu aspectos tienen en comn?
POO Concepto de Herencia
Todos tienen atributoscomunes: color modelo motor
Todos tienen caractersticascomunes: arrancan aceleran apagan
-
MarcaModeloColorVelocidad
MotorPosicinAnclaPotencia de las turbinasEslora
MarcaModeloColorVelocidad
Motor
Capacidad del bal
Qu se puede notar? Hay caractersticas comunes y propias de cada uno
Clases Caractersticas
MarcaModeloColorVelocidad
MotortrenAterrizajePotencia de las turbinasAltura mxima de vueloTamao de las alas
-
Cuando se da esta situacin aparece el concepto de HERENCIA
Transporte
AvinBarcoAuto
MarcaModeloColorVelocidadMotor
es un
ArrancarAcelerarDesacelerarApagarCrear
Potencia de lasturbinasEsloraposicinAncla
ArrancarApagarCrear
Potencia de lasturbinasAltura mxima devuelotrenAterrizaje
ArrancarApagarCrear
Capacidad delbal
Crear
Clases Caractersticas
-
As ocurre en nuestro ejemplo de los transportes. Dnde 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 programacin ms fciles, 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 especficos 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 parntesis.
POO Concepto de Herencia
-
Por ejemplo, la subclase auto, barco y la subclase avin heredantodos los mtodos y atributos correspondientes a los transportes,por ser estas subclases de la clase transporte.
Adems, al crear un objeto auto, tendr no slo los atributos ycomportamiento propios de un transporte sino tambin losespecficos de un auto, por ejemplo podr conocer la capacidad delbal.
POO Concepto de Herencia
-
La herencia consiste entonces en utilizar una clase ya creada paratomar sus caractersticas en clases ms especializadas oderivadas de sta para reutilizar el cdigo que sea comn con laclase base y solamente definir nuevos mtodos o redefinir algunosde los existentes.
Debido a la herencia, los programas orientados a objetos constande taxonomas, rboles y jerarquas de clases que, por medio de lasubclasificacin, llegan a ser ms especficas.
Existe la clase OBJECT la cual es super clase de todas las clasesque se definen en la aplicacin. Es la clase padre por defecto si en ladefinicin de la nueva clase no se especifica otra.
POO Concepto de Herencia
-
Transporte
Martimo Aire Nieve Tierra
DentroAtmosfera FueraAtmosfera 1-Persona N-Personas
Object
Recordar que un transporte de aire, adems de ser un transporte es un object
POO Concepto de Herencia
-
Es importante hacer notar que la programacinorientada a objetos incluye el concepto de herencia, elcual no es incluido en la programacin estructurada.
POO Concepto de Herencia
-
Volviendo a nuestro ejemplo de los transportes:
cuntas clases hay que definir?
dnde se define cada atributo?
dnde se define cada mtodo?
donde se implementa cada mtodo?
POO Concepto de Herencia
-
Cuntas clases definimos?
Dnde definimos cadaatributo?
Dnde definimos cadamtodo?
Dnde implementamoscada mtodo?
La clase transporte, auto, barco, avin
Los atributos comunes a todas lasclases en la clase padre (Transporte),y los particulares de cada clase en cadauna de ellas (Auto, Barco, Avin).
Los mtodos comunes en la clasepadre y los correspondientes a losatributos propios de cada clase encada una de ellas. Adems un mtodopuede definirse en la clase hijo y padrea la vez.
Depende
POO Concepto de Herencia
-
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
-
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;
Cmo implementamos la clase auto?
POO Concepto de Herencia
-
Clase Auto (Transporte);
capacidad bal: 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 parntesis) Qu hereda?
Slo se definen las caractersticas propias del auto
Slo se implementan los mtodos propios del auto
Invoca al mtodo crear de la clase padre (de la cual hereda)
Notar que los mtodos no implementados seheredan de la clase padre
POO Concepto de Herencia
-
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 mtodos no implementados se heredan de la clase padre
Notar que se reimplementaron los mtodos arrancar y apagar ya que se les quiere dar un comportamiento diferente
POO Concepto de Herencia
-
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 mtodos no implementados se heredan de la clase padre
Notar que se reimplementaron los mtodos arrancar y apagar ya que se les quiere dar un comportamiento diferente
-
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 mtodo, primerose lo busca en su definicin,sino est definido en l, se lobusca en el padre del objeto.
-
Cuando un programador define una jerarqua de clases, es porque identificacaractersticas comunes en los objetos, y algunas caractersticas que losdiferencian.
Los atributos comunes se definen en la super clase (clase transporte).
Los atributos diferentes se definen en cada clase (clase auto, barco, avin).
Los mtodos que se implementan de igual manera para todas las clases, debenimplementarse en la super clase.
Los mtodos que se implementan de manera diferente en cada subclase, debenimplementarse en cada una.
Para hacer referencia a un mtodo de una super clase desde una subclase debeponerse: super.nombremetodo.
POO Concepto de Herencia - Consideraciones
-
Otros conceptos clave adems de los vistos queresumen las ventajas de la programacin orientada aobjetos son:
EncapsulamientoAbstraccinPolimorfismo
POO Otros conceptos importantes
-
Es el trmino formal que describe al conjunto demtodos y datos dentro de un objeto de forma que elacceso a los datos se permite solamente a travs delos propios mtodos del objeto.
Ninguna otra parte de un programa orientado aobjetos puede operar directamente sobre los datos deun objeto.
La comunicacin entre un conjunto de objetos sucedeexclusivamente por medio de mensajes explcitos.(Concepto que tambin poseen los TADs)
POO Encapsulamiento
-
La orientacin a objetos fomenta que los programadores yusuarios piensen sobre las aplicaciones en trminos abstractos.
Comenzando con un conjunto de objetos, se busca un factor decomportamiento comn y se sita en clases superiores.
Las bibliotecas de clases proporcionan un depsito para elementoscomunes y reutilizables.
La herencia mantiene automticamente las relaciones entre lasclases dispuestas jerrquicamente en una biblioteca de clases.
POO Abstraccin
-
Cada nivel de abstraccin facilita el trabajo deprogramacin porque hay disponible ms cantidad decdigo reutilizable.
Podramos decir que la abstraccin 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 travs de suseventos, sin importar el mbito en el cual se lo hayacreado.
POO Abstraccin
-
Los objetos actan en respuesta a los mensajes quereciben.
El mismo mensaje puede originar accionescompletamente diferentes al ser recibido por diferentesobjetos. Este fenmeno se conoce como polimorfismo.
El mensaje crear, por ejemplo, al ser enviado a unauto o barco invocar diferentes mtodos de creacin.
POO Polimorfismo
-
El polimorfismo, entonces, se refiere a que unamisma operacin puede tener diferentecomportamiento en diferentes objetos.
a1:= Auto.crear (.)
b1:= Barco.crear (.)
POO Polimorfismo
Slide Number 1Slide Number 2Slide Number 3Slide Number 4Slide Number 5Slide Number 6Slide Number 7Slide Number 8Slide Number 9Slide Number 10Slide Number 11Slide Number 12Slide Number 13Slide Number 14Slide Number 15Slide Number 16Slide Number 17Slide Number 18Slide Number 19Slide Number 20Slide Number 21Slide Number 22Slide Number 23Slide Number 24Slide Number 25Slide Number 26Slide Number 27Slide Number 28Slide Number 29Slide Number 30Slide Number 31Slide Number 32Slide Number 33Slide Number 34Slide Number 35Slide Number 36Slide Number 37Slide Number 38Slide Number 39Slide Number 40Slide Number 41Slide Number 42Slide Number 43Slide Number 44Slide Number 45Slide Number 46Slide Number 47Slide Number 48Slide Number 49Slide Number 50Slide Number 51Slide Number 52Slide Number 53Slide Number 54Slide Number 55