Sie sind auf Seite 1von 28

Programacin Orientada a Objetos

Isidro Gonzlez Caballero


(Universidad de Oviedo)

Tcnicas de Comp. en Fsica


Santander, 08/11/2010

Introduccin

Los problemas suelen tener varias soluciones posibles.


En programacin existen diversas metodologas que nos
ayudan a enfrentar un problema.
Cada metodologa tiene diversos lenguajes que las
soportan.

Algunos lenguajes soportan varias metodologas.

Metodologa
Estructurada

Lenguaje
Fortran, C, Pascal, Basic

Orientada a objetos
(OOP)

C++, Java, Smalltalk

Orientada a eventos

VisualBasic

Programacin Orientada a Objetos


Definicin:
La Programacin Orientada a Objetos (OOP) es un
mtodo de programacin en el cual los programas se
organizan en colecciones cooperativas de objetos,
cada uno de los cuales representa una instancia de
alguna clase, y cuyas clases son, todas ellas,
miembros de una jerarqua de clases unidas
mediante relaciones de herencia.
Comentarios:

Usamos objetos en lugar de algoritmos como bloque fundamental


Cada objeto es una instancia de una clase
Las clases estn relacionadas entre s por relaciones tan
complejas como la herencia

Ventajas de la POO
Proximidad

de los conceptos modelados


respecto a objetos del mundo real
Facilita la reutilizacin de cdigo

Y por tanto el mantenimiento del mismo

Se

pueden usar conceptos comunes durante


las fases de anlisis, diseo e implementacin
Disipa las barreras entre el qu y el cmo

Desventajas de la POO
Mayor

complejidad a la hora de entender el


flujo de datos

Prdida de linealidad

Requiere

de un lenguaje de modelizacin de
problemas ms elaborado:

Unified Modelling Language (UML)


Representaciones grficas ms complicadas

Conceptos de la OOP
Conceptos bsicos
Objeto
Clase
Caractersticas de la OOP
Abstraccin:
Encapsulamiento:
Modularidad:
Jerarqua
Otros conceptos OOP
Tipos
Persistencia

Tipos de relaciones
Asociacin
Herencia
Agregacin
Instanciacin
Representaciones grficas
Diagramas estticos (de
clases, de objetos...)
Diagramas dinmicos (de
interaccin...)

Objeto y Clase
Un objeto es algo de lo
que hablamos y que
podemos manipular

Existen en el mundo real (o


en nuestro entendimiento del
mismo)

Objeto:Clase
Atributo1=valor
Atributo2=valor
...

Una clase describe los


objetos del mismo tipo

Todos los objetos son


instancias de una clase
Describe las propiedades y el
comportamiento de un tipo de
objetos

Clase
Atributos
Operaciones

Conceptos OOP: Abstraccin

Nos permite trabajar con la complejidad del mundo real

Resaltando los aspectos relevantes de los objetos de una clase


Ocultando los detalles particulares de cada objeto

Separaremos el comportamiento de la implementacin


Es ms importante saber qu se hace en lugar de cmo se
hace:
Un sensor de temperatura
Se define porque...
mide la temperatura
nos muestra su valor
se puede calibrar...

No sabemos... (no nos importa)


cmo mide la temperatura
de qu est hecho
cmo se calibra

Conceptos OOP: Abstraccin


La

abstraccin no es nica:

Un coche puede ser...


Una cosa con ruedas, motor, volante
y pedales (conductor)
Algo capaz de transportar personas
(taxista)
Una caja que se mueve (simulador
de trfico)
Conjunto de piezas (fabricante)

Conceptos OOP: Encapsulamiento


Ninguna

parte de un sistema complejo debe


depender de los detalles internos de otra.
Complementa a la abstraccin
Se consigue:

Separando la interfaz de su implementacin


Ocultando la informacin interna de un objeto
Escondiendo la estructura e implementacin de los
mtodos (algoritmos).
Exponiendo solo la forma de interactuar con el
objeto

Conceptos OOP: Encapsulamiento


Ejemplo: Un paralelogramo

Vemos que se puede...


Construir con:
4 puntos (y restricciones)
1 punto y 2 vectores
1 punto, 1 vector, 1 ngulo
y 1 lado
Transformaciones:
Escalado
Rotacin
Desplazamiento
Dibujar

No vemos...
Como est representado
internamente
4 puntos?
1 punto y 2 vectores?
...
Como se modifica su escala
Guardando el factor?
Escalando en el momento?
Idem para rotacin, traslacin,
etc...

Conceptos OOP: Modularidad

Consiste en separar el sistema en bloques poco


ligados entre s: mdulos.
Organizacin del cdigo
Es una especie de encapsulamiento de ms alto nivel.
El C++ no lo impone aunque lo soporta
(namespace)
El Java es ms formal (packages)
Difcil pero muy importante en sistemas grandes.
Suele aplicarse refinando el sistema en sucesivas
iteraciones
Cada mdulo debe definir una interfaz clara

Conceptos OOP: Modularidad


Ejemplo: Simulacin detector de AAEE
Puede dividirse en los siguientes mdulos...
1.
Geometra: Describe el detector
fsicamente (forma, materiales, tamao)
2.
Partculas: Las partculas cuyas
interacciones nos interesan
3.
Procesos: Aqu enlazamos la informacin
del detector (materia) con las propiedades
de las partculas.
4.
...

Podramos dividir el mdulo de procesos en procesos


