[Conceito] – Orientação a Objetos: Modele Comportamento

Conteúdo original em https://twitter.com/zanfranceschi/status/1567216344428584960

Ei dev,

Pra você que é iniciante em Orientação a Objetos e quer ficar calvo ou calva de tanto que a brisa da vitória irá esvoaçar seus cabelos, cola mais pra essa dic…


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Francisco Zanfranceschi

Conteúdo original em https://twitter.com/zanfranceschi/status/1567216344428584960

Ei dev,

Pra você que é iniciante em Orientação a Objetos e quer ficar calvo ou calva de tanto que a brisa da vitória irá esvoaçar seus cabelos, cola mais pra essa dica de modelagem com foco em COMPORTAMENTO!

Cola mais pra eu te explicar o rolê.

cc @sseraphini

Image

Tá, mas e quando você abre aquele tutorial na internet e se depara com uma modelagem simples como essa? Fazer um "banco" pra ensinar os fundamentos de OO.

Parece bem comum, né? Cliente, Conta e seus atributos...

Image

Aí depois o tutorial fala pra criar um método "transferir" – mais arroz e feijão que isso não conheço.

Não tá ruim, né? Parece coerente modelar a Conta sendo responsável pela transferência.

Image

Depois, você começa a aprender bancos de dados e ORMs (hibernate, entity framework, prisma, doctrine, sqlalchemy, etc).

Naturalmente, o foco é nas estruturas e atributos e depois faz os save, delete, etc.

Image

Aí você encontra outro tutorial sobre introdução a Orientação a Objetos...

...com o tema "carro"! (leia com uma entonação de americano bobo empolgado)

É o carro que é veículo, aí o carro tem os métodos "acelerar", "virar"... e assim caminha a humanidade.

Image

Quase todo material introdutório a orientação a objetos é assim: foco na estrutura (campos, atributos, forma) e o comportamento (métodos) vem depois, meio que como uma cola.

Pois bem, aí vc roda uns quilómetros na estrada dev e começa a se deparar com DDD, TDD, clean architecture, hexagonal, archiecture, ports and adapters e os escambau a quatro.

Parece que os materiais deram um salto quântico e você se sente mais perdida que pulga em cobra. 🥲

Image

Por tudo isso, gostaria de propor uma nova forma para você pensar nas suas modelagens. Sem buzz-words, sem conceitos complexos pra quem está iniciando: FOQUE EM COMPORTAMENTO!

MODELE COMPORTAMENTO TAMBÉM COMO OBJETOS!

Orientação a Objetos é comumente ensinada como se as coisas precisassem refletir uma visão estática do mundo. É como se apenas as coisas perceptíveis numa foto merecessem virar uma classe ou objeto.

Você não vê um carro virando numa foto, mas vê o carro, o volante, a roda, etc.

Numa foto duma loja, você não veria a transação da compra em si. Você veria a cliente, o caixa, o produto.

Parece que o termo "objeto" está sendo levado ao pé da letra demais no ensino de OO.

Image

Por sugestão, quero dizer pra você também considerar comportamento. Quero dizer para você experimentar modelar classes que expressem fluxo, movimento, comportamento! Como se você passasse a enxergar um vídeo em vez de apenas uma foto!

Vamos a alguns exemplos práticos.

Vamos imaginar um banco (financeiro) num tutorial em que gostaríamos de abrir uma conta. A gente poderia começar a modelar o comportamento em primeiro plano e a estrutura depois, em segundo plano.

Image

Poderíamos imaginar outros exemplos também de modelagem com foco em comportamentos expressos em objetos*.

* Gosto de chamar classes de objetos porque muitas vezes estou falando do runtime, da aplicação funcionando, instancias, etc – não design. Classe é design, objeto é runtime.

Image

Image

Talvez modelar dessa forma possa lhe parecer errado, contra o que você aprendeu.

Não estou falando que essa forma é a correta, estou lhe sugerindo dar a chance de pensar dessa forma. Isso vai lhe possibilitar uma abordagem diferente que pode te ajudar em algumas situações.

Essa forma de pensar vai te abrir uma nova dimensão. Além do mais, quando você conversa com usuários de sistemas, raramente fala-se de estrutura de início – fluxos frequentemente é que são os objetos das conversas (trocadilho proposital).

Experimente começar seus desenhos/análises/diagramas com fluxos e comportamentos em vez de estruturas.

Gregor Hohpe disse em um de seus livros que, num diagrama, as setas/conexões são mais interessantes do que as caixinhas e essa thread é sobre isso!

Ah, modelar objetos pensando em comportamento pode gerar um pouco mais de dificuldade na persistência (afinal, persistência é apenas estrutura, nunca comportamento). Mas por outro lado, pensar em eventos será mais fácil ("conta aberta", "usuário logado", "carro colidiu", etc).

No passado, fiz uma thread que aborda mais ou menos essa ideia de comportamento vs estrutura, entretanto, num nível mais alto.

Tá aí, caso se interesse 👇

https://twitter.com/zanfranceschi/status/1515015604977401857

Agora me conta aí como você geralmente modela seus objetos? Compartilha seu processo com a gente 🙂

Bom, era o que tinha pra falar pra você que está iniciando.

Espero que esse assunto tenha causado, pelo menos, alguma curiosidade para experimentação.

Gostaria também de agradecer demais se chegou até aqui e especialmente ao @lixeletto pela revisão! ♥️

Um abraço e um beijo.


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Francisco Zanfranceschi


Print Share Comment Cite Upload Translate Updates
APA

Francisco Zanfranceschi | Sciencx (2022-09-06T18:22:51+00:00) [Conceito] – Orientação a Objetos: Modele Comportamento. Retrieved from https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/

MLA
" » [Conceito] – Orientação a Objetos: Modele Comportamento." Francisco Zanfranceschi | Sciencx - Tuesday September 6, 2022, https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/
HARVARD
Francisco Zanfranceschi | Sciencx Tuesday September 6, 2022 » [Conceito] – Orientação a Objetos: Modele Comportamento., viewed ,<https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/>
VANCOUVER
Francisco Zanfranceschi | Sciencx - » [Conceito] – Orientação a Objetos: Modele Comportamento. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/
CHICAGO
" » [Conceito] – Orientação a Objetos: Modele Comportamento." Francisco Zanfranceschi | Sciencx - Accessed . https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/
IEEE
" » [Conceito] – Orientação a Objetos: Modele Comportamento." Francisco Zanfranceschi | Sciencx [Online]. Available: https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/. [Accessed: ]
rf:citation
» [Conceito] – Orientação a Objetos: Modele Comportamento | Francisco Zanfranceschi | Sciencx | https://www.scien.cx/2022/09/06/conceito-orientacao-a-objetos-modele-comportamento/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.