Logo pt.removalsclassifieds.com

Diferença entre composição e herança (com tabela)

Índice:

Anonim

Através do uso de versões anteriores para criar um novo software usando os conceitos de reutilização é referido como código reutilizável em programação. Em empresas de tecnologia da computação, a reutilização de código é considerada uma função de produtividade crítica. Na programação de entidades, existem duas maneiras básicas de definir esses relacionamentos: herança e composição.

Composição vs. Herança

A diferença entre composição e herança é que a composição é usada para construir uma classe tendo um relacionamento “tem um” em vez de um relacionamento “é um” como na herança. A herança permite que funções de membro por meio de uma classe se tornem propriedade de outra sem ter que codificá-las diretamente na classe.

A herança de classe é restabelecida com a composição do artigo. A composição é descrita como o uso de uma entidade dentro de outra. Uma vez que é simples construir classes complicadas utilizando classes previamente publicadas e bem projetadas como componentes, pode-se sempre usar um objeto como um campo dentro de outra classe. Tudo isso é conhecido como composição.

Em OOP, herança se refere ao processo pelo qual uma entidade adquire as características de outra. É uma das maneiras mais eficazes de impor a reutilização de código em OOP. Uma nova classe pode ser formada criando relações pai-filho com as classes atuais usando herança. As classes podem herdar estados e comportamentos usados ​​com frequência de algumas das outras classes devido à computação orientada a objetos.

Tabela de comparação entre composição e herança

Parâmetros de comparação

Composição

Herança

Significado Acabamos de declarar um tipo que queremos utilizar na composição e ele pode armazenar várias implementações que podem variar em tempo de execução. Definimos a classe que estamos adotando (superclasse) na herança e não pode ser alterada na execução.
Combinação de classes A capacidade de combinar funcionalidade de classes distintas é fornecida por meio de composição. Só podemos estender uma classe neste caso; em outras palavras, muitas classes não podem ser estendidas porque Java não permite várias heranças.
Funcionalidade A composição nos permite testar a funcionalidade das classes que estamos usando, sem ter que nos preocupar se elas são classes pai ou filho. A herança requer o uso de uma classe pai para testar uma classe filha.
Reutilização de código Mesmo o código das classes finais pode ser reutilizado graças à composição. A classe final não pode ser estendida por herança.
Relação É uma situação "difícil". É uma situação "é um".

O que é composição?

Uma composição é uma forma de agregação em que a propriedade está implícita. Existe uma dependência porque um objeto é dependente de outro. Considere os seguintes objetos: um objeto escola e um objeto sala de aula. O objeto escola é necessário para que o objeto sala de aula exista. O objeto da sala de aula é danificado se o objeto da escola for destruído. Como resultado, esses dois itens são interdependentes. Como tal, é de fato uma composição. Em outras palavras, chamamos algo de composição se não puder existir sem o todo.

Uma outra conexão entre as classes dada por OOP é a composição, também conhecida como relação tem-uma. Se de alguma forma as características de um objeto devem ser incorporadas às características de outro, o relacionamento necessita de composição. Para criar uma nova classe a partir da classe pai, o objeto de cada classe deve ser declarado como membro da classe atual.

Composição é descrita como o uso de um objeto dentro de outro objeto. Uma entidade pode ser usada como um campo em qualquer classe regularmente. Na composição, eles usam uma entidade que faz parte de uma classe. A composição do item, ao contrário da herança de classe, é descrita continuamente em tempo de execução por entidades que obtêm conexões com outros objetos.

O que é herança?

Herança é quando uma nova classe usa os atributos e métodos de uma classe existente. Essa classe pré-existente é conhecida como classe pai, superclasse ou classe básica. A nova classe é conhecida como classe filha, sub ou classe derivada. Devido à herança, o criador nem mesmo precisa escrever o código desde o início. Ele pode usar herança para reutilizar os atributos e métodos de uma ideia derivada na nova classe. Como resultado, a herança melhora a reutilização do código. A herança pode ser de natureza única, multinível, hierárquica, Múltipla e Híbrida.

Se quisermos construir uma nova classe, mas parece haver uma com parte do código de que precisamos, podemos extrair nossa nova classe da atual. Poderíamos reutilizar as propriedades e métodos da classe atual em vez de escrevê-los nós mesmos. Uma subclasse herda a maioria dos representantes de sua superclasse. Construtores não são participantes, então eles não são passados ​​para subclasses, mas a função Object () {[código nativo]} da superclasse pode ser chamada a partir da subclasse.

Principais diferenças entre composição e herança

Conclusão

Uma vez que classes complicadas são mais simples de construir usando classes previamente escritas e bem projetadas, às vezes você vai querer usar um objeto como um campo dentro de outra classe. É aí que entra a capacidade de composição. Uma vez que a herança permite que você reutilize o código expandindo uma classe com pouco esforço, é uma ferramenta útil para criar relacionamentos entre classes.

A composição é preferível em geral porque permite que você use um objeto sem perder seus dados internos, que é onde a composição é útil. Embora a herança tenha suas desvantagens, a composição de objetos apresenta problemas de desempenho semelhantes em termos de formação e destruição de objetos.

Diferença entre composição e herança (com tabela)