Una de estas opciones es una interfaz, este concepto nos permite especificar operaciones en una clase y su forma de presentarlas a otras.
Interfaz
La interfaz nos permite especificar un conjunto de operaciones en clase que pueden ser utilizada por otras, se representa de la misma forma que una clase utilizando un rectángulo, sin embargo difiere de una clase en que no tendrá atributos debido a que solo será un conjunto de operaciones.
Para distinguir una interfaz de una clase con sus atributos ocultos, debemos utilizar la palabra interfaz como un estereotipo, o simplemente colocar una I delante del nombre de dicha interfaz.
Veamos el siguiente ejemplo de como implementar una interfaz en nuestro diagrama:
En este caso tomamos como ejemplo el teclado, si nos fijamos un teclado de computadora y uno de máquina de escribir son muy similares, entonces podemos concluir que podemos hacer una interfaz, donde incorporemos la operación teclazo(), en la cual al presionar una tecla esta debe devolver una respuesta en forma de letra, ya sea en papel en el caso de la maquina de escribir o en la pantalla de nuestro computador; luego vemos que en la clase teclado tenemos varias operaciones adicionales, estas corresponden a las diferencias que posee el teclado de computadora del de la maquina de escribir.
Como vemos implementar una interfaz no es tan complejo.
También tenemos una forma omitida para poder representar la interfaz dentro de una clase podemos ver dicha forma en la siguiente imagen:
Visibilidad
La visibilidad corresponde a la forma en que mostramos las operaciones y atributos de una clase, existen ciertos procesos que no deben ser mostrados a otras clases, por lo que decidimos hacerlos privados, esto cumple una de las condiciones de la orientación a objetos que es el encapsulamiento.
Tenemos 3 niveles de visibilidad los cuales son los siguientes:
- Público: este puede verse desde cualquier otra clase y para especificarlo lo demarcamos con un signo +.
- Protegido: este puede verse solamente por la clase original y todas las que hereden de ella, lo demarcamos con el #.
- Privado: solo la clase original puede ver esto y está demarcado por un -.
Veamos el siguiente ejemplo de como especificar la visibilidad de las operaciones y atributos de una clase:
Como vemos en la imagen, la televisión tiene privada la operación colorearImagenEnPantalla(), inferimos que solo le es importante a esta clase dicha operación y que otra clase no tendría por qué tener acceso a dicha operación.