Documentos de Académico
Documentos de Profesional
Documentos de Cultura
POO Ok
POO Ok
qxd
1/18/05
14:12
Page 15
JAVA
Captulo
Programacin
orientada
a objetos
En este captulo vamos a entrar
en la teora de objetos. Describiremos
cules son las principales caractersticas
de este paradigma, y veremos
qu son los objetos, las clases
y los mtodos.
Analizaremos cmo se piensan los
sistemas en funcin de este modelo
y, hacia el final del captulo, haremos
una pequea introduccin en UML.
El paradigma de programacin
Propiedades y comportamiento
de los objetos
Propuesta de un modelo
de diseo
Diagramas de clases
Diagramas de casos de uso
Diagramas de interaccin
o comportamiento
Diagramas de implementacin
Resumen
Actividades
16
16
20
22
23
23
25
25
26
01_Java.qxd
1/18/05
14:12
Page 16
JAVA
EL PARADIGMA DE PROGRAMACIN
Cuando usamos una computadora, lo que estamos buscando es simplemente una
solucin a un problema, y para que resuelva dicho problema debemos decirle cmo
hacerlo, ya que, en rigor de la verdad, las computadoras no pueden ms que sumar
bits y mover bytes de un lugar a otro. Nuestra tarea como programadores es, entonces, indicarle a la computadora qu es lo que queremos que haga; para ello debemos utilizar un lenguaje particular.
El lenguaje que entiende una computadora se denomina binario, pero como ste
es difcil de leer y escribir para nosotros, debemos usar un lenguaje intermedio que
luego ser traducido a binario. El lenguaje, entonces, es una herramienta que nos
servir para indicarle a la computadora qu pasos debe seguir para resolver el problema en cuestin. Ahora bien, el modo en que especifiquemos la solucin depender del paradigma de programacin que usemos.
Dicho paradigma no es ms que un modelo que representa un enfoque particular
para la construccin de sistemas. No hay uno mejor que otro, sino que cada uno
tiene ventajas y desventajas. Por otro lado, hay situaciones en que un paradigma resulta ms adecuado que otro. El paradigma que vamos a desarrollar en el presente
libro es el de Programacin Orientada a Objetos (POO).
usr.code
1/18/05
14:12
Page 17
los mtodos arranca, frena, dobla, etc., a travs de los cuales podemos interactuar con el objeto (Figura 1).
Auto
motor
ruedas
atributos
asientos
arranca()
frena()
mtodos
dobla ()
Por otro lado, cabe aclarar que el comportamiento es exclusivo del objeto; si bien
algunos objetos a simple vista son iguales, internamente pueden ser muy distintos.
Por ejemplo, si aprendemos a manejar en un automvil con motor diesel, podremos sin ningn problema manejar uno que funcione con nafta. Es decir, los dos objetos se nos presentan de igual forma, pero es indiscutible que los motores son muy
distintos. Esto se conoce como encapsulamiento: los objetos presentan la misma
interfaz pero ocultan informacin de su funcionamiento.
Gracias al encapsulamiento se puede cambiar un objeto por otro que presente la
misma interfaz, y todo debera funcionar igual.
En segundo lugar vale mencionar que el encapsulamiento protege tambin al objeto de usos indebidos e inapropiados. Volvamos al ejemplo anterior para detallar
un poco ms esta situacin. El automvil utilizar otros mecanismos para llevar a
cabo su interfaz, como, por ejemplo, abrir vlvulas, mover pistones, etc., que no
les permitir usar a otros objetos (Figura 2).
DEPENDER DE NOSOTROS...
Ahora que conoceremos los conceptos bsicos del paradigma, vale agregar que el xito o el fracaso de nuestro programa depender de la capacidad que tengamos para reconocer los objetos
que trabajarn en conjunto para resolver el problema deseado.
usr.code
El paradigma de programacin
01_Java.qxd
17
01_Java.qxd
1/18/05
14:12
Page 18
JAVA
Auto
Conductor
motor
ruedas
asientos
arranca()
frena()
dobla ()
abrirValvulas()
moverPistones()
usr.code
1/18/05
14:12
Page 19
hacer andar un automvil que un avin, de forma tal que necesitamos agregar el
mtodo anda en automvil, para que ruede, y en avin para que vuele. Esto se
denomina polimorfismo, y nos permite tener muchas formas de comportamiento; o sea que la referencia al mtodo anda producir el comportamiento correcto
segn el objeto al que se lo est ordenando.
Para ordenarle a un objeto que haga algo, debemos mandarle un mensaje. A travs de
los mensajes establecemos la comunicacin entre los objetos de forma tal que les ordenamos ejecutar un mtodo con algunos parmetros. En la Figura 2 veamos que el conductor le ordenaba al auto que arrancara; esta orden se la daba a travs de un mensaje.
Revisando el ejemplo del transporte, el automvil y el avin, notamos que el grfico evidencia una jerarqua: a la cabeza est el transporte, y de ste cuelgan el
avin y el automvil. En este paradigma, esto se denomina jerarqua de herencia (Figura 3). Notamos, tambin, que dicha jerarqua siempre tiene forma de rbol. Entonces encontramos una nueva agrupacin de nivel superior. En resumen,
los objetos se agrupan en clases, y las clases, en rboles, siempre y cuando reflejen
un comportamiento comn.
Transporte
Automvi
Avin
Una clase no est limitada a comportarse slo como lo define su padre, sino que, adems, puede definir un comportamiento propio, es decir que se pueden agregar nuevos mtodos en ella.
Veremos ms sobre este aspecto a lo largo de este libro.
usr.code
19
El paradigma de programacin
01_Java.qxd
01_Java.qxd
1/18/05
14:12
Page 20
JAVA
Pero, a su vez, la radio tiene otros componentes, como display, botones, etc. Al igual
que en otros mbitos, aqu nos encontramos ante una jerarqua de elementos. sta
se denomina jerarqua de composicin, y sirve para representar que uno o varios
objetos estn dentro de otro que los contiene (Figura 4).
Automvi
Volante
Radio
Peda
CajaDeCambio
Para finalizar, si tenemos un solo objeto automvil, no significa que nuestro programa podr tener un solo automvil. Para entender esto hay que agregar el concepto de
instancia, que nos permite crear la cantidad de automviles que deseemos. Por ejemplo, si nuestro objeto automvil tiene una propiedad color, podemos tener instancias de automvil con la propiedad color en rojo, azul o verde. Para lograr esto, cada objeto deber tener un mtodo, que nos permita crear una instancia de ste.
- Ficha
- Casilla
- Computadora
- Humano
usr.code
1/18/05
14:12
Page 21
Una vez que estemos seguros de haber determinado todos nuestros objetos, debemos agregarle a cada uno atributos y mtodos, para definir su comportamiento.
Comenzando por Tablero, el atributo ms importante que encontraremos son las
casillas; para simplificar el ejemplo, agregaremos nueve (ms adelante veremos cmo se puede optimizar esta solucin). Entre los mtodos tenemos ponerFicha(), sacarFicha() y, para verificar si hay un ganador, buscarTaTeTi().
Siguiendo por la Casilla, vemos dos atributos: uno es color, ya que las casillas de un
tablero pueden ser de dos colores distintos, imitando al tablero de las damas; el otro
es el objeto ficha, al cual le pondremos el nombre iFicha, para determinar que es
una instancia del objeto ficha.
Finalmente, tenemos el objeto Jugador, que tiene tres instancias del objeto ficha.
Por otra parte, estn el objeto humano, que tiene un atributo nombre, y el objeto
Computadora, al que agregaremos un atributo inteligencia para que nuestro TATE-TI contemple varios niveles de juego.
Una vez determinados los atributos y los mtodos de cada objeto, procedemos a dibujar la jerarqua de herencias. De esta manera, vemos que tanto el Humano como la
Computadora son jugadores, y ambos juegan con fichas. En otras palabras, tendremos
Jugador, y debajo de ste, Humano y Computadora, como lo indica la Figura 5.
Jugador
Computadora
Humano
Tablero
Jugador
Casilla
Fichas
21
01_Java.qxd
01_Java.qxd
1/18/05
14:12
Page 22
JAVA
Diagramas de clases
Los diagramas de clases representan un conjunto de elementos del modelo que son
estticos, como las clases y los tipos, sus contenidos y las relaciones que se establecen entre ellos (Figura 7).
Jugador
Tablero
Ficha1
Casilla
Ficha2
Ficha3
elegirCasilla()
ponerFicha()
sacarFicha()
22
usr.code
1/18/05
14:12
Page 23
Humano
Tablero
Computadora
Computadora
Diagrama de secuencia
El diagrama de secuencia muestra la interaccin entre los objetos que tiene lugar a
travs del intercambio de mensajes (Figura 9).
Humano
PonerFicha()
Tablero
23
01_Java.qxd
01_Java.qxd
1/18/05
14:12
Page 24
JAVA
Diagrama de estados
Este diagrama muestra los estados posibles que puede tomar nuestro sistema de
acuerdo con los estmulos que recibe (Figura 10).
Estado inicia
Estado1
Tablero vaco
Estado2
Tablero con fichas
TA-TE-T
Estado
final
Diagrama de actividades
La funcin del diagrama de actividades es de suma importancia, ya que muestra la
actividad de cada clase en particular (Figura 11).
Esperar ficha
Guardar ficha
Hay TA-TE-T
24
usr.code
1/18/05
14:12
Page 25
Diagrama de colaboracin
Este diagrama muestra cmo colaboran los objetos entre s para lograr el objetivo
comn (Figura 12).
Crear jugador
Humano
Crear fichas
Computadora
Diagramas de implementacin
Por ltimo, los diagramas de implementacin muestran los aspectos fsicos del sistema. Incluyen la estructura del cdigo fuente y la implementacin.
RESUMEN
En este captulo vimos las caractersticas principales del paradigma orientado a objetos, intentando dar un pantallazo de la teora que despus desarrollaremos a lo largo del libro,
cuando ya estemos escribiendo cdigo. Para cerrar este captulo, conocimos las diferentes
formas de modelar un sistema a travs de los diagramas.
usr.code
25
01_Java.qxd
01_Java.qxd
1/18/05
14:12
Page 26
ACTIVIDADES
TEST DE AUTOEVALUACIN
1 Qu es un objeto?
Auto
motor
ruedas
atributos
Humano
asientos
PonerFicha()
Tablero
arranca()
frena()
mtodos
dobla ()
6 Qu es herencia?
2 Qu diferencia existe entre clase, objeto e
Transporte
instancia?
Automvi
3 Qu es un mtodo?
Auto
motor
Avin
Conductor
7 Qu es polimorfismo?
ruedas
asientos
arranca()
frena()
dobla ()
abrirValvulas()
moverPistones()
26
usr.code