O que é programação orientada a objeto? O Básico Explicado nos Termos do Leigo

A maioria das linguagens de programação modernas suporta o paradigma de programação orientada a objeto (OOP). Mas o que exatamente é OOP e por que é tão útil?

A maioria das linguagens de programação modernas suporta o paradigma de programação orientada a objeto (OOP).  Mas o que exatamente é OOP e por que é tão útil?
Propaganda

Se você já fez alguma programação para iniciantes, ou mesmo começou a olhar para idiomas diferentes, provavelmente já se deparou com a frase “programação orientada a objetos” (ou “OOP”).

Existem todos os tipos de explicações técnicas sobre o que é, mas hoje vamos dar uma olhada na definição de programação orientada a objetos de uma maneira simples.

Antes de Começarmos: Linguagens Procedurais

Para entender o que é uma linguagem de programação orientada a objetos, você precisa entender o que ela substituiu. As primeiras linguagens de programação eram processuais - assim chamadas porque o programador definiria um conjunto muito específico de procedimentos que o computador executaria.

O que é programação orientada a objeto e como começar a aprender

Nos primeiros dias, os procedimentos foram escritos em cartões perfurados. Essas etapas coletaram dados, executaram uma sequência de ações nesses dados e, em seguida, geraram novos dados.

As linguagens procedurais funcionaram bem por um tempo (e algumas ainda estão em uso). Mas quando você quer programar algo além de uma sequência básica de etapas, linguagens procedurais podem se tornar difíceis de gerenciar. É aí que entra a programação orientada a objetos.

O objeto de programação orientada a objeto

Então, o que é programação orientada a objetos?

A primeira linguagem orientada a objetos (geralmente aceita como Simula) introduziu a ideia de objetos . Objetos são coleções de informações que são tratadas como uma entidade singular.

Vamos mergulhar mais fundo no que isso realmente significa em um segundo com um exemplo, mas primeiro temos que falar sobre classes . As classes são como pré-objetos. Eles contêm uma lista de atributos que, quando definidos, se tornam um objeto.

O que é programação orientada a objeto e como começar a aprender

Vamos pegar o exemplo de programar um jogo de xadrez. Podemos ter uma classe chamada Piece. Dentro do Piece, temos uma lista de atributos:

  • Cor
  • Altura
  • Forma
  • Movimento permitido

Um objeto simplesmente define uma instância particular de uma coisa pertencente a essa classe.

Então poderíamos ter um objeto chamado WhiteQueen. Esse objeto teria definições para todos os quatro atributos (branco, alto, cilíndrico com ameias, qualquer número de espaços em qualquer direção). Pode também ter métodos ou funções.

O que torna isso muito melhor do que a abordagem processual?

Em suma, linguagens de programação orientadas a objetos (como o Java) facilitam a organização de dados e códigos de uma maneira mais versátil para projetos maiores.

Para discutir isso um pouco mais detalhadamente, falaremos sobre os quatro princípios básicos da programação orientada a objetos.

Programação Orientada a Objetos: Abstração

Só porque você quer usar algo não significa que você precisa saber como funciona. Uma máquina de café expresso, por exemplo, é complexa. Mas você não precisa saber como isso funciona. Você só precisa saber que quando você apertar "On", você vai ter café expresso.

O que é programação orientada a objeto e como começar a aprender

O mesmo vale para objetos em programação orientada a objetos. No nosso exemplo de xadrez, podemos ter um método move (). Esse método pode exigir muitos dados e outros métodos. Pode precisar da posição inicial e das variáveis ​​da posição final. Poderia usar outro método para determinar se foi capturado uma peça.

Mas você não precisa saber disso. Tudo que você precisa saber é que quando você diz para a peça se mover, ela se move. Isso é abstração.

Programação Orientada a Objetos: Encapsulamento

O encapsulamento é uma das maneiras pelas quais a programação orientada a objetos cria abstração. Cada objeto é uma coleção de dados tratados como uma única entidade. E dentro desses objetos estão os dados - variáveis ​​e métodos.

As variáveis ​​dentro de um objeto são geralmente mantidas privadas, o que significa que outros objetos e métodos não podem acessá-los. Objetos só podem ser afetados usando seus métodos.

Um objeto Bishop pode conter várias informações. Por exemplo, poderia ter uma variável chamada “position”. Essa variável é necessária para usar o método move (). E, claro, tem uma cor.

