Sie sind auf Seite 1von 11

Programacin Orientada a Objetos

Conceptos tericos
David Contreras Brcena - ICAI
57
2.2.- Paradigmas de la POO



Los principios propios de la orientacin a objetos
son:
2.2.1.- Abstraccin de Datos
2.2.2.- Encapsulamiento
2.2.3.- Ocultamiento
2.2.4.- Herencia
2.2.5.- Polimorfismo
Cualquier lenguaje POO tiene que poseer estos
conceptos.
David Contreras Brcena - ICAI
58
2.2.- Abstraccin



Visin de un problema que extrae la informacin
esencial para un determinado propsito, omitiendo
los detalles menos significativos.
Puede existir diferentes niveles de abstraccin.
Existe dos tipos:
Funcional
De datos
Un objeto es una abstraccin de la realidad.
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
59
2.2.- Encapsulamiento



Es un agrupamiento bajo un mismo nombre
de la informacin y las operaciones que acceden
a ella .
Materializa la abstraccin. Los objetos son
encapsulaciones de abstracciones.
Paquete de informacin y operaciones.
hora
da
numSerie
modelo
David Contreras Brcena - ICAI
60
2.2.- Ocultamiento de la Informacin



Principio por el cual solo es accesible el interfaz
del objeto.
Los mtodos no son utilizados por su
implementacin (contenido), sino por su interfaz
(aspecto).
Concepto complementado con el de
encapsulamiento.
Objetivo final: Restringir el acceso a los mtodos.

NOTA: Para ms informacin acerca de ocultamiento consultar el manual de Java. (pg 103)
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
61
2.2.- Ocultamiento de la Informacin



En java se consigue gracias a los modificadores
de acceso.
Estos pueden afectar a la clase, a los atributos
y/o mtodos.
Modificadores:
public: Objetos de todas las clases pueden acceder al
mtodo con este modificador.
protected: Slo objetos de las clases heredadas y las
del paquete.
(defecto): Slo objetos de las clases del paquete.
private: Slo objetos de la misma clase.
David Contreras Brcena - ICAI
62
2.2.- Herencia



La herencia permite crear una clase nueva que
tenga el mismo comportamiento que otra, y
adems extienda o adapte ese comportamiento a
unas necesidades especficas.
Permite especializar o refinar una clase, y/o
generalizar conceptos de otras clase ya existentes.
En la especializacin, la nueva clase creada
tomar o heredar los atributos y mtodos de la
clase padre, los cuales se aadirn a los definidos
por la propia clase.

Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
63
HERENCIA
2.2.- Herencia



mostrarDa
mostrarHora
incrementarDa:
limpiarPantalla
traducirFrecuencia
marca
--
hora
da
numSerie
mostrarMarca
Clase Reloj
Nos piden crear un
modelo informtico de
una fbrica de relojes.
Su modelo de reloj es
nico: solo muestra la
hora y el da
Dicha fbrica desea
sacar al mercado un
nuevo modelo de reloj
con cronmetro
Para ello, disearemos
este nuevo modelo de
reloj apoyndonos en el
concepto de herencia, el
cual nos permite la
reutilizacin de software
Definiremos la nueva
clase con las nuevas
caractersticas que
introduce al reloj ya
existente
Las instancias que
creemos de la clase
RelojCrono tendrn
como datos y mtodos
los de la clase Reloj y
los de su clase
activarCrono
mostrarCrono
cronoHora
cronoMin
cronSeg
inicicializarCrono
Clase RelojCrono
David Contreras Brcena - ICAI
64
2.2.- Herencia
class Reloj
{
//atributos
static String MARCA; //atributo de clase
String hora; //Tomamos un tipo String para simplificar
String dia; //idem
int numSerie;
//mtodos
...
}

class RelojCrono extends Reloj
{
//atributos
int cronoHora;
int cronoMin;
int cronSeg;
//mtodos
...
}
nicamente se definen los atributos y
mtodos que aaden o refinan el
comportamiento.
Las ocurrencias de la clase RelojCrono
dispondrn de los atributos y mtodos
definidos en su clase ms los de la clase
padre.
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
65
2.2.- Herencia Mltiple



Se da este concepto cuando una clase hereda de
varias superclases. La mayora de los lenguajes no
soportan esta caracterstica.
Clase
MAMIFERO
Clase
HOMBRE
Clase
LOBO
Clase
HOMBRE
LOBO
David Contreras Brcena - ICAI
66
2.2.- Polimorfismo



Consiste en utilizar un mismo smbolo para fines
distintos.
Respuesta distinta frente a un mensaje
dependiendo de la naturaleza del objeto.

Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
67
2.2.- Polimorfismo



Supongamos que tenemos relojes, uno analgico y otro
digital. Cada reloj tiene un mtodo para adelantar una hora.
No tiene ningn sentido que si los dos hacen lo mismo
(cada uno a su manera), se tenga que llamar con nombres
distintos. Cada vez que invoquemos el mtodo
adelantarHora de cada reloj, cada uno lo har a su
manera.
Tenemos distintos objetos grficos (cuadrados,
circunferencias, tringulos,...) y todos tienen un mtodo
pintar. Cuando yo lance un mensaje sobre cada objeto
invocando el mtodo pintar, cada uno se pintar a su
manera.
David Contreras Brcena - ICAI
68
2.2.- Polimorfismo en la herencia:
Redefinicin



