Diferença entre herança e composição

Diferença entre herança e composição
Diferença entre herança e composição

Vídeo: Diferença entre herança e composição

Vídeo: Diferença entre herança e composição
Vídeo: Qual a DIFERENÇA entre curso AUTORIZADO e RECONHECIDO pelo MEC? O que é CURSO AUTORIZADO RECONHECIDO 2024, Julho
Anonim

Herança vs Composição

Herança e Composição são dois conceitos importantes encontrados em POO (Programação Orientada a Objetos). Em termos simples, tanto a composição quanto a herança lidam com o fornecimento de propriedades ou comportamentos adicionais para uma classe. Herança é a capacidade de uma classe herdar propriedades e comportamento de uma classe pai, estendendo-a. Por outro lado, Composição é a capacidade de uma classe conter objetos de diferentes classes como dados de membros.

O que é Herança?

Como mencionado acima, Herança é a capacidade de uma classe herdar propriedades e comportamento de uma classe pai estendendo-a. A herança essencialmente fornece a reutilização de código ao permitir a extensão de propriedades e comportamento de uma classe existente por uma classe recém-definida. Se a classe A estende B, então a classe B é chamada de classe pai (ou superclasse) e a classe A é chamada de classe filha (ou classe derivada/subclasse). Neste cenário de exemplo, a classe A herdará todos os atributos e métodos públicos e protegidos da superclasse (B). A subclasse pode opcionalmente substituir (fornecer funcionalidades novas ou estendidas aos métodos) o comportamento herdado da classe pai.

Herança representa um relacionamento “é-um” em OOP. Isso significa essencialmente que A também é um B. Em outras palavras, B pode ser a classe com uma descrição geral de uma certa entidade do mundo real, mas A especifica uma certa especialização. Em um problema de programação do mundo real, a classe Person pode ser estendida para criar a classe Employee. Isso se chama especialização. Mas você também pode primeiro criar a classe Employee e depois generalizá-la também para uma classe Person (i.e. generalização). Neste exemplo, o Funcionário terá todas as propriedades e comportamento da Pessoa (ou seja, Funcionário também é uma Pessoa) e pode conter algumas funcionalidades adicionais (portanto, Pessoa não é um Funcionário) também.

O que é Composição?

Composição é a capacidade de uma classe de conter objetos de diferentes classes como dados de membros. Por exemplo, a classe A pode conter um objeto da classe B como membro. Aqui, todos os métodos públicos (ou funções) definidos em B podem ser executados dentro da classe A. A classe A se torna o contêiner, enquanto a classe B se torna a classe contida. A composição também é chamada de Containership. Neste exemplo, pode-se dizer que a classe A é composta pela classe B. Na POO, Composição representa um relacionamento “tem-a”. É importante observar que, mesmo que o container tenha acesso para executar todos os métodos públicos da classe contida, ele não pode alterar ou fornecer funcionalidades adicionais. Quando se trata de um problema de programação do mundo real, um objeto da classe TextBox pode estar contido na classe Form, e assim pode-se dizer que um Form contém um TextBox (ou alternativamente, um Form é composto de um TextBox).

Qual é a diferença entre Herança e Composição?

Embora Herança e Composição sejam dois conceitos OOP, eles são bem diferentes no que permitem ao programador alcançar. Herança é a capacidade de uma classe herdar propriedades e comportamento de uma classe pai estendendo-a, enquanto a composição é a capacidade de uma classe conter objetos de classes diferentes como dados de membro. Se uma classe for estendida, ela herdará todas as propriedades/comportamentos públicos e protegidos e esses comportamentos poderão ser substituídos pela subclasse. Mas se uma classe estiver contida em outra, o contêiner não terá a capacidade de alterar ou adicionar comportamento ao contido. Herança representa um relacionamento “é-um” em OOP, enquanto Composição representa um relacionamento “tem-um”.

Recomendado: