Saltar la navegación

5. Toma el timón del diseño

Rétor dice:¡Enhorabuena por haber llegado hasta aquí! Esto significa que ya conoces la POO y sus clases. Has utilizado la palabra class para definirlas y crear los objetos, y lo más importante: has codificado programas resolviendo problemas mediante objetos.
Sin embargo, en la vida real no encontrarás clases que definir ni objetos que instanciar: encontrarás un problema o situación que tendrás que resolver mediante la programación. Tendrás una descripción escrita de lo que hace falta crear y, de ella, tendrás que decidir cuáles son los objetos que vas a necesitar, qué atributos será necesario que tengan y qué acciones deberán realizar. En definitiva: tendrás que diseñar la solución al problema propuesto.
¡Pero no desesperes! Es hora de que recibas unas pautas o consejos que seguir para enseñarte cómo afrontar esa tarea. ¡Es lo que tratamos en este nuevo apartado!

1. Divide y vencerás

 Imagen en la que se observa en un restaurante a un hombre sirviendo agua a una mujer que está leyendo un documento. Cuando comenzamos a diseñar un programa con POO no resulta sencillo si se comienza a modelar directamente como un todo. Para poder afrontarlo debemos descomponerlo en una serie de clases que cooperan entre sí. Ese es el procedimiento que estudiaremos en esta sección.

Para comenzar a familiarizarnos con este trabajo de modelado, vamos a realizar una tarea de cooperación en un grupo de cuatro personas: vais a modelar mediante POO (clases y objetos) la gestión de un restaurante. ¡Prestad atención!:

Motus dice ¿Cómo os sentís?

¿Crees que tus compañeros y compañeras están emocionados con esta actividad?

Cuando estabais haciendo esta actividad grupal, ¿cómo se estaban sintiendo?

Puede que algunos compañeros o compañeras se hayan sentido inseguros o tensas para hacer la actividad. Seguro que alguien ha tranquilizado al equipo y ha ayudado a hacerla.

Es posible que alguien estuviese enfadado o enfadada, quizás porque no sabía cómo hacerla.

Cuando trabajamos en equipo podemos tener diferentes sensaciones al hacer una actividad. Conocerlas y comprenderlas nos ayudará a hacer la tarea con éxito. Para ello sigue estos consejos en las próximas actividades en equipo:

  • Piensa en cómo te estás sintiendo tú.
  • Observa y pregunta a tus compañeros para saber cómo se sienten.
  • Decidid en equipo qué cosas podéis hacer para sentiros mejor para resolver la actividad.

2. Del lenguaje natural al lenguaje computacional

A continuación, lee aquí brevemente el procedimiento que es recomendado seguir a la hora de enfrentarse al modelado de un problema planteado y posterior propuesta de solución:

Primero:
Descripción del problema

Cuando nos presentan una necesidad de desarrollo de una aplicación, habitualmente nos darán una descripción escrita del problema en lenguaje natural. Si no nos la han dado, es conveniente realizarla nosotros ya que una detallada descripción es fundamental para posteriormente reconocer los objetos, sus atributos y los métodos que los hacen interactuar.

Segundo:
Reconocer objetos y acciones

Dado el texto descriptivo del problema o desarrollo a realizar, la técnica consiste en localizar los nombres y los verbos (se pueden marcar en diferente color). De este modo:

  • Los nombres: son candidatos a objetos y atributos.
  • Los verbos: marcan las acciones y son candidatos a métodos.

Tercero:
Decidir atributos y métodos

Terminada la localización anterior es la hora de tomar decisiones: ¿cuáles serán las clases de objetos que formarán parte del programa? Hay que diferenciarlas y atribuir a cada una los atributos y métodos. Para ello debes preguntarte:

  • ¿Cómo se relacionan entre ellos?
  • ¿Qué acciones realiza cada objeto?

