Wie lernt man OOP-Konzepte / Prinzipien am besten in der Praxis? [geschlossen]

12

Ich wollte objektorientierte Programmiersprache lernen, ich möchte nicht, dass ich das gesamte Konzept von OOP kenne. Kann mir jemand sagen, welche Sprache ich lernen soll?

Koffeinhaltiger Wolf
quelle
1
Welche Sprachen kennst du schon?
Mchl
C, VB.NET und C ++, aber nicht der OOP-Teil
Caffeinatedwolf
1
Wählen Sie
Nein, ich möchte nicht, dass VB.NET mir bei der Auswahl zwischen Java, C ++, Python usw.
hilft.
3
Sie wollen praktisch und zwecklos etwas lernen?
JeffO

Antworten:

13

Einige weitere Vorschläge:

  • Das beste Buch, das ich je über OOP gelesen habe, ist Bertrand Meyers objektorientierte Softwarekonstruktion . Es ist keine einfache Lektüre, bei der man sich an einigen Stellen Gedanken machen muss. Aber es ist der beste Job, den ich je gesehen habe, um die OO-Prinzipien zu erklären.

  • Was die Sprachen angeht: Ich würde mich von C ++ fernhalten. Einfach zu groß für Lernzwecke. Wenn Sie eine Sprache suchen, die Ihnen wirklich hilft, OO zu verstehen (im Gegensatz zu einer Sprache, mit der Sie Mainstream-Apps schreiben / einen Job bekommen würden), schauen Sie sich smalltalk an. Oder Eiffel (die Sprache in Meyers Buch oben).

  • Wenn Sie eine Sprache suchen, die ein bisschen mehr Mainstream ist, aber dennoch die OO-Prinzipien treu unterstützt, ist Python eine gute Wahl. Java & C # sind auch anständig, wenn Sie statische Typisierung möchten.

Ein Wort der Vorsicht: Die Sprache wird Sie nicht OO lehren. Es kann nur helfen (oder behindern), wie gut es OO-Konzepte unterstützt. Beim Lernen von OO geht es wirklich darum, zu lernen, in OO-Begriffen zu denken . Dafür würde ich auf Meyers Buch zurückkommen.

hth.

sfinnie
quelle
1
Die anderen Dinge in C ++ sind wichtig . Es ist wichtig , über die virtuelle Vererbung Bescheid zu wissen. Es ist wichtig zu wissen, wie stark die generische Unterstützung bei der Kompilierung ist, und es ist wichtig zu wissen, wie wertvoll die Referenz ist. Sich für so etwas wie Java zu entscheiden, heißt einfach "LA LA LA, ich kann dich nicht hören, das ist der einzige Weg, es zu tun".
DeadMG
2
Ja und nein. Bei der Frage des OP ging es um Lernen, das zunächst die Grundlagen beinhaltet. Ich bin nicht überzeugt, dass C ++ unter den Mitbewerbern die am besten geeignete Lernsprache ist. Das heißt: Meyer deckt ohnehin Generika & Wert vs. Referenz ab, wenn auch als fortgeschrittenere Themen. Er befasst sich auch mit Co- und Contra-Varianz in späteren Teilen des Buches. Aber zuerst erklärt er die Grundlagen. (Und Eiffel ist übrigens statisch geschrieben).
sfinnie
1
Ich werde einer Empfehlung von Eiffel weder zustimmen noch nicht zustimmen, da ich noch nie etwas darüber gelesen oder gesehen habe. Allerdings werde ich, wie gesagt, jeder Empfehlung für Java und C # absolut widersprechen.
DeadMG
12

Sie können jede der objektorientierten Sprachen wie C ++, Java, C # usw. lernen, um OOPS auszuprobieren.

Wenn Sie OOP wirklich lernen möchten, müssen Sie über die Sprachen hinaus denken und verstehen, dass es ein Paradigma ist, das die Komplexität von Mangae in Softwareprogrammen unterstützt, so wie wir sie in dieser realen Welt verwalten. Dann lernen Sie die Grundkonzepte in OO wie Polymorphismus, Vererbung, Verkapselung (PIE) usw

Es gibt gute Bücher über objektorientiertes Analysieren und Entwerfen mit Anwendungen (2. Auflage) von Grady Booch

Sie können auch Blogs wie dieses ausprobieren, von denen ich fand, dass sie einfach genug sind, um mit fascinatingoops.com zu beginnen

WinW
quelle
3

Sie möchten OOP lernen? Eine Antwort - Smalltalk.

Es ist eine elegante Sprache und ist OO bis ins Mark. Sie werden von Anfang an OOP lernen und sich nicht durch all die anderen Ablenkungen behindern lassen, die andere Sprachen übernehmen können.

Smalltalk gewinnt. Und es gibt auch einige gute kostenlose E-Books (siehe: Stephane Ducasse )

Simon Knights
quelle
3

Sie müssten C ++ lernen, oder vielleicht einer der Vorfahren wie Smalltalk. C ++ bietet eine klare Trennung zwischen Konzepten wie Objektorientierung, Speicherverwaltung und Referenz vs. Wert und verfügt über eine starke generische Unterstützung.

