Para entender a POO (Programação Orientada a Objetos) precisamos compreender seus 4 pilares fundamentais que são:
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.
No exemplo dado acima, utilizando polimorfismo podemos implementar o método calcular_ferias
em cada um dos objetos clt
e estagiario
, sendo que cada um desses métodos pode ter uma implementação diferente.
Então temos como vantagens na utilização da Programação Orientada a Objetos:
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 impácto das mudanças feitas no código.
redução da complexidade + redução do impácto 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
Visualizações: 27.429
26 de abril de 2024
08 de novembro de 2016
21 de setembro de 2013
26 de agosto de 2013
25 de agosto de 2013
22 de agosto de 2013
19 de agosto de 2013
19 de agosto de 2013
19 de agosto de 2013
19 de agosto de 2013