Paradigma orientado a objetos

En este post, vamos a estudiar el paradigma orientado a objetos, que se ha convertido en el principal medio para el desarrollo de software. Los objetos son la representación de nuestro mundo. Un objeto es la instancia de una clase, por ejemplo, nosotros somos una instancia de la clase “persona”. Como hemos comentado anteriormente, un objeto tiene propiedades y acciones. Las propiedades o atributos de la clase persona pueden ser, peso, altura… y las acciones que puede realizar serán comer, dormir…

El propósito de la orientación a objetos es realizar un software que modele una parte del mundo real.

Conceptos básicos

Vamos a definir los conceptos básicos que se manejan en la orientación a objetos. Se comentan los más importantes, no pretendo ser exhaustivo.

Abstracción

Consiste en definir las tipologías principales de un objeto que denotan su comportamiento. Mediante la abstracción seleccionamos un conjunto de características principales, que permiten modelar el comportamiento de las entidades en el mundo real.

Herencia

Las clases no están aisladas, sino que forman una jerarquía de clasificación, de modo que una clase, hereda las propiedades y comportamientos de una clase preexistente.

Polimorfismo

Consiste en compartir el mismo nombre para comportamientos distintos de distintos objetos. Por ejemplo, se puede “encender” una radio, una hoguera, una mecha, o una luz…

Principio de ocultación y encapsulamiento

Son dos comportamientos que aparecen íntimamente relacionados. Encapsulamiento consiste en agrupar los comportamientos que se consideren pertenecientes a una misma entidad al mismo nivel de abstracción. Cuando hablamos de ocultación hablamos de exponer a otros objetos una interfaz que especifique como interactuar con un objeto, ocultando el acceso a las propiedades internas del objeto.

Asociación

Los objetos se relacionan entre sí. El objeto “viajero”, se relaciona con el objeto “autobús”. Las asociaciones pueden ser de una vía, como en el caso anterior, o en dos direcciones. Multiplicidad o diversificación habla de la cantidad de objetos que se relacionan con otro objeto en particular.

Agregación

Un objeto se compone de otros objetos o componentes. Por ejemplo un coche, se compone de motor, ruedas, carrocería, etc.

Clases

Como ya hemos visto las clases se representan como un rectángulo. Los nombres de las clases comienzan en mayúscula y si dicho nombre consta de varias palabras, cada palabra empezará en mayúscula, por ejemplo: CasaDeCampo

Los atributos de una clase, definen propiedades o características que tiene una clase. Los nombres de los atributos se escriben del mismo modo que los de la clase, solo que siempre deben empezar por letra minúscula. Se pueden definir los tipos de cada propiedad, por ejemplo String, float, etc. En UML, esto se representa con dos puntos, por ejemplo → modelo:string

Las operaciones se muestran debajo de los atributos y se escriben del mismo modo que éstos, solo que tienen un paréntesis al final. Pueden indicar el tipo de parámetros, por ejemplo: activar(param:integer)

En la práctica, no se suelen mostrar todos los atributos y operaciones de la clase, ya que quedaría el esquema demasiado saturado.

La visibilidad de los métodos y atributos se define con un signo menos para los campos privados, con un signo más para los campos públicos, con una almohadilla para los campos protegidos y con la tilde de la eñe para los de tipo paquete.

Visibilidad de atributos y métodos

Visibilidad de atributos y métodos

Existen otras cosas que se pueden asociar a la clase, como “responsabilidades”, o “restricciones” que son respectivamente textos que aclaran para que se utiliza la clase, o los valores que están permitidos en determinados atributos.  Las restricciones se ponen entre llaves “{}”. Del mismo modo, se pueden usar notas, como ya se ha comentado.

Para mostrar esta información en EA, se pincha con el botón derecho y se selecciona “Feature Visibility” donde podremos indicar los valores que queremos mostrar u ocultar en la clase.

 

 

Diseñando clases

Cuando estamos diseñando un sistema y estamos escuchando los requerimientos del cliente, debemos prestar atención a los sustantivos, que definirán las entidades del negocio y también a los verbos, que definirán las operaciones de las clases. Los atributos surgirán como sustantivos relacionados con los nombres de las clases. Una vez que tengamos la lista de las clases, preguntaremos al cliente que es lo que hace en el negocio.

Por ejemplo, si el cliente nos pide que construyamos un billar, nos hablará de mesa, bolas, palos, etc. que identificaremos como clases. También identificaremos atributos, como el diámetro y el peso de la bola, dimensiones de la mesa, etc. Del mismo modo podremos identificar acciones como golpear, rebotar, caer en la tronera, en el caso de las bolas… etc.

Relacionando las clases

Vamos a ver como las clases se conectan entre sí. Veremos las asociaciones más comunes, sin entrar en demasiado detalle.

Asociación

Cuando las clases se asocian entre sí de forma conceptual. Pueden tener una determinada dirección o ser bidireccionales. Por ejemplo:

Asociación

Asociación

También hay clases de asociación, que es cuando un conector tiene clases y atributos, por ejemplo:

Clase de asociación

Clase de asociación

Las asociaciones pueden tener “multiplicidad”, esto es, la asociación equipo-jugador, tendrá una relación de 1 a n.

En EA, la multiplicidad se configura pinchando con el botón derecho sobre la relación y ajustando el parámetro “multiplicity

Herencia o generalización

Se usa para describir la herencia y se representa como una flecha (más bien un triángulo) que va desde el “hijo” al “padre”, es decir, el origen hereda las características del destino.

Herencia

Herencia

Dependencia

Ocurre cuando una clase utiliza a otra y se representa por una flecha con líneas discontinuas.  Por ejemplo, para realizar una solicitud, necesitamos seleccionar el formulario adecuado:

Relación de dependencia

Relación de dependencia

Agregación

Se usa para indicar como los elementos más complejos se construyen desde elementos más simples, por ej. un automóvil se compone de ruedas, neumáticos, motor, etc. Se representa como un rectángulo vacío, e indica que una clase hace uso de otra, pero no necesariamente tiene una instancia de ésta.

Agregación

Agregación

Composición

Es un tipo de agregación en los que cada elemento dentro de una composición debe pertenecer a un todo. Por ejemplo, las clases patas y tablero pertenecen a la clase mesa. Las partes sólo puede pertenecer a una composición a la vez y si se elimina la composición, se eliminan las partes.

Composición

Composición

Interfaces y realizaciones

Como es sabido, un interfaz define un comportamiento que varias clases pueden implementar. Por ejemplo, los botones de un reproductor (play, stop, ff, rw) son un interfaz que pueden implementar las clases DVD, CD, Tocadiscos, Video… etc. Cuando un objeto implementa una determinada interfaz, se representa con una flecha discontinua, por ejemplo:

Implementa el interfaz

Implementa el interfaz

También se puede indicar si una clase requiere el uso de un interfaz o provee una interfaz:

Exponer interfaz

Exponer interfaz

En EA, se añade desde la caja de herramientas se selecciona el elemento “Expose Interface”, en los diagramas de tipo “Component”.

Aquí terminamos con lo relativo al paradigma orientado a objetos. En el siguiente post, hablaremos sobre los casos de uso. Si te ha gustado, puedes dejar un comentario.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *