InicioLinuxEntra y te explico las relaciones entre clases

Entra y te explico las relaciones entre clases

Linux9/14/2014





Hablemos un poco sobre POO y UML: una de las primeras cosas que se tocan al aprender sobre la Programación Orientada a Objetos es la parte de UML (un lenguaje que nos permite el modelado de sistemas) que generalmente comienza por definir las relaciones que pueden existir entre las clases involucradas en nuestro proyecto.

Es muy importante conocer los conceptos básicos de POO para entender el tema de relaciones entre clases.



  • Asociación
  • Dependencia
  • Agregación
  • Composición
  • Generalización

A términos prácticos, veamos a una clase como una plantilla para construir objetos; eventualmente nos daremos cuenta que dichas plantillas pueden necesitar de otras plantillas para generar dichos objetos de alguna u otra manera. Si nosotros nos encontramos en la parte del diseño del sistema entonces nos vendrá de maravilla conocer las siguientes relaciones entre clases y saber diferenciarlas:

Relaciones entre clases: Asociación

La asociación indica cuando una clase está ligada a otra, esto es que una primera clase necesita de cierta información de la segunda clase pero su existencia no se ve afectada si una de estas clases no existe. Aquí se hace uso de la cardinalidad, que indica la cantidad de objetos que podrán ser utilizados. Ejemplo:

Un vendedor puede tener uno o más locales de comida distribuidos por la ciudad, pero cada local pertenecen única y exclusivamente a ese vendedor.



¿Por qué se utiliza una asociación?: porque el vendedor puede inclusive tener cero locales y existir en nuestro sistema hasta que consiga el dinero suficiente y pueda crear uno. Como la clase LocalComida no es parte esencial del vendedor (no es un órgano vital o algo por el estilo que le permita existir) entonces se considera a esto como una asociación.

Relaciones entre clases: Dependencia

La dependencia es una relación que indica cuando una clase depende de otra clase para funcionar. Ejemplo:

Una aplicación escrita en Python necesita de una computadora para funcionar.



¿Por qué se utiliza una dependencia?: porque a simples rasgos sería imposible correr una aplicación escrita en Python en un ordenador que no existe. ¿O cómo correrías esa aplicación, por ejemplo, para robarle el Wi-Fi a tu vecino? No vale decir que los correrías en un smartphone o algún dispositivo como un Raspberry Pi, porque a final de cuentas son eso, computadoras.

Relaciones entre clases: Agregación

La agregación es utilizada cuando una clase se compone de otras clases, aunque si quitamos alguna de ellas entonces la primera seguirá funcionando normalmente. Ejemplo:

Una escuela tiene cafetería y biblioteca, aunque si destruimos alguna de ellas entonces sigue siendo escuela.



¿Por qué se utiliza una agregación?: porque si quitamos alguna de ellas, por ejemplo la cafetería, seguirá siendo escuela porque su propósito es para impartir clases, no para hacer juntadas con los amigos a la hora del desayuno y ver cómo Argentina se culea a México en el Mundial Brasil 2014.

Relaciones entre clases: Composición

La composición es muy similar a la relación anterior, con la diferencia de que si una clase hace falta entonces la principal se verá afectada. Ejemplo:

Una escuela se compone de aulas. Si no tuviera aulas entonces ¿qué sería?



¿Por qué se utiliza una composición?: porque una escuela siempre tendrá aulas para ser escuela, sin importar el estado de éstas. Es cierto que una escuela obligatoriamente tiene también alumnos y profesores, pero ¿recuerdas el concepto de abstracción en POO? En este caso estamos mirando todo respecto al punto de vista físico, no organizacional.

Relaciones entre clases: Generalización

La generalización es posiblemente la relación más importante ya que hace uso de uno de los conceptos base de la POO: la herencia. Ejemplo:

Un blog, un foro y una red social son distintos tipos de sitios web. Todos tienen, al menos, un nombre y un dominio como por ejemplo MultiAportes (multiaportes.com), Evoshare (evoshare.net) y Twitter (twitter.com)



¿Por qué se utiliza una generalización?: porque todo sitio web tiene, entre otras cosas, un nombre y un dominio propios, además de que cada uno de ellos tiene sus particularidades, por ejemplo un blog tiene artículos, un foro tiene hilos de discusión y una red social tiene listas de contactos. Por cierto, puede que en algunas cosas existan similitudes pero en realidad se consideran distintas por el variado funcionamiento que tiene cada plataforma web.

Para finalizar

Después de haber escrito todo esto, debo decir que la fuente ha sido principalmente los apuntes de mis materias de Programación Orientada a Objetos y Análisis y Diseño Orientado a Objetos, junto a ejemplos propios que se me ocurrieron en el momento.

Espero que todo esto te sea de ayuda y te ayude a comprender rápidamente las diferencias entre las relaciones entre clases.



Ver todos los ejemplos de relaciones entre clases



También pásate por...

  • Aprendiendo a programar en Allegro 5
  • Aprende a redactar documentos en LaTeX sin salir del post
  • ¿Qué es mejor: Windows o Linux?
  • Mi experiencia con ArchLinux


FIN DEL POST

Datos archivados del Taringa! original
50puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
5visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

0
0x666🇦🇷
Usuario
Puntos0
Posts8
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.