Orientação a Objetos e Biologia??
Published: 2021-04-07 18:02:04

Nos dias 08, 09 e 10 de junho ajudei a organizar um evento de tecnologia em Brasília, o Brasília Dev Festival e no dia 08, sexta-feira fizemos um workshop sobre C# com a Thamirys Gameiro. Enquanto a Thamirys recordava os conceitos de Orientação a Objetos (O.O.) treinávamos esses conceitos modelando animais como nossos objetos.

Desse exercício, surgiu uma discussão interessante, sobre a qual eu resolvi escrever.

Estudar linguagens de programação modernas cedo ou tarde (e eu diria cedo) nos põe em contato com o conceito de Orientação a Objetos e esse conceito normalmente não é tão facilmente assimilado, principalmente para aqueles que vem do paradigma procedural. A ideia de algo independente com características e comportamentos próprios pode até ser de fácil compreensão mas o problema normalmente surge quando tentamos atravessar o âmbito dos exemplos naturais, para os não naturais, ou seja aqueles que normalmente utilizamos no nosso dia-a-dia de trabalho com programação.

Mas você sabia que tem um motivo particular que explique porque os exemplos naturais fazem tanto sentido para explicar o conceito de O.O.? Existe sim e a razão é que o conceito surgiu da Biologia!

Há alguns anos, Alan kay, um dos pais do paradigma da orientação a objetos, sugeriu uma abordagem de desenvolvimento de software baseado no funcionamento de organismos vivos, essa foi a chamada “analogia biológica”. Kay acreditava que, assim como, um organismo vivo consegue se organizar de forma a resolver problemas, um sistema de software também deveria ser capaz.

Seres vivos são compostos por células, cada célula é independente e autônoma, no entanto elas se unem e trabalham em equipe, através de trocas de mensagens em prol de um objetivo comum.

Gostou da semelhança? Faz sentido então pensar que os sistemas trabalhassem de forma análoga a organismos vivos, e assim surgiu o paradigma de orientação a objetos. Um sistema de software, para o paradigma, é visto como uma coleção de agentes autônomos, chamados de objetos. Esses objetos trabalham em conjunto para realizar tarefas comuns.
Enquanto modelávamos nosso pato no workshop de C# descobrimos que esse pato pertence a uma classe, que ele herda características do pai e que pode assumir comportamentos que normalmente não atribuímos de primeira a uma ave, como nadar, por exemplo.

Já fez a ligação aí né?! Mas vamos fazer um apanhado sobre cada um deles, do meu jeito!

Classes

Classes são agrupadores, tudo aquilo que tem características e comportamentos em comum pertencem a mesma classe. Nosso indivíduo pato, com suas asas, “pés de borracha”, penas e bico, que faz quá-quá e se locomove nadando, andando e voando tem outros semelhantes a ele, ou seja, pertence a um grupo, a classe pato. Fica claro aqui também, que o indivíduo nesse caso, é o objeto, o representante desse grupo que chamamos de classe.

Herança

Esse é na minha opinião o mais simples, a herança é o conceito que liga dois objetos de maneira hierárquica, ou parental, como preferir. A questão é, uma classe mãe ou super-classe, tem classes filhas ou subclasses. De maneira prática classes vão derivar de outras, herdando características e comportamentos. Nosso patinho deriva da classe animal e herda características comuns aos animais, é vivo, se locomove, se alimenta.

Polimorfismo

O polimorfismo, acontece quando em uma classe base há uma assinatura de um método que é propagado para as suas classes derivadas, no entanto, a lógica que está no método da classe base pode mudar para a mesma assinatura nas classes derivadas. Difícil? Nãããão! É mais simples do que parece, o pulo da gato é o seguinte, o carinha tem um método na classe mãe, o método emitirSom() na classe Animal. Nosso patinho então vai sobreescrever esse método emitirSom() aplicando suas próprias características, retornando “quá quá” por exemplo.

Faltaram as classes abstratas e as interfaces que vamos deixar para a segunda parte. E dá próxima vez que precisar modelar/implementar um sistema O.O, você já sabe a quem agradecer ou xingar. kkkk… Viva Alan Kay e a analogia biológica!

Ps.: Trazendo o artigo escrito em 19 de junho de 2018 de outra plataforma para o dev.to