Base de Datos Docente: Ing. Emilio Rearte



Descargar 0,66 Mb.
Página4/7
Fecha de conversión12.01.2017
Tamaño0,66 Mb.
1   2   3   4   5   6   7

public : Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.





  • private : Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar).





  • protected : Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia).

Relaciones entre Clases


Existen tres relaciones diferentes entre clases, Dependencias, Generalización y Asociación. En las relaciones se habla de una clase destino y de una clase origen. La origen es desde la que se realiza la acción de relacionar. Es decir desde la que parte la flecha, la destino es la que recibe la flecha.

Ahora ya definido el concepto de Clase, es necesario explicar como se pueden interrelacionar dos o más clases (cada uno con características y objetivos diferentes).

Antes es necesario explicar el concepto de cardinalidad de relaciones: En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia, es decir especifica cuantas instancias de una clase se pueden relacionar a una sola instancia de otra clase.

Se anotan en cada extremo de la relación y éstas pueden ser:




  • uno-uno

  • uno-muchos(1...*)

  • muchos-muchos(* *)

  • opcional (0..1 )

  • n
    úmero fijo
    : m (m denota el número).






La notación para representar una relación opcional, donde la multiplicidad es "uno" o "cero", escribiendo una relación opcional, 0 o 1. Esto significa que dos objetos pueden o no estar conectados, y si lo están corresponden a una multiplicidad de 1.






Herencia (Especialización/Generalización)

Las clases con atributos y operaciones comunes se pueden organizar de forma jerárquica, mediante la herencia. La herencia es una abstracción importante para compartir similitudes entre clases, donde todos los atributos y operaciones comunes a varias clases se pueden compartir por medio de la superclase, una clase más general. Las clases más refinadas se conocen como las subclases.

Ejemplo: Las Impresoras Láser, de Burbuja, y de Matriz, son todas subclases de la superclase Impresora. Los atributos generales de una Impresora son el Modelo, Velocidad, y Resolución, mientras que sus operaciones son Imprimir y Alimentar.

La Herencia es útil para el modelo conceptual al igual que para la implementación. Como modelo conceptual da buena estructuración a las clases. Como modelo de implementación es un buen vehículo para no replicar innecesariamente el código. Generalización define una relación entre una clase más generalizada, y una o más versiones refinadas de ella.

Ejemplo: La clase Impresora es una generalización de las clases Impresoras Láser, de Burbuja, y de Matriz.

Especialización define una relación entre una clase más general, y una o más versiones especializadas de ella.

Ejemplo: Impresoras Láser, de Burbuja, y de Matriz, son todas especializaciones de Impresoras.

La superclase generaliza a sus subclases, y las subclases especializan a la superclase. El proceso de especialización es el inverso de generalización. Una instancia de una subclase, o sea un objeto, es también una instancia de su superclase.

Ejemplo: Cuando se crea un objeto de tipo Impresora Láser, este objeto incluye toda la información descrita en la subclase Impresora Láser, al igual que en la superclase Impresora; por lo tanto se considera que el objeto es una instancia de ambas.

La herencia es transitiva a través de un número arbitrario de niveles. Los ancestros de una clase son las superclases de una clase en cualquier nivel superior de la jerarquía, y los descendientes de una clase son las subclases de una clase en cualquier nivel inferior de la jerarquía.

Ejemplo: Si además de Impresora de Burbuja, se define una clase más especializada como Impresora de Burbuja Portátil, entonces Impresora e Impresora de Burbuja son ancestros de la clase Impresora de Burbuja Portátil, mientras que Impresora de Burbuja e Impresora de Burbuja Portátil son descendientes de Impresora.



La herencia indica que una subclase hereda los métodos y atributos especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected), ejemplo:



En la figura se especifica que Auto y Camioneta heredan de Vehículo, es decir, Auto posee las Características de Vehículo (Precio, VelMax, etc) además posee algo particular que es Descapotable, en cambio Camioneta también hereda las características de Vehículo (Precio, VelMax, etc) pero posee como particularidad propia Tara y Carga.

Cabe destacar que fuera de este entorno, lo único "visible" es el método Características aplicable a instancias de Vehículo, Auto y Camioneta, pues tiene definición publica, en cambio atributos como Descapotable no son visibles por ser privados.


(Los nombres de atributos y operaciones deben ser únicos en la jerarquía de herencia.)

Ejemplo: Una Impresora de Burbuja Portátil incorpora todas las características, primero de una Impresora, y luego de una Impresora de Burbuja, conteniendo valores para todos los atributos ancestrales y pudiéndose aplicar todas las operaciones ancestrales.



La generalización se puede extender a múltiples niveles de jerarquías, donde una clase hereda de su superclase, que a su vez hereda de otra superclase, hacia arriba en la jerarquía. En otras palabras, las relaciones entre subclases y superclases son relativas. La herencia define una jerarquía de clases donde existen ancestros y descendientes, que pueden ser directos o no.
E
jemplo: Un Barco tiene un Nombre, Fabricante, y Costo. Tipos especiales de Barco, como Velero, tienen además de estas características básicas, un Número de Velas, mientras que otro tipo especial de Barco, como Barco a Motor, tiene un Motor. Barco es la clase básica (la superclase) mientras que Velero y Barco a Motor son las clases refinadas (las subclases). Se debe definir las características básicas de los barcos una sola vez, y luego añadir detalles para veleros, barcos a motor, etc.
E
jemplo: Una jerarquía conteniendo una superclase Mueble, y varias subclases Mesa y Asiento, puede ser extendida con nuevas subclases, como Mesa Circular, Mesa Rectangular, mientras que un Asiento puede extenderse con las subclases Silla, Sillón, y Taburete.

Cada clase tiene sus propios atributos los cuales se van especializando a medida que las clases son cada vez más especializadas. Nótese que no necesariamente todas las clases tienen que incluir atributos.




Asociación



La relación entre clases conocida como Asociación, permite asociar objetos que colaboran entre si.

U
na asociación describe la relación entre clases de objetos, y describe posibles ligas, donde una liga es una instancia de una asociación, al igual que un objeto es una instancia de una clase.

E
jemplo:
Un cliente puede tener asociadas muchas Ordenes de Compra, en cambio una orden de compra solo puede tener asociado un cliente.
1   2   3   4   5   6   7


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal