Está en la página 1de 18

Tema 1.

Introduccin a la
Programacin Orientada
a Objetos (OOP)

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Historia
n Programacin estructurada
Se concentra en las acciones secuenciales a realizar
por el programa

n Programacin modular (con tipos de datos)


Agrupa operaciones comunes sobre un tipo de datos

n Programacin orientada a objetos


Es un paradigma de programacin (una filosofa).

Tema 1. Introduccin POO 2

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Ventajas de la POO
n La orientacin a objetos promete una solucin a los
problemas en el desarrollo de software:

Portabilidad
Reusabilidad
Extensibilidad
Comprensin

Tema 1. Introduccin POO 3

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Qu es POO?
n La POO es el mtodo de implementacin en el que
los programas se organizan como colecciones
cooperativas de objetos, cada uno de los cuales
representa un ejemplar de una clase y cuyas clases
son miembros de una jerarqua de clases unidas
mediante relaciones de herencia.
Grady Booch

Tema 1. Introduccin POO 4

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Principios bsicos
n La POO se basa en los siguientes principios:

Abstraccin
Encapsulamiento
Herencia
Polimorfismo

Tema 1. Introduccin POO 5

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Clases y objetos
n El mundo real est lleno de objetos concretos: una
mesa, un coche, etc. cada objeto tiene un estado y
un comportamiento propio.
n Todos los objetos, an siendo nicos , son tambin
parte de una clase de objetos, todos ellos con
caractersticas y comportamientos en comn.
n Este modelo del mundo real se proyecta en el
modelo del software de forma natural.

Tema 1. Introduccin POO 6

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Clases y objetos
n Los objetos software en la POO tienen estas dos
caractersticas del mundo real: mantienen un estado y tienen
un comportamiento.
n Una clase(1) software define la estructura y comportamiento
genrico de un conjunto de objetos, es un patrn o modelo
para crear objetos.
n Una clase software agrupa datos (variables) -para mantener
el estado- y funciones (mtodos) que operan sobre esos
datos -para implementar el comportamiento-.

(1) Una clase se corresponde con la implementacin de un TAD en la POO.

Tema 1. Introduccin POO 7

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Ejemplo: clase
n Por ejemplo: la clase coche tiene unos atributos (potencia,
marca, modelo, en marcha, etc.) que almacenan su estado y
un comportamiento definido en su interfaz (
arrancar,acelerar, girar, frenar, etc.)

class Coche {
// atributos
int potencia;
:
// metodos
void arrancar() { }
:
}

Tema 1. Introduccin POO 8

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Ejemplo: objeto
n Un objeto en POO es una instancia de una
determinada clase (como una variable en un
lenguaje tradicional).
n Ejemplo:

Coche micoche;
micoche = new Coche();

Tema 1. Introduccin POO 9

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Mensajes
n Las peticiones de un servicio se piden al objeto (se
enva un mensaje) invocando los mtodos que
forman su interfaz.
n El objeto se encargar de llevar a cabo la peticin y
averiguar que debe hacer (ejecutar el cdigo
asociado).
n Ejemplo:
micoche.arrancar();

Tema 1. Introduccin POO 10

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Relaciones de clases: uso
n Cuando una clase invoca desde sus mtodos un
servicio de otra clase entre las dos existe una
relacin de uso.
n Ejemplo UML:

Conductor Coche
conduce

Tema 1. Introduccin POO 11

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Relaciones de clases: agregacin

n Es posible utilizar un objeto de una clase dentro de


otra clase como un atributo ms.
n A este tipo de relacin se le denomina agregacin
(en su forma ms general). Ejemplo UML:

Coche Motor

Tema 1. Introduccin POO 12

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Relaciones de clases: herencia
n La herencia permite definir una nueva clase
(llamada subclase clase heredada) a partir de una
clase ya existente (llamada superclase clase
base).
n La clase que hereda incluye por defecto el estado
(atributos) y el comportamiento (mtodos) de la
superclase (reutilizacin de cdigo).
n Las relaciones de herencia dan lugar a una
estructura jerrquica de clases.

Tema 1. Introduccin POO 13

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Relaciones de clases: herencia
n Ejemplo:

Tema 1. Introduccin POO 14

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Relaciones de clases: herencia
n La subclase hereda por defecto la interfaz de la superclase,
o sea, su comportamiento. Todos los mensajes que se
pueden enviar a la superclase tambin se podrn enviar a la
subclase (reutilizacin de interfaz).
n La subclase adems es tambin del mismo tipo que la
superclase, o sea, un crculo es una figura.
n La clase que hereda tiene dos posibilidades para
diferenciarse de la clase base original:
puede aadir nuevos atributos/mtodos a la clase base
(extensin)
puede redefinir los atributos/mtodos ya existentes en la clase
base que hereda (sobrescritura).

Tema 1. Introduccin POO 15

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Polimorfismo
n Relacionado con la herencia, un objeto puede tomar
la forma de sus subclases siguiendo la jerarqua
de relaciones de herencia. Ejemplo:

Circulo c;
Figura f;
:
:
f=c; // OK, un circulo es una figura

Tema 1. Introduccin POO 16

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Asociacin dinmica
n La conversin anterior plantea un problema:
si llamamos ahora a la operacin dibujar() del objeto f que
dibujar() se llamara, el de figura el de circulo?
f.dibujar(); // ?
n En los lenguajes no orientados a objetos no hay discusin:
ser siempre la operacin dibujar() de figura (se resuelve la
llamada en tiempo de compilacin).
n Sin embargo, en los LPOO existe el concepto de ligadura
tarda dinmica: hasta que no se ejecute el programa no se
determinar cul es el mtodo invocado dependiendo de la
clase del objeto en ese instante.

Tema 1. Introduccin POO 17

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com


Bibliografa
n Anlisis y diseo orientado a objetos con
aplicaciones. Grady Booch.
Ver captulos 2-3-4.

n The Unified Modeling Language Reference Manual.


J. Rumbaugh, I.Jacobson, G. Booch.
Referencia completa de UML.

Tema 1. Introduccin POO 18

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

También podría gustarte