En los entornos de programación orientados a objetos (p.ej. Java) existen básicamente dos formas de conseguir esto:
Mediante herencia de clases
La forma de representar la herencia en UML sería mediante una flecha (con la punta triangular vacia) dirigida desde la clase hija (subclase) a la clase padre (superclase).
En este caso, las subclases de la clase 'Mamifero' serían las clases: 'Perro', 'Tigre' y 'Oveja'. De forma que las clases hijo heredarían la interfaz e implementación de la clase padre 'Mamifero'
La forma de representar la herencia en UML sería mediante una flecha (con la punta triangular vacia) dirigida desde la clase hija (subclase) a la clase padre (superclase).
En este caso, las subclases de la clase 'Mamifero' serían las clases: 'Perro', 'Tigre' y 'Oveja'. De forma que las clases hijo heredarían la interfaz e implementación de la clase padre 'Mamifero'
- Ventajas
- Inconvenientes
Mediante composición
La forma de representar esta relación entre clases con UML es mediante una línea con un rombo relleno en el extremo de la clase que representa el "todo" y por lo tanto contiene a las "partes" de las que esta compuesto.
En este ejemplo la clase 'Cama' esta compuesta por las clases: 'Patas', 'Colchon' y 'Somier'. De forma que la existencia de las partes está necesariamente ligada a la existencia del todo que las contiene, es decir, que si la clase 'Cama' deja de existir también lo harán las clases que la componen.
- Ventajas
Con esto podemos concluir que hay que favorecer la composición de objetos frente a la herencia de clases
Idealmente sólo crearíamos nuevos componentes para lograr la reutilización. Deberíamos ser capaces de conseguir toda la funcionalidad que necesitásemos simplemente ensamblando componentes existentes a través de la composición de objetos. Sin embargo, rara vez es éste el caso, puesto que el conjunto de componentes disponibles nunca es, en la práctica, lo suficientemente rico. Reutilizar mediante la herencia hace más fácil construir nuevos componentes que puedan ser combinados con los antiguos. Y de esta forma la herencia y la composición trabajan por lo tanto juntas.
Muy buena ayuda, muy bien explicadas las diferencias.
ResponderEliminarEn total sintonía con lo que dices. Muy bien explicado.
ResponderEliminar