Está en la página 1de 41

Introduccin a la Programacin

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

Ciclo de Vida del Software


z 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.

z Construir Software no es slo programar.

Ciclo de Vida del Software


Distribucin del Esfuerzo

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(

Distribucin del esfuerzo durante el ciclo de vida

Calidad del Software


Factores de Calidad
z
z
z
z
z
z
z
z
z
z
z

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

zCapacidad para encapsular y aislar la


j
informacin del diseo y ejecucin.
zMecanismos en programacin:
{ Procedimientos
P
di i t y ffunciones
i
{ Tipos abstractos de datos (TAD)
{ Clases: son TAD a los que se aaden
mecanismos como herencia, mtodos, etc.

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.

zProgramacin Orientada a Objetos.


z Conceptos de Programacin Orientada a
Objetos.
{ Clases y Objetos
{ Encapsulamiento.
{ Herencia.
e e ca
{ Polimorfismo.
{ Frameworks y Notaciones.
9

Programacin Orientada a Objetos


zVentajas de uso:
{ Reusabilidad ((mecanismos de abstraccin y
herencia)
z En programacin convencional: uso de
funciones y procedimientos
{ Adecuacin a entornos de bases de datos.
datos
{ Idnea para tratamiento de Interfaces de Usuario.
{ Adecuada
Ad
d en prototipos
t ti
y simulacin.
i l i

10

Programacin
g
Orientada a Objetos
j
Caractersticas Generales

zConstruccin de sistemas complejos a


partir de componentes.
p
p
zModelado
M d l d ms
fifiell d
dell mundo
d real.
l
zEstimacin de reduccin de 40% con
respecto a la programacin con
convencional.
encional
11

Programacin
g
Orientada a Objetos
j
Caractersticas

z El modelo objeto (Booch, 1994):


{ Abstraccin
z Las caractersticas esenciales del objeto:
Documento: insertar,
insertar borrar,
borrar ...
Una grapadora: rellenar, grapar, ...
{ Encapsulamiento
E
l i t ((ocultacin
lt i d
de iinformacin)
f
i )
Una clase contiene:
una interfaz pblica.
una implementacin.
12

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

El coche tiene color rojo y se mueve


El documento
d
t tiene
ti
l t grande
letra
d y se muestra
t
17

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.

z Primeros lenguajes POO:


{ Simula-67
z Objeto (datos+mtodos).
(datos+mtodos) Clase.
Clase Herencia
Herencia.

{ 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

Otras Ventajas de POO


z
z
z
z
z

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.

zCoste de conversin de software legado

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.

zConceptos de Programacin Orientada


a Objetos.
Obj t
{ Clases y Objetos
{ Encapsulamiento.
{ Herencia.
{ Polimorfismo.
{ Frameworks y Notaciones
Notaciones.
23

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).

{Objeto (una instancia de una clase)


{Jerarqua de herencia entre clases.
zHerencia de atributos y mtodos.
24

Conceptos de POO
zObjetos:
{objeto=datos+mtodos
j
{miembros de un objeto (o clase):
zdatos (atributos)
zmtodos

{identificador del objeto


znombre de variable

25

Conceptos
p
de POO
Ejemplo

Clase: Robot

z Datos: x (entero), y (entero)


z Mtodos:

void avanzar (entero, entero)


entero posicionX ()
entero posicionY ()
void avanzar (entero)
Constructores:
R b t ((entero,
Robot
t
entero)
t )
Robot (entero)

zInstanciacin:
objeto robot1 (Robot)
robot1 = Robot(1,2)

zDatos de clase:
numeroRobots (entero)

26

Creacin y Destruccin de Objetos


z Equivalencia de conceptos con programacin
clsica:
{Tipo Clase
{Dato Objeto
{Variable: existe en ambos tipos
p de p
programacin
g

z Creacin (uso de constructor):


{Ejemplo:
robot1 = Robot(1,2)

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)

z Se pueden invocar desde fuera de la clase


z Ejemplo (clase Robot)
z Datos:
privado x (entero)
privado y (entero)
z Mtodos:
pblico void avanzar (entero
(entero, entero)
pblico entero posicionX ()
pblico entero posicionY ()
pblico void avanzar (entero)
z Constructores:
pblico Robot (entero
(entero, entero)
pblico Robot (entero)

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

También podría gustarte