Hay que hacer notar que en este paso no hay una única solución: un mismo programa puede tener distintos modelados (distintas formas de tomar las decisiones anteriores) y funcionar correctamente en las diferentes formas.

Cuarto: Crear el diagrama de clases

El diagrama de clases es un método que se utiliza para representar la información de las decisiones tomadas al modelar un problema. Para hacerlo, debes tener en cuenta tres factores:

Representación de un objeto

El estándar indica que cada objeto se representará utilizando un rectángulo que se divide horizontalmente en tres partes:

  • La parte de arriba tendrá el nombre de la clase.
  • La parte media tendrá la lista de atributos, especificando el tipo del dato (entero, cadena de caracteres, lista...).
  • La parte inferior contendrá la lista de métodos, especificando qué devuelve la función o void si no devuelve nada.

¡Observa el ejemplo! Si queremos representar la clase Password de nuestro reto, sería mediante el rectángulo siguiente:

Clase Password en diagrama que se representa con un rectángulo que se divide horizontalmente en tres partes

Agregación

En los diagramas de clases hay que tener en cuenta las relaciones entre unas clases y otras. Agregación es cuando una clase contiene a otra u otras, y se representa mediante un rombo hueco en el extremo de la línea que conecta con la clase contenedora:

Imagen que representa la agregación en diagrama de clases mediante la colocación de un rombo hueco en el extremo de la línea que conecta con la clase contenedora

Especialización

La especialización representa a la herencia: una clase es una especialización de otra más general y entonces hereda de ella. Se representa en el diagrama como una punta de flecha que señala hacia la clase más general:

Imagen de especialización que se representa mediante diagrama como una punta de flecha que señala hacia la clase más general

3. Poniendo orden en las clases

¿Qué te ha parecido el método arriba expuesto para modelar un programa? Ahora vamos a hacer una prueba de aplicación y vamos a modelar el siguiente caso. ¡Terminarás creando tu primer diagrama de clases!

Gestión de universidadLa Universidad necesita crear un programa que gestione su personal. Se han puesto en contacto contigo para diseñar el diagrama de clases que servirá de base de diseño. ¡Es el momento de aplicar lo aprendido!

A continuación tienes el texto en lenguaje natural que explica su organización interna. Léelo atentamente ya que basándote en él vas a tener que seguir los pasos tratados en el punto anterior para finalizar creando el diagrama de clases. Vamos poco a poco. Primero, lee el siguiente texto:

La universidad se caracteriza mediante su nombre y la ciudad donde se sitúa. En la universidad están vinculados dos tipos de persona: trabajadores, que la universidad emplea, y estudiantes, que estudian en la universidad. Cada persona tiene un DNI y un nombre. Los trabajadores pertenecen a dos grupos: PDI y PAS. Cada trabajador tiene asociada una fecha de inicio de su contrato. Cada miembro del PDI también tiene una categoría, mientras que cada miembro del PAS tiene un puesto. Los miembros del PDI pueden o no ser doctores. Las actividades que desarrolla el PDI son investigar y enseñar, mientras que la actividad que desarrolla el PAS es administrar. La universidad se compone de un conjunto de departamentos, cada uno de los cuales tiene un nombre y un conjunto de trabajadores adscrito. Un PDI está adscrito obligatoriamente a un departamento, mientras que un PAS, no tiene por qué. Cada departamento está dirigido por un doctor. Un estudiante puede ser un estudiante de grado, de una determinada titulación, bien estudiante de doctorado, de un determinado programa de doctorado. Un estudiante de grado puede también colaborar con un departamento como becario y puede realizar un Proyecto Fin de Carrera (PFC) dirigido por un miembro del PDI. Un estudiante de doctorado realiza una tesis dirigida por un doctor.

Adaptado de Diagrama de clases con, de Wilfredor, con licencia CC.

Trabaja bien el texto y...¡adelante con el diseño! Vamos a realizar cada paso.

4. Paso 1: Objetos y acciones

