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
Top comments (1)
cheguei meio tarde pra leitura mas gostei kk muito bom o artigo!