O que é composição em Java com exemplos
Publicados: 2021-04-09Java é uma linguagem versátil que suporta programação orientada a objetos e reutilização de código com a construção de relacionamentos entre duas classes. Existem dois tipos de relacionamentos ou associações em Java usados para reutilizar um código e reduzir a duplicidade de uma classe para outra.
Esses relacionamentos são IS-A (Herança) e HAS-A (Associação). Embora haja um acoplamento estreito entre as classes IS-A, as classes HAS-A são fracamente acopladas e mais preferíveis para os programadores.
O relacionamento HAS-A é dividido em dois tipos, a saber, agregação e composição em Java . Este artigo é baseado no conceito OOP de composição. Veremos muitos exemplos reais de como a composição é codificada e as vantagens obtidas quando implementadas.
Índice
Uma breve narração de associações ou relacionamentos em Java
Na programação orientada a objetos, os objetos estão relacionados entre si e usam a funcionalidade comum entre eles. É aqui que vêm os tópicos de Herança, Associação, Agregação e Composição em programas Java.
Herança (IS-A) e Associação (HAS-A) em Java
1. Herança (IS-A)
Um relacionamento IS-A significa que um objeto é um tipo de outro. Ele é implementado usando as palavras-chave 'extends' e 'implements'.
Exemplo: laptop HP IS-A
2. Associação (HAS-A)
Um relacionamento HAS-A significa que uma classe tem um relacionamento com outra classe. Por exemplo, a classe A contém a referência da classe B e pode acessar todas as propriedades da classe B.
Exemplo: corpo humano TEM-A Heart
Fonte
Fonte
3. Agregação vs Composição
O relacionamento ou associação Has-A pode ser dividido em agregação e composição. Uma classe de contêiner de agregação e uma classe referenciada podem ter uma existência independente. Uma classe de referência de composição não pode existir se a classe de contêiner for destruída.
Vamos dar um exemplo para entender a agregação e a composição. Um carro tem suas partes, por exemplo, motores, rodas, tocador de música, etc. O carro não pode funcionar sem motor e rodas, mas pode funcionar sem um tocador de música. Aqui o motor e o carro têm uma relação de composição, e o carro e o tocador de música têm uma relação de agregação. No caso de Agregação, um objeto pode existir sem fazer parte do objeto principal.
Fonte
Composição em Java
Uma composição em Java entre dois objetos associados entre si existe quando existe uma forte relação entre uma classe e outra. Outras classes não podem existir sem o proprietário ou a classe pai. Por exemplo, uma classe 'Human' é uma composição de Coração e pulmões . Quando o objeto humano morre, nenhuma parte existe.
A composição é uma forma restrita de Agregação. Na Composição, uma classe inclui outra classe e é dependente dela, de modo que não pode existir funcionalmente sem outra classe.
Implementação de composição em Java
O relacionamento entre motor e carro é implementado usando classes Java conforme abaixo. Em Java, a palavra-chave 'final' é usada para representar Composição. Isso ocorre porque o objeto 'Proprietário' espera que um objeto de parte esteja disponível e funcione tornando-o 'final' .
carro de classe pública {
motor motor final privado ;
carro público (){
motor = new Motor();
}
}
classe Motor {
tipo de string privada ;
}
Tomemos outro exemplo que descreve tanto a herança quanto a composição.
Fonte
Neste programa, a classe Honda é um Carro e se estende da classe Carro. O objeto motor do carro é usado na classe Honda.
class CarEngine { public void StartEngine(){ System.out.println(“ O motor do carro deu partida .”); } public void stopEngine(){ System.out.println(“ O motor do carro parou .”); } } classe Carro { cor da string privada; private int maxi_Speed; public void carDetails(){ System.out.println(“Cor do carro= “+cor + “; Velocidade máxima= ” + maxi_Speed); } //Configurando a cor do carro public void setColour(String color) { this.color = cor; } //Configurando a velocidade máxima do carro public void setMaxiSpeed(int maxi_Speed) { this.maxi_Speed = maxi_Speed; } } classe Honda estende Carro{ public void HondaStart(){ CarEngine Honda_Engine = new CarEngine(); //composição Honda_Engine.startEngine(); } } classe pública Principal { public static void main(String[] args) { Honda HondaJazz = new Honda(); HondaJazz.setColour(“Preto”); HondaJazz.setMaxSpeed(160); HondaJazz.carDetails(); HondaJazz.HondaStart(); } } |
Saída:
Cor do carro = Preto; Velocidade máxima = 160
O motor do carro começou.
A saída é derivada usando composição e mostra os detalhes do carro Honda Jazz.
Denotações de Associação UML
As relações de associação, agregação e composição em Java entre as classes A e B são representadas da seguinte forma nos diagramas UML:
Associação: A—->B
Composição: A—–<preenchido>B
Agregação: A—–<>B
Obtenha diplomas de Engenharia de Software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Benefícios da composição em Java
O uso da técnica de design de composição em Java oferece os seguintes benefícios:
- É sempre viável “preferir composição de objetos sobre herança de classe”. As classes alcançam polimorfismo e reutilização de código por composição.
- A composição é flexível, onde você pode alterar a implementação da classe em tempo de execução alterando o objeto incluído e alterando seu comportamento.
- Um projeto baseado em composição tem um número menor de classes.
- O relacionamento “TEM-A” entre classes é semanticamente correto do que o relacionamento “IS-A”.
- A composição em Java oferece melhor testabilidade de classe que é especialmente útil no desenvolvimento orientado a testes.
- É possível obter “múltiplas heranças” em linguagens compondo vários objetos em um.
- Na composição, não há conflito entre métodos ou nomes de propriedades.
Conclusão
A composição em Java oferece muitas vantagens durante a programação e é um dos métodos de design preferidos. Neste artigo, tentamos fazer você entender esse importante conceito com exemplos da vida real e código prático. A composição oferece flexibilidade e código robusto. Seu recurso de reutilização de código ajuda a evitar a duplicação de código e a obter uma boa relação custo-benefício. Isso o torna um dos métodos amplamente utilizados em vários programas.
Aprenda composição em Java com o Mestrado em Ciências da Computação do upGrad, que visa fazer você aprender e atualizar suas habilidades em desenvolvimento de software.
Elegibilidade
Licenciatura AB com 50% ou notas equivalentes. Nenhuma experiência inicial de codificação é necessária.
Preços
A taxa do programa começa em Rs.13, 095/mês para Residentes Indianos e USD 5999 para Residentes Internacionais.