Cuando se crea una clase heredada de una
superclase, heredar todos los mtodos.
Si la implementacin de uno de los mtodos no se
ajusta al comportamiento de la nueva clase, se
podr variar dicha implementacin.
Se dice entonces que se est redefiniendo el
mtodo.
Habr que diferenciar esta idea del concepto de
sobrecarga. Se dice que se est sobrecargando un
mtodo cuando se define otro con el mismo
nombre pero con argumentos diferentes.
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
69
C
pintar
A
pintar
A
pintar()
2.2.- Polimorfismo en la herencia:
Redefinicin



Cuando el polimorfismo se produce entre las clases
heredadas, los mensajes son tratados de la siguiente forma:

miC.pintar();
B

C

A
pintar()
C
pintar()
miC.pintar();
B
pintar()
miC es una
ocurrencia
de la clase C

David Contreras Brcena - ICAI
70
2.2.- Clases Abstractas



Las clases abstractas son aquellas que se utilizan
en la herencia y slo las utilizaremos para que
definan el interfaz (qu hacen) y/o la
implementacin (cmo lo hacen) de las clases
heredadas.
No se podr crear ocurrencias de ellas. Se utilizan
para que las caractersticas de esta clase estn
disponibles para sus clases heredadas.
Es una forma de generalizar un comportamiento y,
por lo tanto, reutilizar cdigo.

Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
71
2.2.- Paradigmas de la POO - Clases
Abstractas



Supongamos que queremos modelizar todos los
vehculos a motor (coches, motos, lanchas, ...).
VehculosAMotor
Coches Motos Lanchas
herencia
Existe en la vida real algn
objeto que sea un vehculo a
motor? NO
Existen coches , motos, etc...
La clase VehiculosAMotor
nos servir para reutilizar sus
mtodos y datos, pero no
para crear ocurrencias de
ella.

NOTA: Para ver ejemplos en JAVA. (pg 73)
David Contreras Brcena - ICAI
72
2.2.- Paradigmas de la POO - Clases
Abstractas - Interfaz



Las clases abstractas nos presentarn el interfaz, es
decir, a qu mtodos son capaces de responder las
ocurrencias de sus clases heredadas.
La implementacin de ese interfaz podr estar
definida en la clase abstracta o en la subclase.
Si una clase abstracta slo define el interfaz, se
dice que es una clase abstracta pura (en Java se
denominan interfaces).
Se permite la herencia mltiple de clases
interfaces.
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
73
2.2.- Paradigmas de la POO - Clases
Abstractas - Clases y tipos



Se habla que una clase define la clase o el tipo...
Clase, cuando se defina cmo se implementa el objeto
(estado interno y operaciones).
Tipo, cuando se haga referencia solamente a su interfaz,
conjunto de peticiones a las que puede responder.
Por lo tanto, la clase define tambin el tipo de
objeto.
David Contreras Brcena - ICAI
74
2.2.- Paradigmas de la POO - Clases
Abstractas - Clases y tipos



Se podr hablar tambin de herencia de clase y tipo:
Herencia de Clase: Mecanismo para compartir cdigo y
representacin (comportamiento).
Herencia de Tipo: Un objeto puede ser usado en lugar
de otro, ya que define lo que hace y no cmo lo hace. La
herencia de tipo tiene que llevar asociado el concepto de
polimorfismo en la herencia, ya que si slo se define lo
que va a hacer, alguna clase tendr que redefinir dicho
mtodo e implementarlo. Estos mtodos debern ser
definidos como abstractos.

Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
75
2.2.- Paradigmas de la POO - Clases
Abstractas - Clases y tipos



Si nos basamos en la herencia de tipo, vemos que podemos
utilizar objetos en lugar de otros (define lo que va a hacer,
pero no cmo).
Yo podr referirme a la clase
abstracta, aun cuando desee
referirme a alguno de sus hijos.
La clase abstracta se utiliza en
lugar de las clases heredadas.
Estos conceptos se aclararn
cuando se vea el diseo (DOO).

VehculosAMotor
Coches Motos Lanchas
Herencia de tipo
Clase Abstracta Pura
(slo interfaz)
NOTA: Para ver ejemplos en JAVA. (pg 73)
David Contreras Brcena - ICAI
76
2.2.- Paradigmas de la POO - Clases
Abstractas Puras - Interfaces



A las clases abstractas puras, en JAVA, las denominamos
interfaces.
Todos los mtodos de un interface son abstractos, por lo
que debern ser implementados por las clases heredadas.
Permiten hacer visible las similitudes entre dos clases sin
modificar la jerarqua de clase.
Fuerza a las clases a implementar ciertos mtodos.
Las interfaces proporcionan el mecanismo necesario para
implementar la herencia mltiple.
NOTA: Para ver ejemplos en JAVA. (pg 74)
Programacin Orientada a Objetos
Conceptos tericos
David Contreras Brcena - ICAI
77
Bibliografa
Introduccin a la programacin con JAVA-Un
enfoque orientado a objetos David Arnow
(Adisson Wesley) - 2002.
Perdita Stevens - Utilizacin de UML (Adisson
Wesley) - 2002.
Craig Larman - UML y Patrones (Prentice Hall)
2002.

Das könnte Ihnen auch gefallen