Professional Documents
Culture Documents
la introduccin de ambigedad
ndice
1
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Sobre el captulo
Motivaciones
En el mundo software, por lo general, se acostumbra a cambiar de lenguaje de
programacin sin cambiar de forma de pensar el software. Siguiendo esta costumbre los
objetos se perciben como otro cambio ms de lenguaje. Es decir, como lo mismo que
antes, pero con ropaje (sintaxis) distinto. Sin embargo, no es as. Los objetos son una
manera cualitativamente distinta de pensar el software. Este hecho se ignora o se
confunde porque el arraigo del pensamiento estructurado, en trminos de funciones y
datos, se niega a cambiar de perspectiva, consciente o inconscientemente. Cualquier
idea acerca de los objetos se traduce al terreno estructurado de forma que los objetos se
interpretan en trminos estructurados y se pierden las ventajas de ambos enfoques.
Objetivos
El presente captulo contrasta el enfoque de objetos y el enfoque estructurado.
Sus objetivos principales son que los alumnos:
Contenido
La primera parte El enfoque estructurado, una manera de pensar el software
describe cmo se aborda la solucin de un problema, tomando como caso particular el
dibujo de figuras geomtricas en la pantalla del ordenador.
2
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
1. Utiliza como universo de discurso una definicin de crculo que est acorde con los
recursos del software; en particular, utiliza la expresin algebraica que define los
puntos de un crculo. Figura 1. 1.
donde el radio R, y las coordenadas del centro x0 e y0 son las constantes que
especifican un crculo en concreto.
3
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Considera que las constantes R, x0, y0 son datos para pintar el crculo y aade
uno ms, el color del crculo.
4
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Si los datos del crculo se deben recibir del exterior del sistema software
entonces se utiliza una funcin adicional para la recepcin y transformacin de los
datos. Esta funcin recibe los datos R, x0, y0, C, provenientes de los equipos
perifricos (teclado, ratn,), transforma su formato y los almacena en forma de
variables software: R, x0, y0, C. Figura 1.3.
5
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
6
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
CrearVentana
PintarVentana vaca
LeerDatos(radio, x0, y0, color) datos del crculo que se pintar dentro de la ventana
7
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
RepintarVentana
//4. Repintar la ventana con el circulo
ventana.setExtendedState(MAXIMIZED_BOTH);
ventana.repaint(); //repaint invoca internamente al mtodo "paint(Graphics g)"
8
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Para recordar todos crculos habra que aadir tantas variables como crculos se
quiera recordar con el objetivo de retener cada conjunto de constantes. El siguiente
sistema (expresado en pseudocdigo) es capaz de pintar y recordar dos crculos:
Se leen los datos de un crculo y se pinta el crculo, despus se leen los datos del
segundo y se pinta.
El nuevo sistema software es una duplicacin del sistema para un crculo. Por
tanto, comparte la misma esencia. El diagrama de flujo de datos slo ha engrosado el
almacn de datos como se aprecia en la Figura 1.5.
9
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
10
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Por ejemplo, el color del crculo debe ser Cc, para distinguirlo del color del
rectngulo Cr. Los vrtices de los rectngulos debern denominarse VR, para
distinguirlos de los vrtices de los tringulos VT. Las funciones tambin debern tener
distintos nombres: PintarCrculo(radio, x0, y0, Cc), PintarRectngulo(VRs, VRi, Cr),
BorrarTringulo(VT1, VT2, VT3 ), etc.
11
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
12
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
g.setColor(color2);
g.drawOval(centrox2-radio2, centroy2-radio2,2*radio2,2*radio2);
g.fillOval(centrox2-radio2, centroy2-radio2,2*radio2,2*radio2);
}
g.dispose();
}
Programa principal
public static void main(String[] args) {
13
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
La Figura 1.7 muestra los elementos software que se asocian a elementos del
discurso: la ventana, los dos crculos y los formularios que recogen las constantes de los
crculos desde el exterior del sistema software. Cada elemento software contiene las
propiedades ntegras de cada elemento del discurso. El elemento crculo1 contiene sus
constantes y los mecanismos para pintarse y crearse como elemento. Igual sucede con el
14
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
crculo2, ventana y los formularios. Estos elementos software son variables software en
un sentido ms amplio que las variables del enfoque estructurado.
2. que la ventana, que contiene los crculos, y los formularios, para leer las
constantes, podran ser otras variables software denominadas,
respectivamente, ventana y formulario:
La Figura 1.8 muestra el sistema software. Se aprecian las relaciones entre las
variables software que ejecutan la tarea de pintar crculos. Este sistema realiza la misma
tarea que el sistema estructurado, aplica el mismo algoritmo, pero est organizado de
forma diferente. Por tanto, tiene propiedades diferentes. Algo semejante a lo que sucede
con las sustancias alotrpicas, por ejemplo el diamante y el grafito que son
qumicamente iguales, pero fsicamente muy diferentes. Despus se estudiarn con
detalle las diferencias de propiedades.
15
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
La Figura 1.8 utiliza smbolos prximos a la notacin estndar UML, pero sin
rigor por razones de simplicidad y conveniencia pedaggica. Las cajas indican objetos y
las flechas relaciones entre ellos. En ningn caso sealan secuencias, ni flujos de datos,
entradas o salidas. Las diferencias entre flechas continuas y discontinuas sern vistas
con posterioridad.
16
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
que lo cre. Al final, el objeto ventana se pinta a s mismo y le solicita a los objetos
crculo1 y crculo2 que se pinten.
Las gafas de visin estructurada podran hacer creer que pensar en objetos es lo
mismo que pensar en mdulos; que el sistema de Figura 1.8 es un sistema estructurado
dividido en mdulos, pero las gafas engaan. Los mdulos estructurados no son
variables software. Mientras que ventana, crculo1, crculo2 y formulario son variables
software que se crean y destruyen dinmicamente; son variables con capacidad para
actuar y recordar.
17
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
18
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Visto en detalle:
Crculo {
19
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Ventana operacin para crear objetos ventana; equivale al Crear de la Figura 1.8
}
Formulario {
Crculo::Crculo {
20
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
La orden de inicio
El sistema inicia el funcionamiento cuando el intrprete o el ejecutor del
lenguaje activa la operacin Comienzo. En este curso se ha usado la palabra Comienzo
para denominar a la operacin de inicio, pero en general debe ser una palabra clave
designada de antemano en el lenguaje. Por ejemplo, los lenguajes C++ y Java utilizan la
palabra Main.
Ventana::Comienzo {
Ventana::Ventana {
caracterizar y pintar la ventana vaca instrucciones internas
crculo1 nuevoCrculo crear el objeto crculo1
crculo2 nuevoCrculo crear el objeto crculo2
repintar la ventana pinta el contenido de la ventana llamando a la operacin pintar
}
Al llamar a la operacin pintar se ejecuta el cdigo para pintar los crculos
21
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Ventana::Pintar {
pintar fondo ventana instrucciones internas
crculo1.pintar se pide a crculo1 que se pinte
crculo2.pintar se pide a crculo2 que se pinte
}
En este caso se ha colocado la operacin de comienzo en el objeto ventana, pero
podra estar situado en otro objeto, destinado especficamente a iniciar del sistema. A
menudo este objeto de inicio recibe el nombre de Principal por rmora o confusin del
enfoque estructurado, pero su nica tarea es dar comienzo al funcionamiento del sistema
software; no contiene el algoritmo principal, como sucede en el enfoque estructurado.
Pensando en el teatro, los objetos son los actores de la obra y los mensajes son
los dilogos entre ellos. El programa describe a los actores, lo que tienen que decir y
hacer. El desarrollo de la obra, que resalta el enfoque estructurado, queda aqu disperso
entre los guiones de los objetos. Es ms difcil ver la secuencia de pasos en un sistema
software de objetos que en un sistema estructurado. Volviendo al teatro, la nica tarea
del mal llamado objeto principal es convocar al pblico y a los actores para que
comience la funcin.
22
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
23
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
});
}
operacin para pintar
public void paint (Graphics g)
{
super.paint(g);
if (circulo1!=null)
circulo1.paint(g); Mensaje a circulo1 para que se pinte
if (circulo2!=null)
circulo2.paint(g); Mensaje a circulo2 para que se pinte
}
new Ventana();
}
}
Definicin de Crculo
public class Circulo extends JComponent{
//Color
private Color color;
}
operacin para pintar
public void paint (Graphics g)
{
24
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
25
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
fieldPane.add(radioTextField);
fieldPane.add(colorField);
if (string.equals("Azul"))
color=Color.BLUE;
else if (string.equals("Verde"))
color=Color.GREEN;
else if (string.equals("Naranja"))
color=Color.ORANGE;
else if (string.equals("Rojo"))
color=Color.RED;
else if (string.equals("Amarillo"))
color=Color.YELLOW;
else if (string.equals("Gris"))
color=Color.GRAY;
else
color=Color.BLACK;
return color;
}
26
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
27
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
28
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
29
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
30
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Las clases y dems elementos por encima de los objetos son parte tambin del
enfoque de objetos y multiplican de manera notable la ambigedad potencial. Por tanto,
multiplican la eficacia del enfoque de objetos. La presencia de esos elementos y la
ambigedad asociada ayudan a simplificar los problemas, pero aaden complejidad al
enfoque de objetos. Es una herramienta ms eficaz, pero ms difcil de manejar. En
ingeniera, casi nada es gratis.
31
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
Gracias a la mayor capacidad expresiva de los objetos se dice a menudo que los
objetos reflejan mejor la realidad. Pero esta idea perjudica, ms que beneficia porque
reflejar la realidad:
32
Curso de OO dirigido por Objetos y Estructurado, dos pensamientos distintos
la introduccin de ambigedad
33