Lernen Sie kein Java oder eine .NET-Sprache wie C #. Wenn Sie eine Sprache wie Java lernen, lernen Sie Dinge wie "Objekte sind immer auf dem Haufen und sind immer Referenzen", was nur für Java und absolut nicht für OOP im Allgemeinen gilt. Diese Verschmelzung von Begriffen (Objektorientierung, Speicherverwaltung, Referenz vs. Wert) ist für eine Muttersprache sehr gefährlich, da es sehr schwierig sein kann, sie wieder herauszubekommen, wenn man sie erst einmal im Kopf hat. C # ist in dieser Hinsicht etwas besser, aber nicht viel. Außerdem neigen sie häufig dazu zu lehren, "Vererbung ist ein Hammer und alles ist ein Nagel" mit schwacher generischer Programmierunterstützung.

DeadMG
quelle
Das ist sehr wahr. Ich habe noch nie zuvor davon gehört, tatsächlich, wenn man sich mit einer Sprache beschäftigt, die sehr auf OOP fokussiert ist und versucht, alles mit OOP zu lösen, wird man nie erfahren, welche Probleme für OOP nicht wirklich geeignet sind.
Daramarak
1

Der beste Weg, um OOP-Konzepte zu erlernen, besteht darin, immer mehr Code zu schreiben und ihn häufig überprüfen zu lassen. Übung macht einen guten Programmierer.

Denken Sie an reale Szenarien, definieren Sie eine Problemstellung - lösen Sie sie im Code und lassen Sie sie überprüfen. Sie können jederzeit die Hilfe von /codereview// für Bewertungen erhalten :)

Viel Spaß beim Programmieren !!!

Karthiks
quelle
0

Schritte

  1. Erfahren Sie, was sie bedeuten.
  2. Erfahren Sie, wie Sie diese implementieren.
  3. Nehmen Sie ein Projekt zur Entwicklung, wählen Sie Ihre Sprache aus [das OOPS-Prinzip sollte wie VB.NET oder C # oder C ++ oder Java usw. integriert sein]
  4. Überlegen Sie, wie Sie die Projektlogik mit OOPS vereinfachen können . [Hinweis: Implementieren Sie OOPS nicht nur, weil Sie sie haben wollten, sie sollten Ihren Zweck lösen.]
  5. Vergiss nicht: Du wirst auch aus deinen Fehlern lernen .
Chris
quelle
0

Mein erster Kontakt zur OO-Welt war C ++, was kein schlechter Start war. Aber ich habe mich beim Lernen von Python sehr verbessert. Der Unterschied ergibt sich aus den Sprachen: Das Ausprobieren von Ideen ('Wie kann ich dieses Problem auf eine OO-Art lösen?') In C ++ erfordert mehr Code und enthält viel mehr Fallstricke als das Ausprobieren derselben Idee in Python. Daher würde ich Python empfehlen.

Rocksportrocker
quelle
0

Ich denke nicht, dass Sie in eine andere Sprache schauen sollten, während Sie versuchen, OOP zu lernen. Für mich ist es einfacher, die Theorie zu verstehen und sie dann anzuwenden, wenn ich mich auf etwas beziehen kann, das ich bereits weiß. Das Herausfinden einer neuen Syntax steht gerade im Weg.

Sie können mit jedem OOP-Buch beginnen. Ich würde wieder eine in der Sprache meiner Wahl bekommen. Das Lesen eines Buches über Refactoring (OOP Style) hat mir bei der Anwendung von OOP geholfen. Ich habe ein bestehendes Projekt (keine Ablenkung vom Sammeln von Anforderungen) genommen und neue Wege gefunden, um es zu verbessern. Es war nicht nur OOP um OOP willen. Dann können Sie lernen, wie es bei einem neuen Projekt von Anfang bis Ende gemacht wird. Die Logik hier ist, dass Sie es nicht immer von Anfang an richtig machen. Wenn Sie erkennen, wo es angebracht ist, sind Sie besser dran. Wie die meisten Dinge wird es nicht jedes Problem lösen.

Bei einigen Sprachen gibt es bestimmte Einschränkungen. Wenn es Ihr Ziel ist, der Meister der Mehrfachvererbung zu sein, ist .NET out.

JeffO
quelle
0

Ich gehe hier gegen das konventionelle Denken vor und schlage vor, dass die einfachsten Sprachen für die Verwendung von OOP nicht unbedingt die besten Sprachen für das Erlernen von OOP sind . Ich war mit C ++ zum ersten Mal mit OOP vertraut, habe es aber erst "verstanden", als ich Larry Walls Kamelbuchkapitel über OOP mit Perl gelesen habe. Aus irgendeinem Grund hatte ich Probleme, den Unterschied zwischen Klassen und Objekten zu erfassen, bis ich explizit segnen musste ein Objekt in eine Klasse . Ich habe die zugrunde liegende Implementierung von OOP erst in C mit GObject verstanden, in dem keine dieser Details für Sie verborgen sind. Ich habe die Best Practices erst wirklich verstanden, als ich an einer sprachunabhängigen Firmenklasse teilgenommen habe. Es ist ein sehr großes Thema,.

Karl Bielefeldt
quelle