Ao tornar pública a variável position e o método move (), um programador protege a variável move de ser afetada por qualquer outra coisa. E se a cor é uma variável privada, não há como outro objeto alterá-la, a menos que exista um método que permita a alteração. (Que você provavelmente não teria, pois a cor da peça deve permanecer constante.)

Essas variáveis ​​e métodos são mantidos dentro do objeto Bishop. Por serem encapsulados, um programador poderia fazer uma alteração na estrutura ou no conteúdo do objeto sem se preocupar com a interface pública.

Programação Orientada a Objetos: Herança

Além das classes, as linguagens de programação orientadas a objetos também possuem subclasses. Eles contêm todos os atributos da classe pai, mas também podem conter outros atributos.

Em nosso jogo de xadrez, as peças de peão precisam de um método que possa transformá-las em outras peças se chegarem ao final do tabuleiro. Vamos chamá-lo de método transformPiece ().

Nem toda peça precisa do método transformPiece (). Então não queremos colocá-lo na classe Piece. Em vez disso, podemos criar uma subclasse chamada Pawn. Por ser uma subclasse, ela herda todos os atributos de Piece. Portanto, uma instância da subclasse Pawn inclui uma cor, altura, forma e movimento permitidos.

Mas também inclui o método transformPiece (). Agora, nunca precisamos nos preocupar com o uso acidental dessa função em uma torre. Aqui está uma explicação técnica:

Criar subclasses também economiza muito tempo. Em vez de criar novas classes para tudo, os programadores podem criar uma classe base e estendê-la para novas subclasses quando necessário. (No entanto, é importante notar que a dependência excessiva da herança é ruim. 10 Princípios Básicos de Programação Todo Programador Deve Seguir 10 Princípios Básicos de Programação Todo Programador Deve Seguir Sempre escreva código que possa ser mantido por qualquer um que possa acabar trabalhando em seu software. Por fim, aqui estão vários princípios de programação para ajudá-lo a limpar seu ato. Leia mais.)

Programação Orientada a Objetos: Polimorfismo

O polimorfismo é resultado da herança. Entender completamente o polimorfismo requer algum conhecimento de programação, então vamos nos ater apenas ao básico aqui. Em suma, o polimorfismo permite que os programadores usem métodos com o mesmo nome, mas com objetos diferentes .

Por exemplo, nossa classe Piece pode ter um método move () que mova uma peça em um espaço em qualquer direção. Isso funciona para o rei, mas não para mais nada. Para corrigir esse problema, podemos definir o novo método move () na subclasse Rook que define o movimento como um número ilimitado de espaços para frente, para trás, para a esquerda ou para a direita.

Agora, quando um programador invoca o método move () e usa uma peça como argumento, o programa saberá exatamente como a peça deve se mover. Isso economiza uma tonelada de tempo tentando descobrir qual dos muitos métodos diferentes você deve usar.

Programação orientada a objetos em poucas palavras

Se a sua cabeça está girando um pouco depois das últimas quatro definições, não se preocupe muito. Aqui estão as principais coisas que você precisa lembrar:

  • A programação orientada a objetos coleta informações em entidades únicas chamadas objetos.
  • Cada objeto é uma única instância de uma classe.
  • A abstração oculta o funcionamento interno de um objeto quando não é necessário vê-lo.
  • O encapsulamento armazena variáveis ​​e métodos relacionados dentro de objetos e os protege.
  • A herança permite que subclasses usem atributos de classes pai.
  • O polimorfismo permite que objetos e métodos lidem com várias situações diferentes com uma única interface.

Se você conseguir se lembrar desses pontos, terá uma boa noção do que é programação orientada a objetos. Os quatro princípios básicos da programação orientada a objetos, como mencionei, podem ser um pouco difíceis de serem resolvidos. Mas uma vez que você comece a programar, eles se tornarão mais claros.

Lembre-se de que apenas discutimos generalidades neste artigo. Diferentes linguagens orientadas a objetos terão suas próprias peculiaridades e maneiras de fazer as coisas acontecerem. Depois de escolher o idioma certo para você Looking for the Best Programming Languages? Começa aqui! Procurando as melhores linguagens de programação? Começa aqui! Se você é completamente novo em linguagens de programação ou quer entrar em um novo tipo de programação, uma das perguntas mais importantes a fazer é: "Qual linguagem de programação é a certa para mim?" Leia mais, você começará a aprender como isso coloca os princípios da POO em prática.

In this article