Las sentencias 2-4
imponan las clases necesarias para construir la clase PanelDibujo. Se importan todas las clases del package java. awt. La clase ArrayList y la
interface Iterator pertenecen al package java.util. y sirven para tratar colecciones o conjuntos, en este
caso conjuntos de figuras dibujables.
La sentencia 5
indica que la clase PanelDibujo deriva de la clase Panel, heredando de ésta y de sus super-clases Container y Component todas sus capacidades gráficas. La
sentencia 7 (prívate ArrayList v;) crea una variable miembro v que es una referencia a un objeto de
la clase ArrayList (nótese que no es un objeto, sino una referencia o un nombre de objeto). Las
sentencias 9-12 definen el constructor de la clase, que recibe como argumento una referencia va a un
objeto de la clase ArrayList. En esta lista estarán almacenadas las referencias a los objetos
-rectángulos y círculos- que van a ser dibujados. En la sentencia 10 (super (new FlowLayout o );) se
llama al constructor de la super-clase panel, pasándole como argumento un objeto recién creado de la
clase FlowLayout. Como se verá más adelante al hablar de construcción de interfaces gráficas con
el AWT. la clase FlowLayout se ocupa de distribuir de una deteiminada forma (de izquierda a
derecha y de arriba abajo) los componentes gráficos que se añaden a un "container" tal
como la clase Panel. En este caso no tiene mucha importancia, pero conviene utilizarlo.
Hay que introducir
ahora un aspecto muy importante de Java y. en general, de la programación orientada a objetos. Tiene que ver con algo que es conocido con el
nombre de Polimorfismo. La idea básica es que una referencia a un objeto de una
determinada clase es capaz de sen-ir de referencia o de nombre a objetos de cualquiera de sus clases
derivadas. Por ejemplo, es posible en Java hacer lo siguiente:
Geometría geoml,
geom2;
geoml = new
RectanguloGrafico(0, 0, 200, 100, Color.red);
geom2 = new
CirculoGrafico(200, 200, 100, Color.blue);
Obsérvese que se
han creado dos referencias de la clase Geometría que posteriormente apuntan a objetos de las clases derivadas RectauguloGrafico y CirculoGrafico.
Sin embargo, hay una cierta limitación en lo que se puede hacer con las referencias geoml y
geom2. Por ser referencias a la clase Geometría sólo se pueden utilizar las capacidades
definidas en dicha clase, que se reducen a la utilización de los métodos perimetroQ y areaQ.
De la misma forma
que se ha visto con la clase base Geometría, en Java es posible utilizar una referencia del tipo correspondiente a una interface para manejar objetos de
clases que implementan dicha interface. Por ejemplo, es posible escribir:
Dibujable dibl,
dib2;
dibl = new
RectanguloGrafico(0, 0, 200, 100, Color.red);
dib2 = new
CirculoGrafico(200, 200, 100, Color.blue);
No hay comentarios:
Publicar un comentario