POO tem 4 pilares fundamentais que são: Abstração, Encapsulamento, Herança, Polimorfismo. Com a Abstração nós escondemos os detalhes e o complexidade e expomos apenas o essencial, desta forma nós reduzimos a complexidade e reduzimos o impacto das mudanças feitas no código.
redução da complexidade + redução do impacto das mudanças.
Usando Encapsulamento nós agrupamos propriedades e métodos relacionados e desta forma nós reduzimos a complexidade e podemos reutilizar esses objetos em outras partes do nosso projeto aumentando a reusabilidade.redução da complexidade + aumento da reusabilidade
Com a Herança nós eliminamos repetição de código.
eliminação de repetição de código
Usando Polimorfismo nós podemos remover if/switch statements.
remoção de código desnecessários
A maior parte da literatura disponível cita quatro, os três que são mais ou menos universais são:
Herança
É a capacidade de um objeto ser idealizado baseado em outro objeto.
Polimorfismo
É a capacidade de um objeto se passar por outro em determinada circunstância, desde que eles sejam compatíveis.
Encapsulamento
É a capacidade do objeto juntar tudo em uma coisa só, em geral acaba por ocultar os detalhes de implementação expondo só o que deve ser acessado publicamente, mas estritamente falando isto é abstração.
A maioria ainda aceita a abstração que é a capacidade de expressar algo em termos gerais, sem uma especificidade, isolado do que não importa naquele contexto. Nem todos concordam com isso porque parece ser apenas a soma do encapsulamento e do polimorfismo.
Fonte: https://pt.stackoverflow.com/questions/215679/quais-s%C3%A3o-os-pilares-da-programa%C3%A7%C3%A3o-orientada-%C3%A0-objetos
Abstração significa "esconder" partes da implementação do objeto expondo apenas uma interface simples para seu uso. Pense por exemplo num forno de micro-ondas, você não precisa entender toda a complexidade de como os componentes internos trabalham para gerar as ondas e produzir calor, você quer apenas apertar um ou dois botões e ter uma refeição quente pra comer. Toda essa complexidade são detalhes de implementação, você não precisa conhecê-los.
Da mesma forma seu objeto deve ter uma interface simples e amigável, deixando suas partes complexas ou detalhes de implementação protegidos do mundo exterior. Assim mudanças feitas internamente no nível da implementação não irão afetar sua interface pública e aqueles que utilizarem o objeto.
Encapsulamento se refere à construção do objeto de modo a proteger o acesso direto a seus dados internos. Ao encapsularmos um objeto estamos agrupando propriedades e métodos que estão diretamente relacionados dentro de um mesmo objeto, permitindo que essas propriedades sejam acessadas apenas através de métodos públicos. Desta forma tratamos de questões importantes como segurança e confiabilidade do estado do objeto.
A Herança é uma forma de eliminar repetição de código onde, como o próprio nome sugere, um objeto pode herdar características (ou seja, propriedades e métodos) de outra classe, sem a necessidade de se reescrever essas mesmas características.
Para um exemplo prático, pense nos objetos clt
e estagiario
. O objeto clt poderia ter métodos exclusívos como calculo_de_13
e fgts
, mas ambos compartilhariam propriedades como salario
e data_de_inicio
, e métodos como receber_salario
ou calcular_ferias
e não faria sentido implementar essas mesmas propriedades e métodos em ambas as classes, mas sim inserir essas características em uma classe pai como por exemplo funcionario
.
Poli significa muitas e Morphos significa forma, então Polimorfismo significa muitas formas. Em POO Polimorfismo é caracterizado quando duas ou mais classes possuem métodos com o mesmo nome, mas podendo ter implementações diferentes. Assim, é possível utilizar qualquer objeto que implemente o mesmo método sem nos preocuparmos com o tipo do objeto. Na prática isso nos possibilita remover do nosso código diversos if statements ou switch cases.
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar