Relaciones, herencia, java

Solo disponible en BuenasTareas
  • Páginas : 9 (2051 palabras )
  • Descarga(s) : 9
  • Publicado : 10 de agosto de 2010
Leer documento completo
Vista previa del texto
Más Conceptos de Orientación a Objetos
Peter Müller Globewide Network Academy (GNA) pmueller@uu-gna.mit.edu Para referencias consultar sitio: http://www.desy.de/gna/html/cc/Tutorial/Spanish/node6.htm

Considerando que la lección anterior introduce los conceptos fundamentales de la programación orientada a objetos, esta lección presenta más detalles acerca de la idea de orientación a objetos.Esta sección es adoptada principalmente de:

Relaciones
En el ejercicio 3.6.5 tu ya has investigado relaciones entre los tipos de datos abstractos y sus instancias, y las has descrito en tus propias palabras. Vayamos aquí más al detalle.

Relacion De-La-Especie
Considera que has escrito un programa para dibujar. Este programa debería permitir el dibujo de variados objetos tales como puntos,rectángulos, triángulos y muchos más. Por cada objeto, tu provees una definición de clase. Por ejemplo, la clase Point define un punto por sus coordenadas :
class Point { attributes: int x, y methods: setX(int newX) getX() setY(int newY) getY() }

Tú continúas definiendo clases de tu programa de dibujo con una clase para describir círculos. Un círculo define un punto central y un radio :
classCircle { attributes: int x, y, radius methods: setX(int newX) getX() setY(int newY) getY() setRadius(newRadius) getRadius() }

Comparando ambas definiciones de clase, podemos observar lo siguiente :


• •

Ambas clases tienen dos elementos de datos x y y. En la clase Point estos elementos describen la posición del punto, en el caso de la clase Circle describen el centro del círculo. Así,x y y tienen el mismo significado en ambas clases: Describen la posición de su objeto asociado por medio de la definición de un punto. Ambas clases ofrecen el mismo conjunto de métodos para obtener y definir el valor de los dos elementos de datos x and y. La clase Circle "añade'' un nuevo elemento de datos radius y sus correspondientes métodos de acceso.

Conociendo las propiedades de la clasePoint podemos describir un círculo como un punto más un radio más métodos para accesarlo. Así, un círculo es "de-la-especie" Point. Sin embargo, un círculo es algo más "especializado". Ilustramos ésto gráficamente en la Figura 5.1.

Figura 5.1: Ilustración de la relación "de-la-especie".

En ésta y en las siguiente figuras, las clases se dibujan usando rectángulos. Su nombre siempre empieza conuna letra mayúscula. Las flechas indican la dirección de la relación, de ahí que se deba leer como "Circle es de-la-especie Point".

Relación Es-Un(a)
La relación anterior se usa al nivel de clase para describir las relaciones entre dos clases similares. Si creamos objectos de tales clases, nos referimos a su relación como una relación "es-un(a)". Desde el momento que la clase Circle es de laespecie de la clase Point, una instancia de Circle, digamos acircle, es un point . Consecuentemente, cada círculo se comporta como un punto. Por ejemplo, tú puedes mover puntos en la dirección x al alterar el valor de x. Similarmente, tú mueves círculos en ésta dirección al alterar su valor de x. La Figura 5.2 ilustra esta relación. En ésta y en las siguientes figuras, los objetos se dibujanusando rectángulos con las esquinas redondeadas. Su nombre consiste solamente de letras minúsculas.

Figura 5.2: Ilustración de la relación "es-un(a)".

Relación Parte-De
Algunas veces necesitas poder construir objetos haciendo una combinación de otros. Tú ya sabes ésto por la programación procedimental, donde tú tienes la estructura o registro para juntar variados tipos de datos. Regresemos anuestro programa de dibujo. Tú ya has creado varias clases para las figuras disponibles. Ahora decides que quieres tener una figura especial que representa tu propio logotipo que consite en un círculo y un triángulo. (Asumamos que tú ya tienes definida un clase Triangle.) De este modo, tu logo consiste en dos partes o, el círculo y el triángulo son parte-de tu logotipo:
class Logo { attributes:...
tracking img