Está en la página 1de 41

Introduccin a la Programacin

Orientada a Objetos
Tema 1
TACC II
1
TACC II
Curso 2008/09
Indice Indice
Ci l d Vid C lid d d l Ciclo de Vida y Calidad del
Software.
Paradigmas de Programacin.
Programacin Orientada a Objetos.
Conceptos de Programacin Orientada a
Objetos.
Clases Objetos Clases y Objetos
Encapsulamiento.
Herencia Herencia.
Polimorfismo.
Frameworks y Notaciones.
2
y
Ciclo de Vida del Software Ciclo de Vida del Software
Conjunto de fases por las que pasa el sistema
que se est desarrollando desde que nace la
idea inicial hasta que el software es retirado o
reemplazado:
Anlisis.
Diseo.
Codificacin.
Pruebas.
Mantenimiento.
3
Construir Software no es slo programar.
Ciclo de Vida del Software
Distribucin del Esfuerzo
Distribucin del esfuerzo durante el ciclo de vida
Anlisis 6%
40
25
30
35
40
45
o

R
e
l
a
t
i
v
o
(
Anlisis 6%.
Diseo 5%.
Codificacin 7%
11
7
15
13
14
0
5
10
15
20

n
s
r r r
E
s
f
u
e
r
z
o
Codificacin 7%.
Pruebas 15%.
Mantenimiento 67%
A
n

l
i
s
i
s

y

d
i
s
e

o
I
m
p
l
e
m
e
n
t
a
c
i

n
P
r
u
e
b
a
s
A
d
a
p
t
a
r
M
e
j
o
r
a
r
C
o
r
r
e
g
i
r
Mantenimiento 67%.
4
Calidad del Software
Efi i i
Factores de Calidad
Eficiencia
Portabilidad
Facilidad de prueba Facilidad de prueba
Integridad (proteccin contra procesos sin derecho de
acceso) acceso)
Facilidad de uso
Correccin
Fiabilidad (situaciones anmalas)
Extensibilidad
Reutilizacin
Compatibilidad
5
...
Indice Indice
Ci l d Vid C lid d d l S ft Ciclo de Vida y Calidad del Software.
Paradigmas de Programacin. Paradigmas de Programacin.
Programacin Orientada a Objetos.
Conceptos de Programacin Orientada a Conceptos de Programacin Orientada a
Objetos.
Clases y Objetos Clases y Objetos
Encapsulamiento.
Herencia Herencia.
Polimorfismo.
Frameworks y Notaciones
6
Frameworks y Notaciones.
Paradigmas de Programacin g g
Abstraccin
Capacidad para encapsular y aislar la
informacin del diseo y ejecucin. y j
Mecanismos en programacin:
P di i t f i Procedimientos y funciones
Tipos abstractos de datos (TAD)
Clases: son TAD a los que se aaden
mecanismos como herencia, mtodos, etc.
7
Paradigmas de Programacin Paradigmas de Programacin
Estructurada Estructurada.
Fortran.
Basic.
Pascal
Desde principios de los 70.
Pascal.
C.

Funcional
esde p c pos de os 0
Dificultad para el trabajo en grupo.
No hay correspondencia estrecha entre
d t l
Funcional.
Lisp.

Lgica
datos reales y programas.
Lgica.
Prolog.

POO POO.
Smalltalk.
C++.
J ava
8
J ava.

