Composición en Java

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: 

  1. La composición permite la reutilización del código.
  2. Java no admite herencias múltiples , pero al usar la composición podemos lograrlo.
  3. La composición ofrece una mejor capacidad de prueba de una clase.
  4. 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.
  5. 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);
        }
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *