Está en la página 1de 41

Introduccin a la Programacin Orientada a Objetos

Tema 1

TACC II Curso 2008/09 1

Indice
Ciclo d Vid Ci l de Vida y Calidad del C lid d d l Software.
Paradigmas de Programacin. Programacin Orientada a Objetos. Conceptos de Programacin Orientada a Objetos.
Clases y Objetos Encapsulamiento. Herencia. Herencia Polimorfismo. Frameworks y Notaciones.
2

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.

Construir Software no es slo programar.

Ciclo de Vida del Software


Distribucin del Esfuerzo

Distribucin del esfuerzo durante el ciclo de vida

Im pl em en ta ci n

di se o

Pr ue ba s

An l is is

C or re gi r
4

Ad ap ta r

M ej or ar

Anlisis 6% 6%. Diseo 5%. Codificacin 7% 7%. Pruebas 15%. Mantenimiento 67% 67%.

45 40 35 30 25 20 15 10 5 0

Esfuerzo Relativo( o

40

11

15 7

13

14

Calidad del Software


Factores de Calidad
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
Ciclo d Vida C lid d del Software. Ci l de Vid y Calidad d l S ft

Paradigmas de Programacin.
Programacin Orientada a Objetos. Conceptos de Programacin Orientada a Objetos.
Clases y Objetos Encapsulamiento. Herencia. Herencia Polimorfismo. Frameworks y Notaciones Notaciones.
6

Paradigmas de Programacin g g
Abstraccin

Capacidad para encapsular y aislar la j informacin del diseo y ejecucin. Mecanismos en programacin:
Procedimientos y f P di i t funciones i Tipos abstractos de datos (TAD) Clases: son TAD a los que se aaden mecanismos como herencia, mtodos, etc.

Paradigmas de Programacin
Estructurada. Estructurada
Fortran. Basic. Pascal. Pascal C.

Funcional. Funcional
Lisp.

Desde p c p os de los 70. esde principios os 0 Dificultad para el trabajo en grupo. No hay correspondencia estrecha entre datos d t reales y programas. l

Lgica. Lgica
Prolog.

POO. POO
Smalltalk. C++. Java. Java

Indice
Ciclo d Vida C lid d del Software. Ci l de Vid y Calidad d l S ft Paradigmas de Programacin.

Programacin Orientada a Objetos.


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

Programacin Orientada a Objetos


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

10

Programacin Orientada a Objetos g j


Caractersticas Generales

Construccin de sistemas complejos a p partir de componentes. p Modelado fiel del M d l d ms fi l d l mundo real. d l Estimacin de reduccin de 40% con respecto a la programacin con encional convencional.
11

Programacin Orientada a Objetos g j


Caractersticas

El modelo objeto (Booch, 1994):


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

Ejemplo
Persona Interfaz pblica z
+mostrar() +setNombre(string) +getNombre(): string +setEdad(int) +getEdad(): int

Informacin privad da

Persona
- nombre - edad - id - setID() +mostrar() +setNombre(string) tN b ( t i ) +getNombre(): string +setEdad(int) +getEdad(): int getEdad():

Clases, Tipos Objetos, instancias

especificacin ejecucin p2 : Persona


- nombre=Mara - edad=25 - id=55567876G id= 55567876G

p1 : Persona
- nombre=Pedro - edad=23 - id=3456789K id= 3456789K
13

Programacin Orientada a Objetos g j


Caractersticas
Modularidad: Subdivisin de una aplicacin en otras ms pequeas (mdulos). Un mdulo es un conjunto de clases. Jerarqua Ordenacin de las abstracciones Tipos: Herencia (es-un); generalizacin/especializacin
Herencia simple o mltiple

Agregacin ( p g g (parte-de) ) Polimorfismo Una misma operacin (mtodo) realizada de diferente modo comer ( (vaca, persona, len); clase mamfero l ) l f dibujar (tringulo, cuadrado); clase figura Otras propiedades concurrencia (multitarea), persistencia, uso de excepciones

14

Ejemplo
Persona
- nombre - edad + mostrar()

Empleado
subordinados - sueldo_bruto + mostrar () + calcular_salario_neto() empleados

Cliente
- nombre_empresa - telefono de contacto telefono_de_contacto +mostrar() clientes

Directivo
- categoria + mostrar ()

Empresa
- nombre
15

Ejemplo
e2 : Empleado
- nombre=Mara - edad=25 - sueldo bruto=36000 sueldo_bruto 36000 empleados subordinados

e1 : Empleado
- nombre=Pedro - edad=23 - sueldo bruto=30000 sueldo_bruto 30000 empleados

d1 : Directivo
nombre=Luis edad=35 sueldo_bruto=36000 categoria=C1

empleados

Empresa
- nombre=HGJ

clientes

c1 : Cli t 1 Cliente
nombre=Luis edad=35 nombre_empresa= Macroware nombre empresa=Macroware telefono_de_contacto=91555666

16

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 documento ti t tiene l t grande y se muestra letra d t
17

Lenguajes de POO
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 ), etc (2002-) etc. Muchas conferencias cientficas sobre el tema: OOPSLA, ECOOP, etc.

Primeros lenguajes POO:


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

Smalltalk-80
Verdadero primer lenguaje de POO Concepto d paso d mensajes ( ti C t de de j (activacin d mtodos) i de t d )
18

Lenguajes de POO g j
Clasificaciones

Orientacin: O i t i
puros (Smalltalk) hbridos (C++)

Tipificacin:
esttica (en tiempo de compilacin), Object Pascal dinmica (en tiempo de ejecucin), Python