Una vez leída y analizada la descripción anterior, identifica los posibles objetos del modelo y las acciones que se convertirán en métodos de clase. Rellena las listas siguientes con los objetos y acciones ordenados alfabéticamente:

Posibles objetos: , , , , , , , , , .

Posibles acciones: Administrar, , , , , , .

Habilitar JavaScript

5. Paso 2: Cada oveja con su pareja

Ya has localizado los objetos y las acciones para modelar su comportamiento. Ahora avanzamos un paso más y distribuimos entre las diferentes clases que surgen los artibutos y métodos que le corresponden en nuestro modelo. Y recuerda que si en algún objeto hay más de un atributo o método debes seleccionarlos ordenados alfabéticamente:

Universidad
+
+
Persona
+
+
Trabajador
+
PAS
+
+ ()
PDI
+
+ ()
+ ()
Departamento
+
Estudiante
+ ()
Estudiante de grado
+
+ ()
Estudiante de doctorado
+
+ ()

Habilitar JavaScript

6. Paso 3: Diagrama final

Tras los dos ejercicios anteriores ya estás en disposición de diseñar el diagrama de clases final. ¡Vamos a ello!

Plasma las clases establecidas en el ejercicio anterior, con sus atributos y métodos. Es la hora de trazar las relaciones entre ellas. Las relaciones que debes indicar son las vistas anteriormente: Agregación y Especialización.

Puedes realizarlo con materiales fungibles o usar algunas herramientas digitales para el diseño de dibujos, diagramas o esquemas que conozcas. Si no conoces ninguna herramienta para realizar el diseño, en el Apartado 7. Presentamos nuestro trabajo, te mostramos algunas.

Algunas pistas...

¿Necesitas ayuda con la creación del diagrama? Aquí dispones de una ayuda con el mismo, solo hay que completarlo:

Imagen de pista del diagrama de clases en la que se observa al inicio un cuadro con persona que incluye nombre y DNI.  Hay otros cuadros con información sobre PAS, departamento y estudiantes de doctorado. Se incluyen cuadros vacíos, rombos y flechas y líneas de relación

Si necesitas más ayuda para hacer el diagrama, haz clic aquí para acceder a nuestra guía del alumnado para la creación de diagramas, entre ellos encontrarás el diagrama de clases que se te pide en este ejercicio.

Clavis dice Reflexiona sobre lo que has hecho

Lo más importante es haber puesto en práctica todo lo aprendido. Por lo que es necesario que, antes de continuar, nos paremos a reflexionar sobre lo aprendido y valora qué habilidades tenías, con qué recursos contabas y cuáles han sido tus dificultades a la hora de realizar estas tareas.

Puedes responder a estas cuestiones o que te las pregunte una compañera o compañero a modo de entrevista. ¿Qué te parece?

  • ¿Has sido capaz de diseñar el diagrama de clases final?
  • ¿Te ha resultado difícil realizarlo?
  • ¿Has entendido en qué consiste?
  • ¿Has podido plasmar las clases establecidas en el ejercicio anterior, con sus atributos y método?
  • ¿Has incluido las relaciones de agregación y especialización?
  • ¿Has usado la herramienta dibujos de Google? Si no es así, ¿Cuál has usado

Tras responder a estas cuestiones, comparte con tus compañeras o compañeros qué puedes hacer la próxima vez para mejorar en las cuestiones que te han resultado más complicadas.

7. Reviso lo que aprendo

Reflexiona un momento sobre todo lo que has aprendido hasta llegar aquí y completa el PASO 3 (Reviso lo aprendido) de tu Diario de aprendizaje.
Recuerda:

  1. Pregunta a tu profesor o profesora si lo vas a rellenar en papel o en el ordenador.
  2. Si lo rellenas en el ordenador, no te olvides de guardarlo en una carpeta que más tarde puedas localizar.

¡Ánimo, que lo harás genial!