Composición del objeto


En informática , la composición de objetos es una forma de combinar objetos o tipos de datos en otros más complejos. Los tipos comunes de composiciones son los objetos que se utilizan en la programación orientada a objetos , uniones etiquetadas , conjuntos , secuencias y diversas estructuras de gráficos . [1] Las composiciones de objetos se relacionan con estructuras de datos, pero no son lo mismo.

La composición del objeto se refiere a la estructura lógica o conceptual de la información, no a la implementación o estructura de datos física utilizada para representarla [ cita requerida ] . Por ejemplo, una secuencia difiere de un conjunto porque (entre otras cosas) el orden de los elementos compuestos es importante para el primero pero no para el segundo. Se pueden utilizar estructuras de datos como matrices , listas enlazadas , tablas hash y muchas otras para implementar cualquiera de ellas. Quizás de manera confusa, algunos de los mismos términos se utilizan tanto para estructuras de datos como para compuestos. Por ejemplo, " árbol binario"puede referirse a: como estructura de datos, es un medio para acceder a una secuencia lineal de elementos, y las posiciones reales de los elementos en el árbol son irrelevantes (el árbol se puede reorganizar internamente como se desee, sin cambiar su significado). Sin embargo, como composición de un objeto, las posiciones son relevantes y cambiarlas cambiaría el significado (como por ejemplo en los cladogramas ) [ cita requerida ] .

La programación orientada a objetos se basa en objetos para encapsular datos y comportamientos. Utiliza dos técnicas principales para ensamblar y componer funcionalidades en otras más complejas, subtipificación y composición de objetos. [2] La composición de objetos consiste en combinar objetos dentro de objetos compuestos y, al mismo tiempo, garantizar la encapsulación de cada objeto mediante el uso de su interfaz bien definida sin visibilidad de sus partes internas. En este sentido, la composición de objetos difiere de las estructuras de datos, que no imponen la encapsulación.

La composición de objetos también puede tratarse de un grupo de múltiples objetos relacionados, como un conjunto o una secuencia de objetos. La delegación puede enriquecer la composición reenviando solicitudes o llamadas realizadas al objeto compuesto adjunto a uno de sus componentes internos. [3]

En los lenguajes de programación basados ​​en clases y tipificados , los tipos se pueden dividir en tipos compuestos y no compuestos, y la composición se puede considerar como una relación entre tipos: un objeto de un tipo compuesto (por ejemplo, automóvil ) " tiene " objetos de otros tipos ( por ejemplo, rueda ). Cuando un objeto compuesto contiene varios subobjetos del mismo tipo, pueden asignarse roles particulares , a menudo distinguidos por nombres o números. Por ejemplo, un objeto Point puede contener 3 números, cada uno de los cuales representa la distancia a lo largo de un eje diferente, como 'x', 'y' y 'z'. El estudio de las relaciones entre parte y todo en general es mereología .

La composición debe distinguirse del subtipo , que es el proceso de agregar detalles a un tipo de datos general para crear un tipo de datos más específico. Por ejemplo, los automóviles pueden ser un tipo específico de vehículo: el automóvil es un vehículo . El subtipo no describe una relación entre diferentes objetos, sino que dice que los objetos de un tipo son simultáneamente objetos de otro tipo. El estudio de tales relaciones es ontología .


Una clase de bicicleta representada en UML, con tres propiedades: sillín, ruedas y partes, las dos últimas tienen una multiplicidad que indica varios objetos.
Composición de objetos usando propiedades UML para componer objetos
Asociación entre varias bicicletas, cada una de las cuales tiene un propietario; Composición de una bicicleta con partes del cuadro que la componen; y agregación de una bicicleta con sus ruedas, que existen sin la bicicleta
Notación UML para asociación, composición y agregación
Agregación en COM