Ligadura:
esttica (C++) dinmica (Java, C++) (Java
19

Lenguajes de POO g j
Paradigmas

Clase-Elemento
Ninguna clase es objeto g j C++ Toda clase es un objeto Smalltalk, Java

Prototipo-Elemento
Todo objeto puede ser prototipo de otros Amulet
20

Otras Ventajas de POO


Mejor mantenimiento. Estructuras ms reales de la informacin informacin. Escalabilidad. Adaptabilidad. Ms apropriada para aplicaciones dirigidas por eventos.

21

Inconvenientes de POO
Necesidades de estandarizacin:
Notacin de Modelado (OMG, Object ( , j Management Group). Lenguajes de Programacin.

Coste de conversin de software legado

22

Indice
Ciclo de Vida Calidad del Software. Ci l d Vid y C lid d d l S ft Paradigmas de Programacin. Programacin Orientada a Objetos Objetos.

Conceptos de Programacin Orientada a Obj t Objetos.


Clases y Objetos Encapsulamiento. Herencia. Polimorfismo. Frameworks y Notaciones Notaciones.
23

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) Jerarqua de herencia entre clases.


Herencia de atributos y mtodos.
24

Conceptos de POO
Objetos:
objeto=datos+mtodos j miembros de un objeto (o clase):
datos (atributos) mtodos

identificador del objeto


nombre de variable

25

Conceptos de POO p
Ejemplo
Clase: Robot

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


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

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

Datos de clase:
numeroRobots (entero)
26

Creacin y Destruccin de Objetos


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

Creacin (uso de constructor):


Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)

Destruccin
Automtica (Java, Garbage collection) Explcita ( p (montn) o automtica (p ) ( ) (pila) (C++). ) Destructores.

27

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) Datos: privado x (entero) privado y (entero) Mtodos: pblico void avanzar (entero entero) (entero, pblico entero posicionX () pblico entero posicionY () pblico void avanzar (entero) Constructores: pblico Robot (entero entero) (entero, pblico Robot (entero)

28

Encapsulamiento p
Representacin
clase: Robot Datos x y Mtodos Mt d Robot (entero, entero) Robot (entero) void avanzar (entero, entero) void avanzar (entero) entero posicionY () entero posicionX ()

29

Ejecucin de Mtodos
Un t d U mtodo es una d fi i i d una definicin de 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.

Ejemplo:
Objeto robot1 ( j (Robot) ) robot1=Robot(3,2) robot1.avanzar(1,2) ( , )
30

Herencia
Representa el concepto de ser un tipo p especial de o ser un/a. Se establece mediante la definicin de subclases, subclases que dan lugar a una jerarqua de clases. Las subclases hijas heredan los datos y mtodos de las clases padre.

31

Herencia
Ejemplo
Clase: RobotConFrontera
Clase padre: Robot Datos: privado limX (entero) privado limY (entero) Mtodos: void avanzar (entero, entero) void avanzar (entero) Constructores: C t t RobotConFrontera (entero, entero, entero, entero) RobotConFrontera (entero, entero, entero) Instanciacin: j (RobotConFrontera) ) objeto robot4 ( robot4 = RobotConFrontera(1,2,0,0)

32

Herencia
La definicin en RobotConFrontera de:
void avanzar (entero, entero) ( , ) void avanzar (entero) es un overriding (especializacin redefinicin overriding (especializacin, redefinicin, etc) de los mtodos ya definidos en la clase Robot

33

Herencia
Tipos

Herencia simple:
Figura, Crculo, Rectngulo, Cuadrado, Tringulo

Herencia mltiple:
Persona, Profesor, Investigador, Persona Profesor Investigador ProfesorUniversitario Problemas de ambigedad

34

Ejemplo

Figura +dibujar() dib j () +rotar(grad)

Circulo -radio: real radio: +Circulo(r) +dibujar() +rotar(grad) (g )

Rectangulo -alto: real -ancho: real +Rectangulo(alto, ancho) +dibujar() +rotar(grad) t ( d)

Triangulo -tam1: real tam1: -tam2: real -tam3: real +Triangulo(t1, t2, t3) +dibujar() dib j () +rotar(grad)

Cuadrado +Cuadrado(lado) ( )
35

Ejemplo

Persona
- nombre - edad

Profesor
- titulacion

Investigador
- tit l i titulacion - centro

ProfesorUniversitario
- categoria

36

Herencia
Clases Abstractas

Clase abstracta:
No admite una instancia directa. Ejemplo: clase j p Figura. Sera invlido objeto f (Figura) f=Figura(....) aunque s sera vlido lid objeto f (Figura) f=Cuadrado(3)
37

Polimorfismo
Sobrecarga (overloading) de un mtodo:
En una clase, el mismo nombre de mtodo , definido de modos distintos Ejemplo: el mtodo avanzar est avanzar sobrecargado en la clase Robot

38

Polimorfismo
En la programacin convencional tambin existe convencional, overloading: Ejemplo: Pascal j p println(aldfkja) println(34) Overloading Overriding son casos d polimorfismo: O l di y O idi de li fi El mismo mtodo definido de modos distintos 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) (ligad.
39

Frameworks
Conjunto de clases que se coordinan para realizar una funcin Para construir una aplicacin hay que subclasificarlas. Ejemplo:
MFC (C++). (C ). AWT, Swing (Java).

El main usualmente incluido en el Framework main Diagramas de clases


Necesidad d un estndar d representacin grfica N id d de t d de t i fi
40

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