1. Apresentando os princípios da POO

Hoje você descobrirá um mundo novo e interessante. O mundo da Programação Orientada a Objetos ( POO ). Você já aprendeu sobre classes e objetos. Hoje você aprenderá mais sobre eles, muito mais.

OOP surgiu como uma resposta à crescente complexidade dos programas. Quando as variáveis ​​e métodos nos programas começaram a chegar às dezenas de milhares, ficou claro que algo precisava ser feito. Uma solução era combinar dados e métodos associados em objetos separados.

Agora os programadores tinham que descrever separadamente como os objetos interagem externamente e como eles se comportam internamente. Isso tornou muito mais fácil entender e escrever programas. No entanto, uma questão permaneceu: quais métodos devem ser internos a um objeto e quais devem estar disponíveis para outros objetos?

Muitas abordagens foram tentadas. E com base nas melhores práticas descobertas, surgiram 4 princípios de OOP . Eles são abstração, encapsulamento, herança e polimorfismo . Anteriormente, havia apenas três, mas depois os especialistas decidiram adicionar a abstração também.


2. Abstração

As pessoas na Internet ainda discutem sobre a definição de abstração em POO . O problema não é que todos estão errados. É que todos estão certos . Quanto menor for um programa, mais abstração está ligada à linguagem Java. Quanto maior for um programa, mais a abstração está vinculada à modelagem/simplificação de objetos do mundo real.

Mas as melhores mentes parecem concordar que:

Abstração é o uso apenas das características de um objeto que o representam com precisão suficiente em um programa. A idéia principal é representar o objeto com o menor conjunto de campos e métodos que simultaneamente permitam que suas tarefas sejam resolvidas com precisão suficiente .

Em Java, a abstração é realizada por meio de classes e interfaces abstratas.

Abstração na vida real

Um bom exemplo de abstração na vida real são as descrições de cargos em uma empresa ou organização. O título de uma posição é uma coisa, mas as responsabilidades específicas atribuídas a uma posição são um assunto completamente diferente.

Imagine que você está projetando a estrutura organizacional de sua futura empresa. Você pode dividir as responsabilidades de secretariado, espalhando-as por vários cargos diferentes. Você pode dividir a posição de CEO em várias posições separadas: CFO, CTO, CMO, Diretor de RH. Ou, por exemplo, você pode combinar os cargos de gerente de escritório e recrutador em um.

Você pensa em cargos e depois divide as responsabilidades para esses cargos. Abstração é romper com o objeto como um todo e selecionar as propriedades e componentes essenciais de que precisamos.

Apresentando os princípios da POO.  Abstração

Do ponto de vista da programação, a abstração é a divisão correta de um programa em objetos . Normalmente, existem dezenas de maneiras de representar qualquer programa grande como objetos interativos. A abstração permite selecionar as características essenciais e ignorar as não essenciais.


3. Encapsulamento

O objetivo do encapsulamento é melhorar as interações tornando os objetos mais simples.

E a melhor maneira de simplificar algo é esconder qualquer coisa complicada de olhares indiscretos. Por exemplo, se você for colocado no cockpit de um jato Boeing jumbo, não entenderá imediatamente como operá-lo:

Mas para os passageiros do avião tudo é mais simples: você compra uma passagem e entra no avião, que decola e depois pousa. Você pode voar facilmente de um continente para outro com apenas a capacidade de "comprar uma passagem" e "entrar em um avião". Toda a complexidade de preparar a aeronave para vôo, decolagem, pouso e várias situações de emergência está escondida de você. Isso sem falar nos centros de navegação por satélite, piloto automático e controle de tráfego aéreo. E isso simplifica a vida para nós.

Do ponto de vista da programação, o encapsulamento é "ocultar a implementação". Eu gosto dessa definição. Nossa classe pode conter centenas de métodos e implementar comportamentos muito complexos em várias situações. Mas podemos ocultar todos os seus métodos de olhos curiosos (marcando-os com o modificador private) e deixar apenas dois ou três métodos para interagir com outras classes (marcando-os com o modificador public). Então todas as outras classes do nosso programa verão apenas os três métodos públicos e os chamarão, mas não outros. E toda a complexidade estará escondida dentro da classe, assim como o cockpit está escondido dos passageiros felizes.


4. Herança

Existem dois lados da herança . Herança na programação e herança na vida real. Na programação, a herança é um relacionamento especial entre duas classes . Mas a herança na vida real é muito mais interessante.

Se precisarmos criar algo na vida real, temos duas opções:

  1. Criar o que precisamos do zero, gastando muito tempo e esforço.
  2. Criar o que precisamos com base em algo que já existe.

A estratégia ideal é esta: pegue uma boa solução existente, modifique-a um pouco, ajuste-a para atender às nossas necessidades e, então, use-a.

Se traçarmos a história humana desde o início, descobriremos que bilhões de anos se passaram desde que a vida começou no planeta. Mas se considerarmos que o ponto de partida dos humanos são nossos ancestrais primatas (ou seja, os humanos são "baseados em" ancestrais primatas), então apenas alguns milhões de anos se passaram. Construir do zero leva mais tempo. Muito mais tempo.

Na programação, você pode fazer algo semelhante criando uma classe baseada em outra. A nova classe descende (herda) da classe existente. Isso é muito benéfico quando uma classe existente possui 80-90% dos dados e métodos de que precisamos. Simplesmente declaramos a classe apropriada como pai de nossa nova classe, e todos os dados e métodos da classe pai aparecem automaticamente na nova classe. Conveniente, certo?


5. Polimorfismo

Polimorfismo é um conceito de programação. Ele descreve uma situação em que diferentes implementações estão ocultas atrás de uma única interface. Olhando para a vida real como uma contraparte, descobrimos que operar um veículo é uma boa opção.

Se alguém pode dirigir um caminhão, também pode ser colocado ao volante de uma ambulância ou de um carro esporte. Uma pessoa pode operar um carro, independentemente do tipo de carro, porque todos os carros têm a mesma interface de controle: volante, pedais e câmbio. Os internos dos carros são diferentes, mas todos têm a mesma interface de controle.

Voltando ao mundo da programação, o polimorfismo permite que objetos de diferentes classes (geralmente tendo um ancestral comum) sejam acessados ​​da mesma forma, uma propriedade cujo valor dificilmente pode ser exagerado. Seu valor aumenta à medida que o programa cresce.

OOP significa princípios. Leis internas. Cada um deles nos limita de alguma forma, mas oferece grandes benefícios em troca quando o programa se torna grande. Os quatro princípios da POO são como as quatro pernas de uma mesa. Retire um e todo o sistema se torna instável.