La composición es una técnica de diseño en java para implementar una relación has-a . La herencia de Java se utiliza con fines de reutilización de código y lo mismo podemos hacer mediante la composición. La composición se logra mediante el uso de una variable de instancia que se refiere a otros objetos. Si un objeto contiene a otro objeto y el objeto contenido no puede existir sin la existencia de ese objeto, entonces se llama composición. En palabras más específicas, la composición es una forma de describir la referencia entre dos o más clases usando una variable de instancia y se debe crear una instancia antes de usarla.
Los beneficios de usar Composición son los siguientes:
- La composición permite la reutilización del código.
- Java no admite herencias múltiples , pero al usar la composición podemos lograrlo.
- La composición ofrece una mejor capacidad de prueba de una clase.
- Al usar la composición, somos lo suficientemente flexibles para reemplazar la implementación de una clase compuesta con una versión mejor y mejorada.
- Al usar la composición, también podemos cambiar los objetos miembros en tiempo de ejecución, para cambiar dinámicamente el comportamiento de su programa.
Recuerde los ciertos puntos clave de composición en Java que son los siguientes:
- Representa una relación tiene-un .
- En composición, ambas entidades son dependientes entre sí.
- Cuando hay una composición entre dos entidades, el objeto compuesto no puede existir sin la otra entidad. Por ejemplo, una biblioteca puede tener no. de libros sobre los mismos o diferentes temas. Entonces, si la biblioteca se destruye, todos los libros dentro de esa biblioteca en particular serán destruidos. Esto se debe a que los libros no pueden existir sin una biblioteca.
- La composición se logra mediante el uso de una variable de instancia que se refiere a otros objetos.
- Tenemos que favorecer la Composición sobre la Herencia.
Ahora, finalmente, consultemos la imagen a continuación para obtener una ligera pista sobre la agregación y para comprender mejor cómo funciona la composición, tomemos un ejemplo del sistema de biblioteca en tiempo real.
Ejemplo de la vida real: sistema de biblioteca
Entendamos la composición en Java con el ejemplo de libros y biblioteca. En este ejemplo, creamos una clase Libro que contiene miembros de datos como autor y título y creamos otra clase Biblioteca que tiene una referencia para referirse a la lista de libros. Una biblioteca no puede tener. de libros sobre los mismos o diferentes temas. Entonces, si la biblioteca se destruye, todos los libros dentro de esa biblioteca en particular serán destruidos. es decir, los libros no pueden existir sin una biblioteca. La relación entre la biblioteca y los libros es la composición.
Implementación:
Ejemplo
Java
// Java program to Illustrate Concept of Composition // Importing required classes import java.io.*; import java.util.*; // Class 1 // Helper class // Book class class Book { // Member variables of this class public String title; public String author; // Constructor of this class Book(String title, String author) { // This keyword refers top current instance this.title = title; this.author = author; } } // Class 2 // Helper class // Library class contains list of books. class Library { // Reference to refer to list of books. private final List<Book> books; // Constructor of this class Library(List<Book> books) { // This keyword refers to current instance itself this.books = books; } // Method of this class // Getting the list of books public List<Book> getListOfBooksInLibrary() { return books; } } // Class 3 // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating the objects of class 1 (Book class) // inside main() method Book b1 = new Book("EffectiveJ Java", "Joshua Bloch"); Book b2 = new Book("Thinking in Java", "Bruce Eckel"); Book b3 = new Book("Java: The Complete Reference", "Herbert Schildt"); // Creating the list which contains the // no. of books. List<Book> book = new ArrayList<Book>(); // Adding books to List object // using standard add() method book.add(b1); book.add(b2); book.add(b3); // Creating an object of class 2 Library library = new Library(book); // Calling method of class 2 and storing list of // books in List Here List is declared of type // Books(user-defined) List<Book> books = library.getListOfBooksInLibrary(); // Iterating over for each loop for (Book bk : books) { // Print and display the title and author of // books inside List object System.out.println("Title : " + bk.title + " and " + " Author : " + bk.author); } } }
Title : EffectiveJ Java and Author : Joshua Bloch Title : Thinking in Java and Author : Bruce Eckel Title : Java: The Complete Reference and Author : Herbert Schildt
Publicación traducida automáticamente
Artículo escrito por SanketBhalerao y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA