Executando verificação de segurança...
Respondendo a "Vale lembrar que não existe uma definição única..." dentro da publicação [Não disponível]
2

Principalmente a ideia de "mundo real" é bem controversa, na verdade já bastante refutada, já constando só nos anais marketeiros e reproduções desavisadas. Não é possível reproduzir o mundo real e qualquer tentativa só cria problemas para o código. Tem que afastar essa ideia de imediato. Acho que falaram assim pra facilitar o entendimento, mas as pessoas levaram ao pé da letra e começaram fazer isso.

Obrigado por citar algo que eu postei.

Eu postagens mais recentes eu cito que até o Alan Kay admite, bem mais ou menos, não quer dar o braço a torcer, que ele inventou a orientação a mensagens e não a orientação a objetos, só que deu esse título, inventado por ele sim, para a outra invenção :)

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Carregando publicação patrocinada...
2

Essa questão de "modelar o mundo real" é algo que deveria sumir das apostilas. É uma metáfora tão falha que acaba induzindo ao erro e causando mais mal do que bem. Sobre isso, gosto muito de um trecho desta resposta:

"Aves voam. Avestruzes são aves, só que não voam. Aviões também voam, mas não batem as asas. Foguetes voam, e nem têm asas! Patos são aves, e também nadam. Barcos não nadam, mas é quase isso... Aviões, foguetes e barcos são veículos. Mísseis parecem foguetes, mas não transportam passageiros."

O contexto ali é sobre usar herança ou composição, e os desafios de se criar um modelo adequado e fiel à realidade. A citação acima mostra que não importa a modelagem que fizermos, nunca será 100% fiel ao "mundo real". Toda abstração tem limites.

No fim das contas, não devemos modelar o mundo real, e sim alguns aspectos do mundo real que são relevantes para o problema que queremos resolver.

Eu até entendo que a metáfora pode ajudar nas etapas iniciais do aprendizado, mas é algo que deveria ser esclarecido logo em seguida (e raramente é feito, basta ver a quantidade de "seniors" que ainda acreditam nisso).

2

Eu sempre falo que a maioria das pessoas não sabem programar OO porque os exemplos dos materiais didáticos são para fazer entender o conceito e o mecanismo, mas não para treinar o uso. Só que eles não deixam isso muito claro, e não induzem fazer o certo. Consequência: as pessoas treinam o erro, e é ele que ela passa fazer sempre. E muitas vezes ensinam outras pessoas assim.

Modelar é muito difícil. Em muitos casos é melhor procurar algo mais simples que não se preocupe tanto com o modelo, porque modelar errado pode causar mais estrago. Os menos inexperientes não percebem isso. Eu percebo, e ainda cometo erros.