Il modo migliore per apprendere concetti / principi OOP praticamente? [chiuso]


12

Volevo imparare un linguaggio di programmazione orientato agli oggetti, non lo voglio per nessun motivo solo per conoscere l'intero concetto di OOP. Qualcuno può dirmi quale lingua dovrei iniziare ad imparare?


1
Quali lingue conosci già?
Mcch

C, VB.NET e C ++ ma non la parte OOP
Caffeinatedwolf,

1
scegli VB.NET quindi
Vinoth Kumar CM,

No, non voglio VB.NET Voglio che mi aiutiate a scegliere tra Java, C ++, Python ecc ...
Caffeinatedwolf,

3
Vuoi praticamente imparare qualcosa senza scopo?
JeffO,

Risposte:


13

Alcuni ulteriori suggerimenti:

  • Il miglior libro che abbia mai letto sulla barra OOP nessuno è la costruzione di software orientata agli oggetti di Bertrand Meyer . Non è una lettura 'facile' in cui dovrai pensare intensamente in alcuni punti. Ma fa il miglior lavoro che ho visto per spiegare i principi di OO.

  • Per quanto riguarda le lingue: starei lontano dal C ++. Troppo grande per scopi di apprendimento. Se vuoi una lingua che ti aiuti davvero a capire OO (al contrario di una in cui scrivere le applicazioni tradizionali / ottenere un lavoro), guarda smalltalk. O Eiffel (la lingua nel libro di Meyer sopra).

  • Se vuoi un linguaggio un po 'più mainstream ma che supporta fedelmente i principi OO, Python è una buona scommessa. Anche Java e C # sono decenti se si desidera la digitazione statica.

Un avvertimento però: la lingua non ti insegnerà OO. Può solo aiutare (o ostacolare) quanto bene supporta i concetti di OO. Imparare OO significa imparare a pensare in termini di OO. Per questo sarei tornato al libro di Meyer.

hth.


1
Le altre cose in C ++ sono importanti . È importante conoscere l'eredità virtuale. È importante conoscere il supporto generico per la compilazione in fase di compilazione ed è importante conoscere valore vs riferimento. Cercare qualcosa come Java significa semplicemente "LA LA LA NON TI SENTITO QUESTO È L'UNICO MODO DI FARLO".
DeadMG

2
sì e no. La domanda del PO riguardava l'apprendimento che implica prima le basi. Non sono convinto che il C ++ sia tra i contendenti come il linguaggio di apprendimento più adatto . Detto questo: Meyer copre comunque generici e valore vs riferimento, anche se come argomenti più avanzati. Entra anche in co-e contro-varianza, nelle ultime parti del libro. Ma prima espone le basi. (E Eiffel è staticamente digitata tra l'altro).
Sfinnie,

1
Non concorderò o non sarò d'accordo con una raccomandazione di Eiffel, dal momento che non ho mai usato o visto o letto nulla al riguardo. Tuttavia, non condividerò assolutamente nessuna raccomandazione per Java e C #, come ho detto.
DeadMG

12

Puoi imparare qualsiasi linguaggio orientato agli oggetti come C ++, Java, C # ecc. Per provare OOPS.

Se vuoi davvero imparare OOP, devi pensare oltre le lingue e capire che è un paradigma che aiuta la complessità dei mangae coinvolti nei programmi software proprio come il modo in cui li gestiamo in questo mondo reale. Quindi apprendi i concetti di base in OO come polimorfismo, ereditarietà, incapsulamento (PIE) ecc

Ci sono buoni libri sull'analisi troppo orientata agli oggetti e al design con applicazioni (2a edizione) di Grady Booch

Inoltre, puoi provare blog come questo che ho trovato è abbastanza semplice da iniziare con- affascinanteoops.com


3

Vuoi imparare OOP? Una risposta: Smalltalk.

È un linguaggio elegante ed è OO alla base. Imparerai OOP dall'inizio e non sarai ostacolato da tutte le altre distrazioni che altre lingue riescono a incorporare.

Vince Smalltalk. E ci sono anche alcuni buoni e-book gratuiti disponibili (vedi: Stephane Ducasse )


3

