You are on page 1of 16

Programacin II

Unidad 1: El paradigma de la programacin


orientada a objetos

Autor: Programacin2
DIATEL/EUITT/UPM

Contenidos
1. Conceptos bsicos de ingeniera del software
2. Metodologa POO de desarrollo software
3. Concepto de clase y objeto
4. Propiedades de la POO
a. Abstraccin
b. Encapsulado
c.

Modularidad

d. Herencia
e. Polimorfismo
f.

Sobrecarga

5. Concepto de diseo orientado a objetos


6. Terminologa y sintaxis de definicin de sistemas
7. Introduccin a UML
Programacin 2

Diapositiva 2

Conceptos bsicos: ingeniera del Software


La ingeniera de software define "un conjunto de etapas
parcialmente ordenadas con la intencin de lograr un objetivo, en
este caso, la obtencin de un producto de software de calidad"
[Jacobson 1998].
El proceso de desarrollo de software "es aquel en que las
necesidades del usuario son traducidas en requerimientos de
software, estos requerimientos transformados en diseo y el diseo

implementado en cdigo, el cdigo es probado, documentado y


certificado para su uso operativo". Concretamente "define quin est
haciendo qu, cundo hacerlo y cmo alcanzar un cierto objetivo"
[Jacobson 1998].

Programacin 2

Diapositiva 3

Programacin estructura vs POO

Existen dos grandes paradigmas para la construccin de


sistemas en las fases de diseo e implementacin:
Programacin estructurada (visto en Programacin I)
Se centra principalmente en abstraccin funcional
Diseo funcional top-down

Programacin orientada a objetos (POO)


Hace hincapi en la abstraccin de datos
Identifica sus atributos, mtodos y las relaciones entre ellos.

"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
Programacin 2

Diapositiva 4

Clases y Objetos

El mundo real est lleno de objetos reales: Una mesa, un coche,


etc.

Cada objeto real tiene unos atributos que modelan su


identidad y un comportamiento propio que le permite
relacionarse con otros objetos.
Este modelo del mundo real se proyecta en el modelo del
software de forma natural.
Los

objetos

software

en

la

POO

modelan

estas

dos

caractersticas del mundo real:


Mantienen un estado (atributos) y
Ofrecen una interfaz (mtodos) para manipularlos.
Programacin 2

Diapositiva 5

Clases y Objetos

Todos los objetos, an siendo nicos, son tambin parte de una

clase de objetos. Comparten:


atributos y
mtodos.
Una clase define la estructura y comportamiento genrico de
un conjunto de objetos. Es un patrn o modelo para crear
objetos.
Cuando se crea un objeto (instanciacin), se debe especificar
la clase a la que pertenece el nuevo objeto.

Programacin 2

Diapositiva 6

Concepto de clase: Ejemplo

La clase Polgono tiene unos


atributos que lo representan, y
que son (por ejemplo) sus
vrtices y su color.
Y unas operaciones (mtodos):
permetro, visualizar, rotar...

Polgono
vrtices
color
Permetro()
Visualizar()
Rotar()
Programacin 2

Un objeto es una instancia de


una clase (un ejemplar), y se
diferencia de otros objetos de su
misma clase, por los valores de
sus atributos (estado) y por su
identidad.

Cuadrado
[(1,3), (3,3), (3,5), (1,5)]
verde
Tringulo
[(1,5), (3,5), (2,6)]
rojo
Diapositiva 7

Propiedades de la POO
Se fundamenta en el uso de conceptos diversos unos novedosos y
otros que se toman de metodologas anteriores:

Programacin 2

Abstraccin
Encapsulado
Modularidad
Herencia
Polimorfismo
Sobrecarga
Diapositiva 8

Propiedades de la POO: Abstraccin


La abstraccin nos va a permitir centrarnos en las caractersticas esenciales
de un objeto, relegando al resto.
Puede definirse como: Proceso mental de extraccin de las caractersticas
esenciales de algo, en un momento concreto, ignorando los detalles
superfluos.

Sin abstraccin no sera posible manejar, ni resolver ciertos problemas ya que


son demasiado complejos con todos sus detalles.
Al abstraernos en la definicin de la clase polgono nos estamos centrando
nicamente en la informacin del polgono que nos interesa para dar solucin
al problema, estos datos son: los vrtices y el color.
Relegamos otras caractersticas, que en este contexto, no son relevantes,
para el problema que se pretende resolver, como puede ser si tiene borde o
no, cul es el centro, etc.

Programacin 2

Diapositiva 9

Abstraccin en la Evolucin de la programacin


Evolucin de los lenguajes en cuanto al nivel de abstraccin
-

CdigoMquina
Ensamblador
LenguajesdeAltoNivel

Abstraccin

ProgramacinEstructurada
ProgramacinModular
TiposAbstractosdeDatos
+

Programacin 2

ProgramacinOrientadaaObjetos
Diapositiva 10

Propiedades de la POO: Encapsulado, Modularidad

Encapsulado: Mecanismo que permite asociar el cdigo


con los datos que manipula, y los mantiene a salvo de
interferencias exteriores y de usos indebidos.
Cada clase ofrece una interfaz que especifica qu
operaciones se pueden realizar con los objetos de esa
clase.
Solamente los propios mtodos internos del objeto
pueden manipular su estado.
Modularidad: Permite dividir la aplicacin en varios
mdulos (clases, paquetes o componentes).

Programacin 2

Diapositiva 11

Propiedades de la POO: Herencia, Polimorfismo, Sobrecarga

Herencia: Proceso por el cual, unas clases heredan


propiedades de otras. Permite establecer una jerarqua
entre las clases.
Polimorfismo: Permite que varias subclases derivadas
de una misma superclase, implementen de manera
diferente un mtodo de la superclase.
Ejemplo: Clculo de la superficie de un polgono.
Sobrecarga: Permite definir varios mtodos con el
mismo nombre, pero con diferentes argumentos.
Ejemplo: Desplazar un polgono, dadas las nuevas
coordenadas, o dado un vector de desplazamiento.
Programacin 2

Diapositiva 12

Diseo se sistemas. Relaciones entre clases: Uso

Cuando una clase invoca desde sus mtodos un servicio


(mtodo) de otra clase entre las dos existe una relacin
de uso.
Ejemplo en notacin UML:
Conductor

Coche
Conduce

Programacin 2

Diapositiva 13

Diseo se sistemas. Relaciones entre clases: agregacin

Uso de un objeto de una clase dentro de otra clase como


un atributo ms.
Ejemplo UML:

Programacin 2

Diapositiva 14

Diseo se sistemas. Relaciones entre clases: herencia

Permite definir subclases, a partir de una ya existente (llamada


superclase clase base) que incluye por defecto el estado
(atributos) y el comportamiento (mtodos) de la superclase
(reutilizacin de cdigo), dando lugar a una estructura jerrquica
de clases.

Programacin 2

Diapositiva 15

Referencias a la bibliografa

3. Clases y Objetos
Seccin 1.6 de Java: How to Program, Ninth Edition
Seccin Chair Wars: (or How Objects Can Change Your Life), captulo 2 de
Head First Java 2nd Edition

4. Propiedades de la POO
Captulo 7 de "Head First Java" 2nd Edition
Secciones 9.1 y 9.2 de Java: How to Program, Ninth Edition

5. Concepto de diseo orientado a objetos


7. Introduccin a UML
Secciones 12.1 a 12.3 de Java: How to Program, Ninth Edition

Programacin 2

Diapositiva 16

You might also like