O que é composição em Java? Com Exemplos
Publicados: 2023-01-27Índice
Noções básicas de associação em Java:
A associação pode ser definida em Java como uma interconexão entre duas classes individuais usando seus objetos distintos. Os tipos de relacionamentos gerenciados pela associação Java são:
- Um-para-um: existe apenas uma única classe derivada para cada classe pai.
- Um-para-muitos: uma única classe pai pode ter mais de uma classe filha.
- Muitos-para-um: Uma única classe filha pode estar associada a mais de uma superclasse.
- Muitos-para-muitos: Um número de classes pai pode ser associado a uma única classe filha e um número maior de classes filhas pode ser associado a uma única classe pai.
Uma vez estabelecido o relacionamento, as classes derivadas se comunicam com as respectivas classes base para reutilizar suas características e propriedades. Existem dois tipos de associação em Java. Eles são agregação e composição.
A agregação em Java é um processo mais generalizado em comparação com a composição. Esses formulários são baseados no tipo de relacionamento suportado entre as classes.
Introdução à composição em Java:
Uma técnica de design em Java que implementa um relacionamento Has-A é conhecida como composição. O processo de herança é usado para reutilizar o código. A composição em Java pode ser realizada utilizando uma variável de instância referente a outros objetos. Se um objeto constitui outro objeto de tal forma que o objeto constituinte não pode existir sem a sobrevivência do objeto principal, o tipo de relação é chamado de composição. Para ser mais específico, a composição é um aspecto que descreve a referência entre duas ou mais classes com a ajuda de variáveis de instância. Aqui, a instância deve ser criada antes de usar as variáveis instantâneas. Tomemos como exemplo uma Biblioteca para uma compreensão clara do conceito 'composição'.
Existem inúmeros livros em uma biblioteca. Cada livro tem autores e títulos separados. A biblioteca também deve ter uma lista de referências de livros. A biblioteca também possui vários livros relacionados ao mesmo assunto ou assuntos diversos. Aqui, a biblioteca corresponde à classe principal e os livros podem ser relacionados à classe derivada. A associação ou a relação entre os livros e a biblioteca pode ser considerada como composição. Isso ocorre porque a classe “Livros” é totalmente dependente da biblioteca de classes. Por exemplo, se a biblioteca for destruída, todos os livros nela também serão destruídos.
Confira nossos cursos de tecnologia gratuitos para obter uma vantagem sobre a concorrência.
Explore nossos cursos populares de engenharia de software
Mestre em Ciência da Computação pela LJMU & IIITB | Programa de Certificação de Cibersegurança Caltech CTME |
Bootcamp de Desenvolvimento Full Stack | Programa PG em Blockchain |
Programa Executivo PG em Desenvolvimento Full Stack | |
Veja todos os nossos cursos abaixo | |
Cursos de Engenharia de Software |
Uma descrição detalhada da composição em Java:
A Composição é uma forma de associação Java. As duas classes comunicantes são fortemente interligadas, onde a classe derivada é completamente dependente da classe pai. A existência independente da classe derivada não é possível neste caso. Por exemplo, um motor sem carro não pode existir independentemente. Esse tipo de associação é altamente restrito em comparação com a agregação. A composição é uma técnica de design e não deve ser confundida com um recurso Java.
A Composição pode ser usada para modelar objetos que possuem outros objetos como seus membros constituintes. Existe a relação tem-um entre esses objetos. Nesse tipo de associação, um objeto contém o outro objeto. Assim, o objeto constituinte é completamente dependente do objeto principal para sua sobrevivência. Assim, se o objeto que o contém é arruinado, o objeto constituinte também é afetado. Portanto, a relação de composição pode ser vista como uma parte da relação do todo em que a existência da parte sem o todo não é possível. Em outras palavras, a parte é excluída automaticamente na exclusão do todo. Isso implica que o todo tem uma relação firme com a parte.
Aprenda Cursos de Desenvolvimento de Software online nas melhores universidades do mundo. Ganhe Programas Executivos de PG, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Habilidades de desenvolvimento de software sob demanda
Cursos de JavaScript | Cursos Básicos de Java | Cursos de estruturas de dados |
Cursos de Node.js | Cursos de SQL | Cursos de desenvolvimento full stack |
Cursos NFT | Cursos DevOps | Cursos de Big Data |
Cursos React.js | Cursos de segurança cibernética | Cursos de computação em nuvem |
Cursos de Design de Banco de Dados | Cursos de Python | Cursos de Criptomoedas |
Como a herança é diferente da composição em Java?
É importante observar que a funcionalidade de herança também pode ser realizada usando composição em Java. Embora tanto a herança quanto a composição sejam usadas para oferecer a reutilização do código pela classe relacionada, existem diferenças sutis entre essas duas. A principal diferença entre os dois processos é que a composição é uma técnica de design, ao contrário da herança que é um recurso Java. Outras diferenças importantes entre os dois estão listadas na tabela abaixo.
Parâmetro | Composição | Herança |
básico | Ele incorpora um relacionamento HAS-A. | Ele incorpora um relacionamento IS-A. |
Reutilização de código | O código pode ser reutilizado em várias classes. | A reutilização de código só é possível em uma classe porque apenas uma interface pode ser estendida por uma classe. |
Alcance | Isso pode ser facilmente realizado no tempo de execução. | Os recursos são melhor realizados em tempo de compilação. |
Final | Facilita a reutilização de código até mesmo das classes finais. | O código das classes finais não pode ser reutilizado no caso de herança. |
Métodos | Os métodos não são expostos. Interfaces públicas são usadas para sua interação. | A herança expõe os métodos protegidos e públicos da classe base. |
Diferenças entre agregação e composição:
Agregação | Composição |
É um tipo de associação Java fraca. | É um tipo de associação mais forte quando comparado à agregação. |
A classe derivada é independente da classe base. Portanto, a classe derivada pode continuar a existir mesmo se a classe base for destruída. | A classe derivada é completamente dependente da classe base. Portanto, a subclasse não pode existir se a superclasse for destruída. |
A classe filha tem seu próprio tempo de vida. | O tempo de vida da classe filha depende da classe pai. |
A classe pai usa a classe filha nesse tipo de associação. Portanto, a classe derivada não pertence à classe base. | Nesse tipo de associação, a classe pai possui a classe filha. Portanto, a classe pai é a proprietária da classe filha. |
Constitui um relacionamento HAS-A. A classe derivada tem uma classe base. | Constitui uma relação de parte. A classe derivada faz parte da classe base. |
A palavra-chave final não é usada para denotar agregação. | A palavra-chave final pode ser usada para denotar composição. |
Exemplo: O carro tem motorista. | Exemplo: O motor é uma parte do carro. |
Leia nossos artigos populares relacionados ao desenvolvimento de software
Como implementar a abstração de dados em Java? | O que é classe interna em Java? | Identificadores Java: Definição, Sintaxe e Exemplos |
Entendendo o encapsulamento em OOPS com exemplos | Argumentos de linha de comando em C explicados | Os 10 principais recursos e características da computação em nuvem em 2022 |
Polimorfismo em Java: Conceitos, Tipos, Características e Exemplos | Pacotes em Java e como usá-los? | Tutorial do Git para iniciantes: aprenda o Git do zero |
Vantagens de usar Composição em Java:
- A composição facilita a reutilização do código Java.
- Embora múltiplas heranças não sejam suportadas por Java, a lacuna pode ser preenchida por esta técnica de design.
- Com o uso da composição, uma classe pode ser testada quanto à habilidade de uma maneira melhor.
- O código é feito mais flexível com o uso de composição. A implementação da classe composta pode ser substituída por uma versão aprimorada.
- Os membros do objeto podem ser alterados em tempo de execução para a alteração dinâmica do comportamento do programa com o uso de um relacionamento de composição.
Limitações de composição em Java:
Existem algumas desvantagens de usar composição em Java. A principal desvantagem da composição de objetos é que é mais difícil para o usuário entender o comportamento do sistema implementado apenas refletindo sobre o código-fonte. Um sistema que usa composição de objetos é altamente dinâmico por natureza. Portanto, entender o funcionamento dos sistemas que usam composição de objetos requer uma análise mais profunda do código-fonte e executar o código para testemunhar o funcionamento e a cooperação entre os objetos individuais no código-fonte.
Se você estiver interessado em aprender mais sobre Java, desenvolvimento de software full-stack, confira o Programa Executivo PG em Desenvolvimento de Software da upGrad & IIIT-B - Especialização em Desenvolvimento Full Stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso , 9+ projetos e atribuições, status IIIT-B Alumni, projetos práticos práticos e assistência de trabalho com as principais empresas.