Perguntas comuns que os alunos podem fazer quando aprendem OOP?

Jan 19 2021

Lendo esta pergunta Nós realmente precisamos de linguagens OO para gerenciar a complexidade do software? em um dos sites de SE e minhas próprias experiências no ensino de conceitos orientados a objetos, por exemplo, Algum exemplo prático real para ensinar conceitos orientados a objetos e programação (em python) me fez imaginar quais são as perguntas comuns que os alunos podem fazer quando aprendem OOP pela primeira vez ?

Por exemplo, naquela pergunta que o autor fez,

Sou um estudante iniciante de CS ... No primeiro semestre, fomos apresentados a conceitos OOP como encapsulamento, ocultação de dados, modularidade ...

Mas acho que todos os princípios usados ​​para gerenciar a complexidade, como modularidade, encapsulamento, ocultação de dados e assim por diante, podem ser facilmente implementados por linguagens procedurais. Então, por que realmente OOP se podemos gerenciar a complexidade sem ele?

Eu também tenho que admitir que tenho minhas próprias dificuldades, por exemplo, eu fiz esta pergunta O OOP superenfatiza a importância do substantivo e, portanto, coloca a ação / verbo na posição de menos importância ( nesse site também (nenhum aluno me fez essa pergunta, no entanto). Minha pergunta foi encerrada e até consegui 2 votos de exclusão, mas essa é sempre minha preocupação.

Se meus alunos ou colegas que têm experiência com javascript e gostam de aprender OOP, sempre os deixarei comparar momentjs com date-fns , ambos lidam com data e fornecem funções semelhantes, ambos fazem um bom trabalho, mas momentjs uma biblioteca OOP e date-fns é uma biblioteca de funções.

Meu objetivo é fazer com que eles entendam que há mais de uma maneira de fazer as coisas.

Então, quais são as perguntas comuns que seus alunos fazem?

Respostas

4 Qiulang Jan 20 2021 at 11:01

Eu li as perguntas mais votadas com tag orientada a objetos em softwareengineering.stackexchange.com e stackoverflow.com . Acho que algumas perguntas sobre o site de engenharia de software são bastante comuns ao aprender OOP, enquanto as perguntas sobre stackoverflow estão mais relacionadas a perguntas práticas de programação que são mais provavelmente feitas por profissionais.

Então, listei algumas perguntas do site de engenharia de software,

  1. Por que é bom dividir um programa em várias classes? . Esta pergunta foi realmente feita por um estudante do ensino médio.
  2. Os objetos em OOP precisam representar uma entidade? . Meus alunos me fazem esta pergunta.
  3. Qual é a vantagem da programação orientada a objetos sobre a programação procedural? este está um tanto relacionado à questão "gerenciar complexidade de software" em minha pergunta e eu discuto com meus colegas outra pergunta interessante que foi feita no quora. Como o Linux mantém uma base de código tão grande quando C não é uma linguagem orientada a objetos? A base do código está toda bagunçada?
  4. O OOP cumpre a promessa de reutilização de código? Que alternativas existem para conseguir a reutilização de código? Não tenho certeza se os alunos farão essa pergunta e também tenho minhas próprias dúvidas.
  5. Ao escrever código orientado a objetos, devo sempre seguir um padrão de design? . Este site também tem uma pergunta sobre design pattern, Quão ruim é um curso de Ciência da Computação que não ensina Design Patterns?
  6. Explicação de como “Diga, não pergunte” é considerado um bom OO . Só depois de ganharem algumas experiências de codificação é que eles podem fazer / apreciar a pergunta. Mas é bom.
  7. Devo criar uma classe se minha função for complexa e tiver muitas variáveis? Uma resposta também foi minha recomendação aos meus alunos quando eles tivessem essa pergunta, "Use uma classe, mas também forneça uma função autônoma, que apenas constrói o objeto, chama o método e retorna o resultado, a classe que você usa internamente realmente torna-se apenas um detalhe de implementação de sua função pública "

O Quora também tem algumas perguntas interessantes que sinto que as pessoas farão quando aprenderem OOP pela primeira vez, listo algumas aqui:

  1. Alguém (na posição de programador) pode sobreviver na indústria de tecnologia moderna (com ou sem software) sem OOP?
  2. Com que frequência os desenvolvedores de software usam OOP? . Uma resposta lá de Kurt Guntheroth é interessante "Sempre que você escreve um programa com mais de 1.000 linhas, deve usar OOP. 1000 linhas? Por que isso ...?"
  3. Quando a programação orientada a objetos não é uma boa opção?

Espero poder obter outras respostas.

1 Eddie Feb 06 2021 at 17:23

Esta é uma pergunta muito boa! Sua resposta também cobre muito terreno.

Gostaria de oferecer uma reflexão sobre o que pode motivar essas questões.

Na minha experiência, os alunos que encontram OOP no início de sua jornada têm que lutar contra alguns desafios diferentes, incluindo:

  1. Eles ainda não experimentaram o (s) problema (s) que OOP resolve.
  2. Eles acreditam que existe uma solução perfeita para todos os desafios de programação à espera de serem descobertos.

Isso dá origem a uma série de perguntas, confusões e, em alguns casos, inseguranças.