Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 Intro POO PDF
2 Intro POO PDF
Orientada a Objetos
Tema 1
TACC II
Curso 2008/09
1
Indice
zCiclo
zCi
l de
d Vida
Vid y Calidad
C lid d del
d l
Software.
z Paradigmas de Programacin.
z Programacin Orientada a Objetos.
z Conceptos de Programacin Orientada a
Objetos.
{ Clases y Objetos
{ Encapsulamiento.
{ Herencia.
Herencia
{ Polimorfismo.
{ Frameworks y Notaciones.
2
Anlisis.
Diseo.
Codificacin.
Pruebas.
Mantenimiento.
45
40
35
30
25
20
15
10
5
0
40
15
14
13
C
or
re
gi
r
M
ej
or
ar
Ad
ap
ta
r
Pr
ue
ba
s
Im
pl
em
en
ta
ci
n
11
di
se
o
y
Anlisis 6%.
6%
Diseo 5%.
Codificacin 7%.
7%
Pruebas 15%.
Mantenimiento 67%.
67%
An
l
is
is
z
z
z
z
z
Esfuerzo
o Relativo(
Eficiencia
Efi
i
i
Portabilidad
Facilidad de prueba
Integridad (proteccin contra procesos sin derecho de
acceso)
Facilidad de uso
Correccin
Fiabilidad (situaciones anmalas)
Extensibilidad
Reutilizacin
Compatibilidad
...
5
Indice
z Ciclo
Ci l de
d Vid
Vida y Calidad
C lid d d
dell S
Software.
ft
zParadigmas
Paradigmas de Programacin.
z Programacin Orientada a Objetos.
z Conceptos de Programacin Orientada a
Objetos.
{ Clases y Objetos
{ Encapsulamiento.
{ Herencia.
Herencia
{ Polimorfismo.
{ Frameworks y Notaciones
Notaciones.
6
Paradigmas
g
de Programacin
g
Abstraccin
Paradigmas de Programacin
z Estructurada.
Estructurada
{
{
{
{
{
Fortran.
Basic.
Pascal
Pascal.
C.
z Funcional.
Funcional
{ Lisp.
{
z Desde
esde p
principios
c p os de los
os 70.
0
z Dificultad para el trabajo en grupo.
z No hay correspondencia estrecha entre
d t reales
datos
l y programas.
z Lgica.
Lgica
{ Prolog.
{
z POO.
POO
{
{
{
{
Smalltalk.
C++.
Java
Java.
Indice
z Ciclo
Ci l de
d Vid
Vida y Calidad
C lid d d
dell S
Software.
ft
z Paradigmas de Programacin.
10
Programacin
g
Orientada a Objetos
j
Caractersticas Generales
Programacin
g
Orientada a Objetos
j
Caractersticas
Persona
Persona
Interfazz pblica
+mostrar()
+setNombre(string)
+getNombre(): string
+setEdad(int)
+getEdad(): int
Clases,
Tipos
Objetos,
instancias
- nombre
- edad
- id
- setID()
+mostrar()
+setNombre(string)
tN b ( t i )
+getNombre(): string
+setEdad(int)
+getEdad():
getEdad(): int
Informacin privad
da
Ejemplo
especificacin
ejecucin
p2 : Persona
p1 : Persona
- nombre=Mara
- edad=25
- id=
id=55567876G
55567876G
- nombre=Pedro
- edad=23
- id=
id=3456789K
3456789K
13
Programacin
g
Orientada a Objetos
j
Caractersticas
z Modularidad:
{ Subdivisin de una aplicacin en otras ms pequeas (mdulos).
{ Un mdulo es un conjunto de clases.
z Jerarqua
{ Ordenacin de las abstracciones
{ Tipos:
z Herencia (es-un); generalizacin/especializacin
Herencia simple o mltiple
z Agregacin
g g
((parte-de)
p
)
z Polimorfismo
{ Una misma operacin (mtodo) realizada de diferente modo
z comer (vaca,
(
persona, len);
l ) clase
l
mamfero
f
z dibujar (tringulo, cuadrado); clase figura
z Otras propiedades
{ concurrencia (multitarea), persistencia, uso de excepciones
14
Ejemplo
Persona
- nombre
- edad
+ mostrar()
Cliente
Empleado
subordinados
- sueldo_bruto
+ mostrar ()
+ calcular_salario_neto()
empleados
Directivo
- categoria
+ mostrar ()
- nombre_empresa
- telefono_de_contacto
telefono de contacto
+mostrar()
clientes
Empresa
- nombre
15
Ejemplo
e2 : Empleado
e1 : Empleado
- nombre=Mara
- edad=25
- sueldo_bruto
sueldo bruto=36000
36000
empleados
subordinados
d1 : Directivo
-
nombre=Luis
edad=35
sueldo_bruto=36000
categoria=C1
- nombre=Pedro
- edad=23
- sueldo_bruto
sueldo bruto=30000
30000
empleados
empleados
Empresa
- nombre=HGJ
clientes
c1
1 : Cli
Cliente
t
-
nombre=Luis
edad=35
nombre empresa=Macroware
nombre_empresa=
Macroware
telefono_de_contacto=91555666
16
Programacin
g
Orientada a Objetos
j
Modelado del mundo real
z Nombres:
{Objetos
{Propiedades de objetos
z Adjetivos:
{Valores de las propiedades
z Verbos:
{Comportamiento de los objetos
Lenguajes de POO
z Cronologa:
C
l
{ Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969),
g ((1971),
), C (1973),
(
), Smalltalk-80 ((1980),
), C++ (1986),
(
),
Prolog
Object Pascal (1988), CLOS (1989), Java (1995).
{ The jounal of object-oriented programming (1988). Journal of
Object Technology (2002
(2002-)), etc.
etc
{ Muchas conferencias cientficas sobre el tema: OOPSLA,
ECOOP, etc.
{ Smalltalk-80
z Verdadero primer lenguaje de POO
z Concepto
C
t d
de paso d
de mensajes
j ((activacin
ti
i d
de mtodos)
t d )
18
Lenguajes
g j de POO
Clasificaciones
zOrientacin:
O i t i
{puros (Smalltalk)
{hbridos (C++)
zTipificacin:
Tipificacin:
{esttica (en tiempo de compilacin), Object
Pascal
{dinmica (en tiempo de ejecucin), Python
zLigadura:
{esttica (C++)
{dinmica (Java,
(Java C++)
19
Lenguajes
g j de POO
Paradigmas
zClase-Elemento
{ Ninguna
g
clase es objeto
j
z C++
{Toda clase es un objeto
z Smalltalk, Java
zPrototipo-Elemento
{Todo objeto puede ser prototipo de otros
zAmulet
20
Mejor mantenimiento.
Estructuras ms reales de la informacin
informacin.
Escalabilidad.
Adaptabilidad.
Ms apropriada para aplicaciones
dirigidas por eventos.
21
Inconvenientes de POO
zNecesidades de estandarizacin:
{ Notacin de Modelado ((OMG,, Object
j
Management Group).
{ Lenguajes de Programacin.
22
Indice
z Ciclo
Ci l d
de Vid
Vida y C
Calidad
lid d d
dell S
Software.
ft
z Paradigmas de Programacin.
z Programacin Orientada a Objetos
Objetos.
Conceptos de POO
zConceptos principales:
{Clase.
zSimilar al concepto de estructura en Pascal.
), se aaden funciones
zAdems de datos ((atributos),
(mtodos) que operan sobre esos datos.
zEstructuracin (herencia).
Conceptos de POO
zObjetos:
{objeto=datos+mtodos
j
{miembros de un objeto (o clase):
zdatos (atributos)
zmtodos
25
Conceptos
p
de POO
Ejemplo
Clase: Robot
zInstanciacin:
objeto robot1 (Robot)
robot1 = Robot(1,2)
zDatos de clase:
numeroRobots (entero)
26
robot2 = Robot(3)
z Destruccin
{Automtica (Java, Garbage collection)
{Explcita
p
((montn)) o automtica (p
(pila)) ((C++).
)
Destructores.
27
Encapsulamiento
z Miembros privados y pblicos
z Interfaz pblica de una clase (miembros pblicos, datos y mtodos)
28
Encapsulamiento
p
Representacin
clase: Robot
Datos
x
y
Mt d
Mtodos
Robot (entero, entero)
Robot (entero)
void avanzar (entero, entero)
void avanzar (entero)
entero posicionY ()
entero posicionX ()
29
Ejecucin de Mtodos
zUn
U mtodo
t d es una d
definicin
fi i i d
de una
funcin.
{Se dice que un mtodo se ejecuta cuando el
objeto recibe un mensaje de ejecucin del
mtodo.
t d
{Puede acceder a otros miembros de la clase.
zEjemplo:
{Objeto
j
robot1 ((Robot))
{robot1=Robot(3,2)
{robot1.avanzar(1,2)
( , )
30
Herencia
zRepresenta el concepto de ser un tipo
p
de o ser un/a.
especial
zSe establece mediante la definicin de
subclases que dan lugar a una jerarqua
subclases,
de clases.
zLas subclases hijas heredan los datos y
mtodos de las clases padre.
31
Herencia
Ejemplo
z Clase: RobotConFrontera
{ Clase padre: Robot
{ Datos:
z privado limX (entero)
z privado limY (entero)
{ Mtodos:
z void avanzar (entero, entero)
z void avanzar (entero)
z Constructores:
C
t t
RobotConFrontera (entero, entero,
entero, entero)
RobotConFrontera (entero, entero, entero)
{ Instanciacin:
j
robot4 ((RobotConFrontera))
z objeto
z robot4 = RobotConFrontera(1,2,0,0)
32
Herencia
zLa definicin en RobotConFrontera de:
zvoid avanzar ((entero,, entero))
zvoid avanzar (entero)
{es un overriding
overriding (especializacin,
(especializacin redefinicin
redefinicin,
etc) de los mtodos ya definidos en la clase
Robot
33
Herencia
Tipos
zHerencia simple:
zFigura, Crculo, Rectngulo, Cuadrado, Tringulo
zHerencia mltiple:
zPersona, Profesor
zPersona
Profesor, Investigador
Investigador, ProfesorUniversitario
zProblemas de ambigedad
34
Ejemplo
Figura
+dibujar()
dib j ()
+rotar(grad)
Circulo
-radio:
radio: real
+Circulo(r)
+dibujar()
+rotar(grad)
(g )
Rectangulo
-alto: real
-ancho: real
+Rectangulo(alto, ancho)
+dibujar()
+rotar(grad)
t ( d)
Triangulo
-tam1:
tam1: real
-tam2: real
-tam3: real
+Triangulo(t1, t2, t3)
+dibujar()
dib j ()
+rotar(grad)
Cuadrado
+Cuadrado(lado)
(
)
35
Ejemplo
Persona
- nombre
- edad
Investigador
Profesor
- titulacion
tit l i
- centro
- titulacion
ProfesorUniversitario
- categoria
36
Herencia
Clases Abstractas
zClase abstracta:
{No admite una instancia directa. Ejemplo:
j p clase
Figura. Sera invlido
objeto f (Figura)
f=Figura(....)
aunque s sera
vlido
lid
objeto f (Figura)
f=Cuadrado(3)
37
Polimorfismo
zSobrecarga (overloading) de un mtodo:
{En una clase,, el mismo nombre de mtodo
definido de modos distintos
zEjemplo: el mtodo avanzar
avanzar est
sobrecargado en la clase Robot
38
Polimorfismo
z En la programacin convencional
convencional, tambin existe
overloading:
{Ejemplo:
j p Pascal
zprintln(aldfkja)
zprintln(34)
z Overloading
O l di y O
Overriding
idi son casos d
de polimorfismo:
li
fi
{El mismo mtodo definido de modos distintos
z Ligadura dinmica:
{objeto r (Robot)
{r=RobotConFrontera(2,3,0,0)
{Al ejecutar r.avanzar(3), qu definicin se aplica?
la de Robot (ligadura esttica)
la de RobotConFrontera (ligad
(ligad. dinmica)
39
Frameworks
z Conjunto de clases que se coordinan para
realizar una funcin
z Para construir una aplicacin hay que
subclasificarlas.
z Ejemplo:
{MFC (C++).
(C ).
{AWT, Swing (Java).
z El main
main usualmente incluido en el Framework
z Diagramas de clases
{N
{Necesidad
id d d
de un estndar
t d d
de representacin
t i grfica
fi
40
UML
z Diagramas
g
de Estructura
{ Diagramas de clase (condensacin grfica de estructuras de
clases y relaciones entre objetos y clases)
z Diagramas
g
de Comportamiento.
p
41