Perguntas comuns que os alunos podem fazer quando aprendem OOP?
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
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,
- Por que é bom dividir um programa em várias classes? . Esta pergunta foi realmente feita por um estudante do ensino médio.
- Os objetos em OOP precisam representar uma entidade? . Meus alunos me fazem esta pergunta.
- 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?
- 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.
- 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?
- 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.
- 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:
- Alguém (na posição de programador) pode sobreviver na indústria de tecnologia moderna (com ou sem software) sem OOP?
- 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 ...?"
- Quando a programação orientada a objetos não é uma boa opção?
Espero poder obter outras respostas.
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:
- Eles ainda não experimentaram o (s) problema (s) que OOP resolve.
- 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.