electromagnticos, procesos hadrnicos, ...
Lo mismo podramos hacerlo con las partculas: leptones,
hadrones, ...

Conceptos POO: Jerarqua


Es

una clasificacin u ordenamiento de las


abstracciones
Hay dos jerarquas fundamentales:

Estructura de clases:
Jerarqua

es un/a
Relaciones de herencia

Estructura de objetos:
Jerarqua

parte de
Relaciones de agregacin
Est implementada de manera genrica en la estructura
de clases

Conceptos OOP: Jerarqua


Ejemplo: Figuras planas y diagramas

Una figura plana es:

Algo con una posicin en el


plano
Escalable
Rotable

Herencia simple
Un cuadrado es una figura
Un crculo es una figura

Un grfico es algo que se


puede dibujar en 2D

Herencia mltiple

Un diagrama es un conjunto
de cuadrados y crculos

Agregacin

es una figura
es un grfico

Conceptos OOP: Tipo


Es

el reforzamiento del concepto de clase


Objetos de tipo diferente no pueden ser
intercambiados
El C++ y el Java son lenguajes fuertemente
tipeados
Ayuda a corregir errores en tiempo de
compilacin

Mejor que en tiempo de ejecucin

Conceptos OOP: Persistencia

Propiedad de un objeto de trascender en el tiempo y


en el espacio a su creador (programa que lo gener)
No se trata de almacenar slo el estado de un objeto
sino toda la clase (incluido su comportamiento)
No est directamente soportado por el C++

Existen libreras y sistemas completos (OODBMS) que


facilitan la tarea
Frameworks (entornos) como ROOT lo soportan parcialmente
(reflex)

El concepto de serializacin del Java est


directamente relacionado con la persistencia

Relaciones
Estn

presentes en cualquier sistema


Definen como se producen los intercambios de
informacin y datos
Tambin ayudan a comprender las
propiedades de unas clases a partir de las
propiedades de otras
Existen 4 tipos de relaciones:

Asociacin
Herencia
Agregacin
Instanciacin

Relacin de Asociacin

Relacin ms general
Denota una dependencia semntica
Es bidireccional
Primer paso para determinar una relacin
ms compleja
Ejemplo: Relacin entre un producto y una venta. Cualquier venta
est asociada a un producto, pero no es, ni forma parte de, ni
posee ningn producto al menos en una primera aproximacin.

Cardinalidad: multiplicidad a cada lado

Uno a uno: Venta-Transaccin


Uno a muchos: Producto-Venta
Muchos a muchos: Comprador-Vendedor

Relacin de Herencia
Relacin

caracterstica de la OOP!
Puede expresar tanto especializacin
como generalizacin
Evita definir repetidas veces
las caractersticas comunes a
varias clases
Una de las clases comparte la estructura
y/o el comportamiento de otra(s)
clase(s).
Tambin se denomina relacin es un/a
(is a)

Relacin de Herencia (vocabulario)

Clase base o superclase: clase de la cual se hereda


Clase derivada o subclase: clase que hereda
Herencia simple: Hereda de una sola clase
Herencia mltiple: Hereda de varias clases

Java solo la soporta parcialmente


Presenta diversos problemas (qu hacer cuando se hereda
ms de una vez de la misma clase?)

Clase abstracta: La que no lleva, ni puede llevar,


ningn objeto asociado
Polimorfismo: Posibilidad de usar indistintamente
todos los objetos de un clase y derivadas.

Relacin de Herencia (ejemplo)


Polimorfismo
Clase abstracta

Tringulo

Figura plana

Equiltero

Issceles

Escaleno

Herencia simple
Rectngulo

Superclase

Cuadrado

Subclase

Relacin de Agregacin
Una

clase contiene a otra


clase

sta es parte de aqulla.

Tambin

se denomina
relacin es parte de (has a)
Una clase puede contener a otra:

Por valor: Cuando los objetos de la clase contenida


se crean y destruyen al mismo tiempo que los de la
clase continente
Por referencia: Cuando no necesariamente ocurre lo
anterior

Relacin de Agregacin
Un coche est hecho de
Volante
Palanca de cambio
Motor
Ruedas
Coche

Volante

Marchas

Motor

Ruedas

Relacin de Instanciacin
En

determinados casos una clase (p.ej. un


vector) puede implementarse
independientemente del tipo (real, complejo,
color...) de alguno de sus atributos:

Tipo

Definimos una clase


Vector
parametrizada o template
(plantilla)
Para cada uno de los tipos
que necesitemos
VectorColores
definimos una nueva
<Color>
clase Instanciacin

VectorEnteros
<int>

Representaciones grficas

Nos sirven para comunicarnos con otros usuarios o


desarrolladores.
Documentan nuestro sistema
Hay mltiples vistas y tipos de diagramas:

Estticos
Diagramas de clases Los de los ejemplos
Diagramas de objetos
...

Dinmicos:
Diagramas de estado: Muestra el ciclo de vida de los objetos,
sistemas, etc...
Diagramas secuenciales: Muestra como los objetos interaccionan
entre ellos
...

Diagrama de estado: Un ascensor


En el primer
piso

subir

Subiendo

llegu

llegu

subir

Bajando al
primer piso
Bajando

llegu
bajar

time-out

Parado

Diagrama secuencial: Impresin


Ordenador

Servidor

Impresora

Imprime (fichero) [impr. Libre]


Imprime (fichero)

Cola

[impr. ocupada]
Almacena (fichero)

Das könnte Ihnen auch gefallen