Seite 1 von 1

Keine Ahnung von OOP

Verfasst: Freitag 23. Dezember 2005, 00:44
von sub_zero
Hallo,
ich bin neu hier und arbeite mich gerade in Python ein. Die Grundlagen sind tatsächlich erstaunlich schnell erlernt, mir gefällt Python von mal zu mal besser. Ich habe nur ein Problem: ich komme von rein prozeduralen Programmiersprachen und habe keinen Schimmer von diesen objektorientierten Ansätzen. Daher konnte ich van Rossums Tutorial auch sehr gut folgen. Bis es um OOP ging.

Was ich jetzt suche, sind gute Tutorials, gern auch Bücher zum Thema. Da das ganze wohl ziemlich komplex ist würde ich Infos auf deutsch bevorzugen, englisch geht aber auch.

Gruß,
Andreas

Re: Keine Ahnung von OOP

Verfasst: Freitag 23. Dezember 2005, 09:35
von Leonidas
sub_zero hat geschrieben:Da das ganze wohl ziemlich komplex ist würde ich Infos auf deutsch bevorzugen, englisch geht aber auch.
Nein, es ist eigentlich keineswegs komplex, zumindest die Basissachen (jetzt mal abgesehen von Metaklassen und MRO, die du aber sowieso meistens nicht brauchst).

Du kannst dir eine Klasse als Container, sozusagen ein (optimalerweise) geschlossenes System vorstellen, welcher Variablen und Funktionen die auf diese Variablen zugreifen beinhaltet. Die wenigen Besonderheiten dieser Container sind, dass diese Container voneinander erben können, so erbt ein Container alle Variablen und Funktionen eines anderen Containers und kann diese auch erweitern, oder anders implementieren.

Was man aber auch beachten sollte: nicht jedes Problem ist mit OOP optimal gelöst! Die Java-leute vergessen das manchmal, aber oft sind Funktionen für ein Problem vollständig ausreichend.

Du könntest dir Wie ein Informatiker denken lernen... anschauen, welches eine Übersetzung von "How to Think Like a Computer Scientist" ist. Über diese Einleitung habe ich schon positives Feedback gehört, also wird es wohl recht gut sein.

Hope that helps.

Verfasst: Freitag 23. Dezember 2005, 09:39
von jens
Also du kannst auch einfach erstmal ganz normal Programmieren und OOP beiseite lassen. Nach einiger Zeit kommt das Verständniss dafür ganz von alleine ;)
Das ist auch das schöne an Python.

Ansonsten langel dich mal eine wenig durch's Wiki: http://pythonwiki.pocoo.org/Python

Re: Keine Ahnung von OOP

Verfasst: Freitag 23. Dezember 2005, 10:38
von N317V
Leonidas hat geschrieben:[Du könntest dir Wie ein Informatiker denken lernen... anschauen, welches eine Übersetzung von "How to Think Like a Computer Scientist" ist. Über diese Einleitung habe ich schon positives Feedback gehört, also wird es wohl recht gut sein.

Hope that helps.
Tatsächlich ist das IMHO eines der besten Werke zum Erlernen des Programmierens allgemein und speziell für Python, das ich kenne. Nur in diesem Fall wird es möglicherweise nicht allzuviel helfen, da es in der deutschen Fassung ausgerechnet ab dem Kapitel "Klassen und Methoden" nicht mehr übersetzt ist. :-/ Auf der von Leonidas verlinkten Seite gibt es aber einen Link zum englischen Original.

Re: Keine Ahnung von OOP

Verfasst: Freitag 23. Dezember 2005, 10:47
von Leonidas
N317V hat geschrieben:Tatsächlich ist das IMHO eines der besten Werke zum Erlernen des Programmierens allgemein und speziell für Python, das ich kenne. Nur in diesem Fall wird es möglicherweise nicht allzuviel helfen, da es in der deutschen Fassung ausgerechnet ab dem Kapitel "Klassen und Methoden" nicht mehr übersetzt ist. :-/ Auf der von Leonidas verlinkten Seite gibt es aber einen Link zum englischen Original.
Der Autor hat gemeint, dass er demnächst die restlichen Kapitel auch noch fertigmacht. Die letzen übersetzen Kapitel sind auch erst vor kurzer Zeit dazugekommen. Schade nur, dass die URL so lang und kryptisch ist, vielleicht kann man das ja demnächst auf unserem neuen Server spiegeln.

Re: Keine Ahnung von OOP

Verfasst: Freitag 23. Dezember 2005, 11:33
von Ronnie
sub_zero hat geschrieben: Was ich jetzt suche, sind gute Tutorials, gern auch Bücher zum Thema. Da das ganze wohl ziemlich komplex ist würde ich Infos auf deutsch bevorzugen, englisch geht aber auch.
Ich würde dir "Objektorientierte Programmierung mit Python", von Michael Weigend, erschienen bei mitp, empfehlen. Ich halte dieses Buch, zusammen mit "Python ge-packt" vom selben Autor, für sehr empfehlenswert.

Objektorientierung ist eine sehr nützliche Technik, die ich als natürliche Erweiterung der klassischen Programmierung empfinde. Die oft an (Hoch-)Schulen praktizierte Überbewertung der OOP zur alleinigen Glückseligkeit führenden Technik halte ich aber für falsch. Dazu muss man sich nur die unterschiedlichen Implementierungen von OOP in verschiedenen Sprachen betrachten z.B. Python und Ruby. Starke Typisierung (z.B. Java) gegen schwache Typisierung (und duck-typing), Mehrfachvererbung oder Mixins usw. Sehr schade empfinde ich z.B. das Schwinden von Merkmalen funktionaler Sprachen (LISP, Scheme, Haskell -> lambda) in Python in kommenden Versionen.

Da Python durchgehend objektorientiert ist, auch wenn man durchaus in einem prozeduralen Stil programmieren kann, erschließen sich einem gewisse Konzepte nicht unbedingt, wie wenn man z.B. OOP in Perl lernt (wo die objektorientierung aufgepropft ist) - z.B. der Unterschied zwischen call-by-value und call-by-reference. In Python sind sämtliche Variablen Objekte und es findet fast ausschließlich eine Übergabe per Referenz statt - die Dereferenzierung erfolgt immer implizit. Variablen sind in Python Symbole die Objekte referenzieren - die Lebensdauer eines Objektes ist primär davon abhängig wielange Symbole auf sie verweisen (danach schlägt irgendwann die GarbageCollection zu).

Was ich letzten Endes sagen will, schau dir verschiedene Sprachen an - manche Konzepte sind in anderen Sprachen leichter verständlich. Ich programmiere z.B. zumeist Perl, aber eben auch Python. Zunehmend will ich mich mit Ruby beschäftigen weil es - aus meiner Sicht - die Stärken beider Sprachen vereint. Aber natürlich ist das subjektiv - jeder empfindet eine bestimmte Sprache als für ihn am nützlichsten/verständlichsten und jeder sollte die Sprache verwenden die ihm/ihr am besten liegt. Trotzdem bleibe ich bei dem Aufruf ab und an über den Gartenzaun zu schauen ;)

Verfasst: Freitag 23. Dezember 2005, 13:52
von sub_zero
Vielen Dank für Eure Infos. "How to think like ..." scheint tatsächlich ganz gut zu sein. Ich werde mich wohl mal eine Weile damit beschäftigen. Das von Ronnie empfohlene Buch muß ich nächstes Jahr mal zur Ansicht bestellen.

Gruß und schöne Feiertage,
Andreas