Quanto è meglio imparare i concetti / principi OOP praticamente? [chiuso]

11

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

    
posta Caffeinatedwolf 09.08.2011 - 08:47
fonte

9 risposte

13

Alcuni ulteriori suggerimenti:

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

  • Per quanto riguarda le lingue: starei lontano da C ++. Giusto troppo grande per scopi di apprendimento. Se vuoi un linguaggio che ti aiuti davvero a capire OO (al contrario di uno che scriveresti applicazioni mainstream in / ottenere un lavoro usando), allora guarda smalltalk. O Eiffel (la lingua nel libro di Meyer sopra).

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

Una parola di cautela però: la lingua non ti insegnerà OO. Può solo aiutare (o ostacolare) il modo in cui supporta i concetti OO. Learning OO è davvero un modo per imparare a pensare in termini OO. Per questo vorrei tornare al libro di Meyer.

hth.

    
risposta data 09.08.2011 - 09:19
fonte
12

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

Se vuoi veramente imparare OOP, devi pensare oltre le lingue e capire che è un paradigma che aiuta la complessità dei mangai coinvolti nei programmi software proprio come li gestiamo in questo mondo reale. Quindi impara i concetti di base in OO come Polymorphism, Ereditarietà, Encapsulation (PIE) etc

Ci sono anche buoni libri in giro - Analisi orientata agli oggetti e progettazione con applicazioni (seconda edizione) di Grady Booch

Inoltre, puoi provare blog come questo che ho trovato è abbastanza semplice per iniziare con fascinatingoops.com

    
risposta data 09.08.2011 - 09:06
fonte
3

Vuoi imparare OOP? Una risposta: Smalltalk.

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

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

    
risposta data 09.08.2011 - 09:48
fonte
3

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

Non apprendere Java o un linguaggio .NET come C #. Quando si impara un linguaggio come Java, si imparano cose come "Gli oggetti sono sempre sullo heap e sono sempre riferimenti", che è vero solo per Java e assolutamente non vero per OOP in generale. Questa confusione di concetti (orientamento all'oggetto, gestione della memoria, riferimento vs valore) è molto pericolosa per una prima lingua, perché una volta che li hai bloccati nella tua testa, può essere molto difficile farli tornare indietro. C # è un po ' migliore a questo riguardo, 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.

    
risposta data 09.08.2011 - 13:22
fonte
1

Il modo migliore per imparare i concetti OOP è scrivere sempre più codice e farlo rivedere spesso. La pratica rende un buon programmatore.

Pensa agli scenari del mondo reale, definisci una dichiarazione di un problema: risolvilo nel codice e fallo revisionare. Puoi sempre ottenere l'aiuto dal link per le recensioni:)

Felice codifica !!!

    
risposta data 09.08.2011 - 20:12
fonte
0

I passaggi

  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 semplificare la logica del progetto da parte di OOPS. [Nota: non implementare semplicemente OOPS perché volevi averli, dovrebbero risolvere il tuo scopo]
  5. Non dimenticare: Imparerai anche dai tuoi errori .
risposta data 09.08.2011 - 10:00
fonte
0

Il mio primo contatto con il mondo OO era C ++, che non era 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 ++ richiede più codice da scrivere e include molte più insidie che provare la stessa idea in Python. Quindi consiglierei Python.

    
risposta data 09.08.2011 - 10:11
fonte
0

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

Puoi iniziare con qualsiasi libro OOP. Di nuovo, 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 l'amor di OOP. Quindi puoi imparare come farlo dall'inizio alla fine in un nuovo progetto. La logica qui è che non lo capirai sempre dall'inizio. Se riesci a riconoscere dove è appropriato, starai meglio. Come la maggior parte delle cose, non risolverà tutti i problemi.

Esistono limiti definiti con alcune lingue. Se il tuo obiettivo è essere il padrone dell'ereditarietà multiiple, .NET è fuori.

    
risposta data 09.08.2011 - 14:46
fonte
0

Andrò contro il pensiero convenzionale qui e suggerisco che le lingue più facili per usare OOP non sono necessariamente le migliori lingue per imparare . 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 Camel di Larry Wall su OOP con Perl. Per qualche ragione ho avuto difficoltà a cogliere la differenza tra classi e oggetti fino a dover esplicitamente benedire un oggetto in una classe. Non ho veramente capito l'implementazione sottostante di OOP fino a farlo in C con GObject, dove nessuno di questi dettagli è nascosto da te. Non ho veramente capito le migliori pratiche fino a prendere una classe aziendale che fosse indipendente dalla lingua. È un argomento molto vasto e devi trovare i modi per impararlo che funziona meglio per tu .

    
risposta data 09.08.2011 - 15:45
fonte

Leggi altre domande sui tag