Domande comuni che gli studenti possono porre quando imparano l'OOP?
Leggere questa domanda Abbiamo davvero bisogno di linguaggi OO per gestire la complessità del software? su uno dei siti SE e la mia esperienza nell'insegnamento di concetti orientati agli oggetti, ad esempio un vero esempio pratico per insegnare concetti e programmazione orientati agli oggetti (in Python) mi ha fatto pensare a quali sono le domande comuni che gli studenti possono porre quando imparano per la prima volta OOP ?
Ad esempio in quella domanda l'autore ha chiesto,
Sono uno studente CS principiante ... Nel primo semestre siamo stati introdotti a concetti OOP come incapsulamento, nascondere i dati, modularità ...
Ma penso che tutti i principi utilizzati per gestire la complessità come la modularità, l'incapsulamento, l'occultamento dei dati e così via possano essere implementati molto facilmente dai linguaggi procedurali. Allora perché davvero OOP se possiamo gestire la complessità senza di essa?
Devo anche ammettere che ho una mia lotta, ad esempio ho posto questa domanda OOP enfatizza eccessivamente l'importanza del nome e quindi mette azione / verbo nella posizione di minore importanza? anche su quel sito (nessuno studente mi ha posto questa domanda però). La mia domanda è stata chiusa e ha ottenuto anche 2 voti di cancellazione, ma questa è sempre la mia preoccupazione.
Se i miei studenti oi miei colleghi che hanno esperienza con javascript e amano imparare OOP, li lascerò sempre confrontare momentjs con date-fns , entrambi gestiscono la data e forniscono funzioni simili, entrambi fanno un buon lavoro, ma momentj è una libreria OOP e date-fns è una libreria di funzioni.
Il mio scopo è far capire loro che ci sono più modi per fare le cose.
Quindi quali sono le domande comuni che fanno i tuoi studenti?
Risposte
Ho letto le domande più votate etichettate orientate agli oggetti su softwareengineering.stackexchange.com e stackoverflow.com . Sento che alcune domande sul sito di ingegneria del software sono abbastanza comuni quando si impara OOP, mentre le domande su stackoverflow sono più correlate a domande pratiche di programmazione che sono più probabili poste dai professionisti.
Quindi ho elencato alcune domande dal sito di softwareengineering,
- Perché è utile suddividere un programma in più classi? . Questa domanda è stata effettivamente posta da uno studente delle superiori.
- Gli oggetti in OOP devono rappresentare un'entità? . I miei studenti mi fanno questa domanda.
- Qual è il vantaggio della programmazione orientata agli oggetti rispetto alla programmazione procedurale? questo è in qualche modo correlato alla domanda "gestire la complessità del software" nella mia domanda e discuto con i miei colleghi un'altra domanda interessante che è stata posta su quora Come fa Linux a mantenere una base di codice così ampia quando C non è un linguaggio orientato agli oggetti? Il codice di base è tutto incasinato?
- L'OOP mantiene la promessa di riutilizzo del codice? Quali alternative ci sono per ottenere il riutilizzo del codice? Non sono sicuro che gli studenti faranno questa domanda e ho anche il mio doppio per la domanda.
- Quando scrivo codice orientato agli oggetti, devo sempre seguire un modello di progettazione? . Questo sito ha anche una domanda sul design pattern. Quanto è sbagliato un corso di informatica che non insegna Design Patterns?
- Spiegazione su come "Tell, Don't Ask" è considerato un buon OO . Solo dopo aver acquisito alcune esperienze di programmazione possono porre / apprezzare la domanda. Ma è buono.
- Devo creare una classe se la mia funzione è complessa e ha molte variabili? Una risposta c'era anche la mia raccomandazione ai miei studenti quando avevano una domanda del genere: "Usa una classe, ma fornisci anche una funzione indipendente, che costruisce solo l'oggetto, chiama il metodo e restituisce il risultato, la classe che usi veramente internamente diventa solo un dettaglio di implementazione della tua funzione pubblica "
Quora ha anche alcune domande interessanti che sento che le persone chiederanno quando impareranno per la prima volta l'OOP, ne elenco alcune qui:
- Chiunque (nella posizione di un programmatore) può sopravvivere nel moderno settore tecnologico (software o non software) senza OOP?
- Con che frequenza gli sviluppatori di software utilizzano OOP? . Una risposta di Kurt Guntheroth è interessante "Ogni volta che scrivi un programma più lungo di circa 1.000 righe, dovresti usare OOP. 1000 righe? Perché ...?"
- Quando la programmazione orientata agli oggetti non è adatta?
Spero di poter ottenere altre risposte.
Questa è davvero una bella domanda! Anche la tua risposta copre un sacco di terreno.
Vorrei offrire una riflessione su ciò che potrebbe motivare queste domande.
Nella mia esperienza, gli studenti che incontrano l'OOP all'inizio del loro viaggio devono affrontare alcune sfide diverse, tra cui:
- Non hanno ancora riscontrato il / i problema / i risolto / i da OOP.
- Credono che ci sia una soluzione perfetta a tutte le sfide di programmazione che aspettano di essere scoperte.
Questi danno luogo a un intero carico di domande, confusioni e, in alcuni casi, insicurezze.