Dovresti imparare il C ++, o forse uno degli antenati come Smalltalk. Il C ++ offre una netta separazione tra concetti come orientamento degli oggetti, gestione della memoria e riferimento rispetto al valore e ha un forte supporto generico.

Non imparare Java o un linguaggio .NET come C #. Quando impari una lingua come Java, impari cose come "Gli oggetti sono sempre nell'heap e sono sempre riferimenti", il che è vero solo per Java e assolutamente non vero per OOP in generale. Questa confusione di concetti (orientamento dell'oggetto, gestione della memoria, riferimento rispetto al valore) è molto pericolosa per una prima lingua, perché una volta che li hai bloccati nella testa, può essere molto difficile rimetterli fuori. C # è un po ' meglio in questo senso, ma non molto. Inoltre, possono avere un'alta tendenza a insegnare "L'ereditarietà è un martello e tutto è un chiodo" con un supporto di programmazione generico debole.


Questo è molto vero Non ci avevo mai pensato prima, in realtà quando hai a che fare con un linguaggio molto focalizzato su OOP e cerca di risolvere tutto con OOP, non imparerai mai quali problemi non sono realmente adatti a OOP.
daramarak,

1

Il modo migliore per imparare i concetti di OOP è scrivere sempre più codice e farlo revisionare spesso. Fai pratica facendo un buon programmatore.

Pensa agli scenari del mondo reale, definisci una dichiarazione del problema: risolvila nel codice e falla rivedere. Puoi sempre ottenere aiuto da /codereview// per recensioni :)

Buona codifica !!!


0

passi

  1. Scopri cosa significano.
  2. Scopri come implementarli.
  3. Prendi un progetto da sviluppare, scegli la tua lingua [che dovrebbe avere il principio OOPS integrato come VB.NET o C # o C ++ o java ecc]
  4. Pensa a come puoi semplificare la logica del progetto tramite OOPS. [Nota: non solo implementare OOPS perché volevi averle, dovrebbero risolvere il tuo scopo]
  5. Non dimenticare: imparerai anche dai tuoi errori .

0

Il mio primo contatto con il mondo OO fu il C ++, che non fu un brutto inizio. Ma sono migliorato molto quando ho imparato Python. La differenza viene dalle lingue: provare idee ('come posso risolvere questo problema in modo OO?') In C ++ ha bisogno di più codice per essere scritto e include molte più insidie ​​che provare la stessa idea in Python. Quindi consiglierei Python.


0

Non penso che dovresti cercare un'altra lingua mentre cerchi di imparare OOP. Per me, è più facile capire la teoria e poi imparare ad applicarla se posso collegarmi a qualcosa che già conosco. Capire una nuova sintassi si mette in mezzo.

Puoi iniziare con qualsiasi libro OOP. Ancora una volta, ne prenderei uno nella mia lingua preferita. Leggere un libro sul refactoring (stile OOP) mi ha aiutato nell'applicazione di OOP. Ho preso un progetto esistente (nessuna distrazione dalla raccolta dei requisiti) e ho trovato nuovi modi per migliorarlo. Non era solo OOP per amor di OOP. Quindi puoi imparare come farlo dall'inizio alla fine su un nuovo progetto. La logica qui è che non la capirai sempre dall'inizio. Se riesci a riconoscere dove è appropriato, starai meglio. Come la maggior parte delle cose, non risolverà tutti i problemi.

Ci sono limiti definiti con alcune lingue. Se il tuo obiettivo è diventare il padrone dell'eredità multipla, .NET è fuori.


0

Vado contro il pensiero convenzionale qui e suggerisco che le lingue più semplici per usare OOP non sono necessariamente le migliori lingue per impararlo . Sono stato esposto per la prima volta a OOP con C ++, ma non l'ho "capito" fino a quando non ho letto il capitolo del libro Cammello di Larry Wall su OOP con Perl. Per qualche ragione ho avuto difficoltà a comprendere la differenza tra classi e oggetti fino a quando non ho dovuto benedire esplicitamente un oggetto in una classe. Non ho veramente capito l'implementazione sottostante di OOP fino a quando non lo ho fatto in C con GObject, dove nessuno di questi dettagli è nascosto a te. Non ho veramente capito le migliori pratiche fino a quando non ho seguito un corso aziendale indipendente dalla lingua. È un argomento molto grande,.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.