Indice Indice
Ci l d Vid C lid d d l S ft Ciclo de Vida y Calidad del Software.
Paradigmas de Programacin.
Programacin Orientada a Objetos.
Conceptos de Programacin Orientada a Conceptos de Programacin Orientada a
Objetos.
Clases y Objetos Clases y Objetos
Encapsulamiento.
Herencia. e e c a
Polimorfismo.
Frameworks y Notaciones.
9
y
Programacin Orientada a Objetos Programacin Orientada a Objetos
Ventajas de uso:
Reusabilidad (mecanismos de abstraccin y ( y
herencia)
En programacin convencional: uso de En programacin convencional: uso de
funciones y procedimientos
Adecuacin a entornos de bases de datos Adecuacin a entornos de bases de datos.
Idnea para tratamiento de Interfaces de Usuario.
Ad d t ti i l i Adecuada en prototipos y simulacin.
10
Programacin Orientada a Objetos g j
Caractersticas Generales
Construccin de sistemas complejos a
partir de componentes. p p
M d l d fi l d l d l Modelado ms fiel del mundo real.
Estimacin de reduccin de 40% con
respecto a la programacin con encional respecto a la programacin convencional.
11
Programacin Orientada a Objetos g j
Caractersticas
El modelo objeto (Booch, 1994):
Abstraccin Abstraccin
Las caractersticas esenciales del objeto:
Documento: insertar borrar Documento: insertar, borrar, ...
Una grapadora: rellenar, grapar, ...
E l i t ( lt i d i f i ) Encapsulamiento (ocultacin de informacin)
Una clase contiene:
una interfaz pblica.
una implementacin.
12
Ejemplo
I
Ejemplo
Persona
- nombre
- edad
Persona
n
f
o
r
m
a
c
i
+mostrar()
+setNombre(string)
I
n
t
e
r
f
a
z
- id
- setID()
+mostrar()
tN b ( t i )

n

p
r
i
v
a
d
+getNombre(): string
+setEdad(int)
+getEdad(): int
z

p

b
l
i
c
a
+setNombre(string)
+getNombre(): string
+setEdad(int)
+getEdad(): int
d
a
getEdad(): int
Clases,
Tipos
especificacin
p1 Persona p2 Persona
Objetos,
instancias
especificacin
ejecucin
p1 : Persona
- nombre=Pedro
- edad=23
id=3456789K
p2 : Persona
- nombre=Mara
- edad=25
id=55567876G
13
- id= 3456789K - id= 55567876G
Programacin Orientada a Objetos
Modularidad:
g j
Caractersticas
Modularidad:
Subdivisin de una aplicacin en otras ms pequeas (mdulos).
Un mdulo es un conjunto de clases.
J erarqua
Ordenacin de las abstracciones
Tipos:
Herencia (es-un); generalizacin/especializacin
Herencia simple o mltiple
Agregacin (parte-de) g g ( p )
Polimorfismo
Una misma operacin (mtodo) realizada de diferente modo
( l ) l f comer (vaca, persona, len); clase mamfero
dibujar (tringulo, cuadrado); clase figura
Otras propiedades
14
Otras propiedades
concurrencia (multitarea), persistencia, uso de excepciones
Ejemplo Ejemplo
nombre
Persona
+ mostrar()
- nombre
- edad
()
- sueldo_bruto
- nombre_empresa
telefono de contacto
Empleado Cliente
subordinados
+mostrar()
+ mostrar ()
+ calcular_salario_neto()
- telefono_de_contacto
empleados
clientes
- categoria
Directivo
Empresa
15
+ mostrar ()
categoria
- nombre
Ejemplo
e1 : Empleado e2 : Empleado
Ejemplo
e1 : Empleado
- nombre=Pedro
- edad=23
- sueldo bruto=30000
e2 : Empleado
- nombre=Mara
- edad=25
- sueldo bruto=36000 sueldo_bruto 30000 sueldo_bruto 36000
subordinados
empleados empleados
d1 : Directivo
- nombre=Luis
Empresa
- nombre=HGJ
empleados
- edad=35
- sueldo_bruto=36000
- categoria=C1
1 Cli t
clientes
c1 : Cliente
- nombre=Luis
- edad=35
nombre empresa=Macroware
16
- nombre_empresa= Macroware
- telefono_de_contacto=91555666
Programacin Orientada a Objetos g j
Modelado del mundo real
Nombres:
Objetos
Propiedades de objetos
Adjetivos:
Valores de las propiedades
Verbos:
Comportamiento de los objetos
El coche tiene color rojo y se mueve
El d t ti l t d t
17
El documento tiene letra grande y se muestra
Lenguajes de POO Lenguajes de POO
C l Cronologa:
Fortran (1958), LISP (1959), BASIC (1964), Pascal (1969),
Prolog (1971), C (1973), Smalltalk-80 (1980), C++ (1986), g ( ), ( ), ( ), ( ),
Object Pascal (1988), CLOS (1989), J ava (1995).
The jounal of object-oriented programming (1988). Journal of
Object Technology (2002-) etc Object Technology (2002 ), etc.
Muchas conferencias cientficas sobre el tema: OOPSLA,
ECOOP, etc.
Primeros lenguajes POO:
Simula-67
Objeto (datos+mtodos) Clase Herencia Objeto (datos+mtodos). Clase. Herencia.
Smalltalk-80
Verdadero primer lenguaje de POO
C t d d j ( ti i d t d )
18
Concepto de paso de mensajes (activacin de mtodos)
Lenguajes de POO
O i t i
g j
Clasificaciones
Orientacin:
puros (Smalltalk)
hbridos (C++)
Tipificacin: Tipificacin:
esttica (en tiempo de compilacin), Object
Pascal
dinmica (en tiempo de ejecucin), Python
Ligadura: Ligadura:
esttica (C++)
dinmica (J ava C++)
19
dinmica (J ava, C++)
Lenguajes de POO g j
Paradigmas
Clase-Elemento
Ninguna clase es objeto g j
C++
Toda clase es un objeto Toda clase es un objeto
Smalltalk, J ava
Prototipo-Elemento
Todo objeto puede ser prototipo de otros Todo objeto puede ser prototipo de otros
Amulet
20
Otras Ventajas de POO Otras Ventajas de POO
Mejor mantenimiento.
Estructuras ms reales de la informacin Estructuras ms reales de la informacin.
Escalabilidad.
Adaptabilidad.
Ms apropriada para aplicaciones Ms apropriada para aplicaciones
dirigidas por eventos.
21
Inconvenientes de POO Inconvenientes de POO
Necesidades de estandarizacin:
Notacin de Modelado (OMG, Object ( , j
Management Group).
Lenguajes de Programacin. Lenguajes de Programacin.
Coste de conversin de software legado
22
Indice Indice
Ci l d Vid C lid d d l S ft Ciclo de Vida y Calidad del Software.
Paradigmas de Programacin.
Programacin Orientada a Objetos Programacin Orientada a Objetos.
Conceptos de Programacin Orientada
Obj t a Objetos.
Clases y Objetos
Encapsulamiento.
Herencia.
Polimorfismo.
Frameworks y Notaciones
23
Frameworks y Notaciones.
Conceptos de POO Conceptos de POO
Conceptos principales:
Clase.
Similar al concepto de estructura en Pascal.
Adems de datos (atributos), se aaden funciones ( ),
(mtodos) que operan sobre esos datos.
Estructuracin(herencia).
Objeto (una instancia de una clase)
J erarqua de herencia entre clases. J erarqua de herencia entre clases.
Herencia de atributos y mtodos.
24
Conceptos de POO Conceptos de POO
Objetos:
objeto=datos+mtodos j
miembros de un objeto (o clase):
datos (atributos) datos (atributos)
mtodos
identificador del objeto identificador del objeto
nombre de variable
25
Conceptos de POO
Clase: Robot
p
Ejemplo
Clase: Robot
Datos: x (entero), y (entero)
Mtodos: Mtodos:
void avanzar (entero, entero)
entero posicionX ()
entero posicionY () entero posicionY ()
void avanzar (entero)
Constructores:
R b t ( t t ) Robot (entero, entero)
Robot (entero)
Instanciacin:
objeto robot1 (Robot)
robot1 = Robot(1,2)
Datos de clase:
26
Datos de clase:
numeroRobots (entero)
Creacin y Destruccin de Objetos Creacin y Destruccin de Objetos
Equivalencia de conceptos con programacin Equivalencia de conceptos con programacin
clsica:
Tipo Clase Tipo Clase
Dato Objeto
Variable: existe en ambos tipos de programacin p p g
Creacin (uso de constructor):
Ejemplo: Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)
Destruccin Destruccin
Automtica (J ava, Garbage collection)
Explcita (montn) o automtica (pila) (C++).
27
p ( ) (p ) ( )
Destructores.
Encapsulamiento Encapsulamiento
Miembros privados y pblicos
Interfaz pblica de una clase (miembros pblicos, datos y mtodos)
Se pueden invocar desde fuera de la clase
Ejemplo (clase Robot) Ejemplo (clase Robot)
Datos:
privado x (entero)
privado y (entero)
Mtodos:
pblico void avanzar (entero entero) pblico void avanzar (entero, entero)
pblico entero posicionX ()
pblico entero posicionY ()
pblico void avanzar (entero)
Constructores:
pblico Robot (entero entero)
28
pblico Robot (entero, entero)
pblico Robot (entero)
Encapsulamiento
clase: Robot
p
Representacin
clase: Robot
Datos
x
Mt d
x
y
Mtodos
Robot (entero, entero)
void avanzar (entero, entero)
Robot (entero)
void avanzar (entero)
entero posicionY ()
29
entero posicionX ()
Ejecucin de Mtodos Ejecucin de Mtodos
U t d d fi i i d Un mtodo es una definicin de una
funcin.
Se dice que un mtodo se ejecuta cuando el
objeto recibe un mensaje de ejecucin del
t d mtodo.
Puede acceder a otros miembros de la clase.
Ejemplo:
Objeto robot1 (Robot) j ( )
robot1=Robot(3,2)
robot1.avanzar(1,2)
30
( , )
Herencia Herencia
Representa el concepto de ser un tipo
especial de o ser un/a. p
Se establece mediante la definicin de
subclases que dan lugar a una jerarqua subclases, que dan lugar a una jerarqua
de clases.
Las subclases hijas heredan los datos y
mtodos de las clases padre. mtodos de las clases padre.
31
Herencia
Clase: RobotConFrontera
Ejemplo
Clase: RobotConFrontera
Clase padre: Robot
Datos:
privado limX (entero)
privado limY (entero)
Mtodos: Mtodos:
void avanzar (entero, entero)
void avanzar (entero)
C t t Constructores:
RobotConFrontera (entero, entero,
entero, entero)
RobotConFrontera (entero, entero, entero)
Instanciacin:
objeto robot4 (RobotConFrontera)
32
j ( )
robot4 = RobotConFrontera(1,2,0,0)
Herencia Herencia
La definicin en RobotConFrontera de:
void avanzar (entero, entero) ( , )
void avanzar (entero)
es un overriding(especializacin redefinicin es un overriding (especializacin, redefinicin,
etc) de los mtodos ya definidos en la clase
Robot Robot
33
Herencia
Tipos
Herencia simple:
Figura, Crculo, Rectngulo, Cuadrado, Tringulo
Herencia mltiple:
Persona Profesor Investigador ProfesorUniversitario Persona, Profesor, Investigador, ProfesorUniversitario
Problemas de ambigedad
34
Ejemplo Ejemplo
Figura
dib j () +dibujar()
+rotar(grad)
Circulo
radio: real
Rectangulo
-alto: real
Triangulo
-tam1: real
-radio: real
-alto: real
-ancho: real
+Circulo(r)
+dibujar()
+rotar(grad)
+Rectangulo(alto, ancho)
+dibujar()
t ( d)
tam1: real
-tam2: real
-tam3: real
+Triangulo(t1, t2, t3)
dib j ()
(g )
+rotar(grad) +dibujar()
+rotar(grad)
Cuadrado
+Cuadrado(lado)
35
( )
Ejemplo Ejemplo
- nombre
Persona
- edad
tit l i
Profesor Investigador
- titulacion - titulacion
- centro
ProfesorUniversitario
- categoria
ProfesorUniversitario
36
Herencia
Clases Abstractas
Clase abstracta:
No admite una instancia directa. Ejemplo: clase j p
Figura. Sera invlido
objeto f (Figura) objeto f (Figura)
f=Figura(....)
lid aunque s sera vlido
objeto f (Figura)
f=Cuadrado(3)
37
Polimorfismo Polimorfismo
Sobrecarga (overloading) de un mtodo:
En una clase, el mismo nombre de mtodo ,
definido de modos distintos
Ejemplo: el mtodo avanzarest Ejemplo: el mtodo avanzar est
sobrecargado en la clase Robot
38
Polimorfismo
En la programacin convencional tambin existe
Polimorfismo
En la programacin convencional, tambin existe
overloading:
Ejemplo: Pascal j p
println(aldfkja)
println(34)
O l di O idi d li fi Overloading y Overriding son casos de polimorfismo:
El mismo mtodo definido de modos distintos
Ligadura dinmica: 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 dinmica)
39
la de RobotConFrontera (ligad. dinmica)
Frameworks Frameworks
Conjunto de clases que se coordinan para
realizar una funcin
Para construir una aplicacin hay que
subclasificarlas.
Ejemplo:
MFC (C++). MFC (C ).
AWT, Swing (J ava).
El mainusualmente incluido en el Framework El main usualmente incluido en el Framework
Diagramas de clases
N id dd t d d t i fi
40
Necesidad de un estndar de representacin grfica
UML UML
Diagramas de Estructura g
Diagramas de clase (condensacin grfica de estructuras de
clases y relaciones entre objetos y clases)
Diagramas de Comportamiento. g p
41

También podría gustarte