was heisst denn das schon wieder???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gast

was heisst denn das schon wieder???

Beitragvon Gast » Donnerstag 10. Juli 2003, 17:17

:(

also manchmal denke ich lerne chinesisch oder sonst was :D

es geht um oop

1. polymorphismus
2. in python werden attribute immer an ort und stelle aufgelöst.
3. was sind die schnittstellen, von denen im zusammenhang mit oop immer wieder gerdet wird? die methoden und attribute, die durch die vererbung weitergegeben werden vielleicht???

ich glaub das reicht mal

ich bedanke mich im voraus und freue mich über hilfreiche antworten.

mfg

roland
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 10. Juli 2003, 18:37

Hi Roland,

rolgal hat geschrieben::(

also manchmal denke ich lerne chinesisch oder sonst was :D

es geht um oop

ach ne :lol:

1. polymorphismus

Direkt übersetzt Vielgestaltigkeit. Das bezieht sich darauf, daß eine Instanz einer, von einer Klasse abgeleiteten, Kindklasse an den selben Stellen verwendet werden kann wie die Elternklasse.

2. in python werden attribute immer an ort und stelle aufgelöst.

Das bezieht sich darauf, daß sich Attribute einer Instanz sich zur Laufzeit änder, ja soger neue Attribute hinzugefügt oder gelöscht werden können.

3. was sind die schnittstellen, von denen im zusammenhang mit oop immer wieder gerdet wird? die methoden und attribute, die durch die vererbung weitergegeben werden vielleicht???

genau, besonders bei sogenannten abstrakten Klassen, die nur als Basisklassen dienen und dort eben die "Schnittstellen" definieren
Du kannst z.B. eine abstrakte Klasse BaseContainer erstellen, welche die Methoden print, load und store enthält.

Code: Alles auswählen

class BaseContainer:
    def print(self):
        pass

    def load(self, file):
        return 1 # alles ok zurückgeben
   
    def store(self, file):
        return 1 # alles ok

Jetzt kannst Du Funktionen oder andere Classen schreiben, die ein Objekt vom Type BaseContainer verwenden und da die Methoden (Schnittstellen) schon bekannt sind,eben print, load und store, mit diesen arbeiten, ohne zu wissen, welche Klassen, die dann von BaseContainer abgeleitet sind vewendet werden. So lassen sich OOP-Programme auch später leicht erweitern, ohne am Basiscode Änderungen vornehmen zu müssen. In dem Beispiel kommen alle von Dir aufgeführten Punkte zum Tragen.

ich glaub das reicht mal

ich bedanke mich im voraus und freue mich über hilfreiche antworten.

mfg

roland



Gruß

Dookie
Gast

thx dookie

Beitragvon Gast » Donnerstag 10. Juli 2003, 21:47

du warst wieder mal ne große hilfe,

bis bald, zur nächsten frage :D :D :D :D

mfg

roland
ertlpott
User
Beiträge: 44
Registriert: Montag 14. April 2003, 16:05
Kontaktdaten:

Hey, du auch?

Beitragvon ertlpott » Freitag 11. Juli 2003, 07:54

Hi!

Freut mich wirklich, dass es scheinbar auch genug Leute gibt, die die selben Probleme haben wie ich :wink: .
Also ehrlich, ich komme mir oft genug schon wie der letzte Idiot vor, wenn ich in einem Satz nicht einmal mehr die Zusammenhänge schlussfolgern kann wegen den vielen Fachausdrücken etc... und wenn solch ein Satz dann als Erklärung für einen anderen unbekannten Ausdruck benutzt wird... naja - eh scho wissen -> Leidensgeschichte usw :wink:

Grüße

Simon
Gast

club der leidensgenossen

Beitragvon Gast » Freitag 11. Juli 2003, 10:55

:D :D :D :D :D

oder, was hältst du davon:-))))))))))))))))))))))))))

im ernst, als ich mit pyhton angefangen habe, hiess es, dass sooooo leicht zu lernen sei. naja, ich würde diese aussage heute nicht unterschreiben. ein freund von mir der auch mit c++ programmiert, erklärte, dass die sogenannten erleichterungen nur dann eine sind, wenn man mit sprachen wie c++ gearbeitet hat. d.h. python macht ja nicht weniger, wie c oder c++ sondern macht einiges automatisch, wie z.b die typendeklaration. für das wirkliche verständnis was eigentlich alles passiert, ist es seiner meinung nach unerlässlich c++ zu lernen.

klar, wie ich das meine?

:( aber hoffentlich ist es nicht wirklich so dramatisch.

cu

roland
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Freitag 11. Juli 2003, 12:01

Ist schon klar, wenn man vorher noch nie mit OOP gearbeitet hat ;). Aber das Python sehr leicht ist, wenn man C++ schon hatte ist auch klar, Python wurde ja darin geschrieben, deswegen lehnt die Syntax teilweise daran an. Schwierges bleibt deswegen aber natürlich trotzdem schwierig :roll:.
Trotzdem galube ich ist Python eine leichte Sprache. Ich habe mal versucht Perl zu lernen, habs aber gleich wieder aufgegeben, weil ich mit den vielen Sonderzeichen nicht zurecht gekommen bin... Die wesentlichen Vorteile von Python sind halt die leicht(er!) überschaubare Syntax und damit verbunden die in meiner Meinung schnellere Programmentwicklung.
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Beitragvon joerg » Freitag 11. Juli 2003, 12:23

Milan hat geschrieben: ... Aber das Python sehr leicht ist, wenn man C++ schon hatte ist auch klar, Python wurde ja darin geschrieben, deswegen lehnt die Syntax teilweise daran an...


Fast richtig. Python ist in reinen ANSI-C geschrieben, ohne ++. Nur wenn man berücksichtigt, daß C++ eine Obermenge von C ist, ist es damit automatisch auch in C++ geschrieben. ;-)

Der Python-Quellcode beinhaltet keine Klassen, alles reine 'struct's. Und Methoden gibt es auch nicht. Trotzdem beinhaltet das Konzept eine Art von OO, auch wenn es viele der OO-Mechanismen damit nicht unterstützt.

Ich habe OOP übrigens hauptsächlich mit Python gelernt, C++ konnte ich vorher nur stümperhaft.

Jörg
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 11. Juli 2003, 12:36

Hallo nochmal,

also IMHO ist es soger ein Fehler vorher c++ zu lernen. Dadurch gewöhnt man sich gewisse sachen an, die dann zu "komischen Verrenkungen" in Python führen. Wenn man sich manche Sourcen von Pythonmodulen anschaut, weiss man was ich meine :roll:
Ich habe schon OOP-Sachen angewandt, zu C64 und Amigazeiten, wo ich noch gar nicht wusste, daß das OOP ist. Mit Modula2 und Oberon2 bin ich dann tiefer in die OOP-Materie eingestiegen, was mir natürlich beim Erlernen von Python sehr geholfen hat.
Ich finde Python zum erlernen wirklich einfach, auch da mann ganz herkömmich prozedural programmieren kann. Und dann, quasi schleichend, zu OOP findet.


Gruß

Dookie
Gast

@dookie

Beitragvon Gast » Freitag 11. Juli 2003, 19:04

naja, ich meine ja nicht dass man c++ total lernen muss. aber gerade heute beim bummeln, gucke ich in ein c++ buch und lese mich ein bisschen ein. und siehe da, da stand etwas, was doch auf die ganze sache oop ein interessantes licht wirft, eigentlich auf das programmieren allgemein:

ein konstruktor wird z.b. auch aufgerufen wenn man eine variable setzt. (frei wiedergegeben)
also es hat in meinem kopf so laut geklingelt, dass der ganze laden geguckt hat.

in pythonbüchern, die ich halt kenne, liest man nur, bei python wird das und das und das alles automatisch gemacht. was wirklich im hintergrund passiert wird verschwiegen oder es wird so ,wie in "einführung in python" auf einem niveau geschrieben, das ein wissen voraussetzt.

...dass nämlich beim bilden einer variablen, eigentlich auch nur ein objekt einer klasse gebildet wird, ist schon für den gesamten zusammenhang eine wichtig info.

oder wie sehen andere das???

mfg

roland
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 12. Juli 2003, 12:29

Es gibt auch allgemeine Bücher zu OOP, in denen Der Sachverhalt ebenfalls sehr gut gezeigt wird. Ausserdem gibt es da auch noch zwei Philosopien, die eine möchte, das alles, auch die elementaren Datentypen (int, float, char, bool) als einfache Datentypen bestehen bleiben (C++) und bei der anderen soll alles als Objekt betrachtet werden (Java)
Im übrigen braucht man am Anfang auch gar nicht wissen, was z.B. bei Instanziieren einer Klasse so abläuft. Gute Klassen arbeiten sowieso als "Blackbox" und stellen nur ihre Schnittstellen (Attribute und Methoden) zur Verfügung. Das ist eben auch ein Vorteil von OOP, daß man Klassen schreiben kann, die später intern vielleicht ganz anders arbeiten. Z.B. eine Grafikklasse, die ursprünglich in ein einfaches Canvas-Widget zeichnet, und in einer späteren Version in ein OpenGL-Widget.


Gruß

Dookie
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: @dookie

Beitragvon Voges » Samstag 12. Juli 2003, 13:26

Hallo!
Trotz 'Kleinschreiber' ausnahmsweise was von mir dazu, damit hier nicht Behauptungen unwidersprochen stehen bleiben und als richtig hingenommen werden.
rolgal hat geschrieben:ein konstruktor wird z.b. auch aufgerufen wenn man eine variable setzt. (frei wiedergegeben)
...
in pythonbüchern, die ich halt kenne, liest man nur, bei python wird das und das und das alles automatisch gemacht. was wirklich im hintergrund passiert wird verschwiegen oder es wird so ,wie in "einführung in python" auf einem niveau geschrieben, das ein wissen voraussetzt.

...dass nämlich beim bilden einer variablen, eigentlich auch nur ein objekt einer klasse gebildet wird, ist schon für den gesamten zusammenhang eine wichtig info.
Es wird deshalb "verschiegen", weil es für Python schlicht falsch ist. Weder wird beim 'Bilden' von Variablen zwingend und ursächlich eine neue Instanz (neues Objekt) einer Klasse erzeugt, noch wird beim Erzeugen einer neuen Instanz zwingend eine neue Variable 'gebildet'. Es besteht schlicht kein Zusammenhang zw. den Variablen (die ja nur Referenzen auf Objekte vorhalten) und der Erzeugung von Instanzen/Objekten.

rolgal hat geschrieben:oder wie sehen andere das???
Du hälst c++ offensichtlich für die Mutter aller OOP-Sprachen, dabei ist es eher nur ein missratenes Kind.
Jan
gast,alias rolgal

was bitte???

Beitragvon gast,alias rolgal » Samstag 12. Juli 2003, 14:23

also 1. danke für die gnade zu antworten, obwohl ich nur klein schreibe

rolgal verbeugt sich ehrfürchtig.

und dann noch zu c++: es geht nicht darum, was ich von c++ halte, sondern um das was mir auch andere entwickler gesagt haben. nämlich, dass vieles was in c++ manuell gemacht werden muss, und in diesem zusammenhang offensichtlich ist was passiert, python automatisch macht.

das mit der variablen, kann ich jetzt als newbie schwer beurteilen wer recht hat.
grundsätzlich wäre schon logisch, da ja alles in python ein objekt ist (oder fast alles)

und daher ist die annahme naheliegend, dass bei der bildung einer variablen auch ein konstruktor aufgerufen wird. im untergrund von python passiert ganz sicher was.

wie auch immer, ich erwarte mir nicht nochmal eine gnadentat von dir

mwfg

roland
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 12. Juli 2003, 14:34

Typen sind auch Objekte, das dürfte eigentlich auch woanders so sein... z.B. kann man ja in Delphi auch eigene Typen mit Methoden und anderem Krams definieren. Ich habe keine Ahnung von C++, weil ich nur ein paar Anfänge in C hatte, aber eigentlich ist es doch egal, wie Python das intern regel, solange man damit umgehen kann.

Ich weiß jetzt nicht mehr worum es hier im Thema noch genau geht, aber ich möchte keine Diskussion über "Python ist schlecht!" <--> "Python ist gut" !
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: was bitte???

Beitragvon Voges » Samstag 12. Juli 2003, 14:37

gast,alias rolgal hat geschrieben:und daher ist die annahme naheliegend, dass bei der bildung einer variablen auch ein konstruktor aufgerufen wird. im untergrund von python passiert ganz sicher was.
Ja, man muss nur ganz feste dran glauben, egal, was in der Doku steht oder was andere sagen. Dann erhört einen der Pythoninterpreter vielleicht auch eines Tages :-)

You made my day!
Jan
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Beitragvon Voges » Samstag 12. Juli 2003, 15:31

Milan hat geschrieben: aber ich möchte keine Diskussion über "Python ist schlecht!" <--> "Python ist gut" !
Wie wäre es mit einem Flame-Forum?

Ich wollte auch C++ nicht schlecht machen (scließlich verdiene ich meine Brötchen mit C++-Programmierung ;-)), sondern nur zum Ausdruck bringen, dass C++ nicht das Maß in Sachen OOP ist. Dass durch das 'Bilden' (aka Deklarieren) einer Variablen bereits ein Objekt (inkl. Konstruktoraufruf) entsteht, gilt eben nur für C++ (naja, und sicherlich für eine oder andere Sprache, die ich nicht kenne). Das ist das, was rolgal irgendwo gelesen hat. Beispiel:

Code: Alles auswählen

// C++
class MyClass
{
    ...
};

MyClass myObject;
// myObject ist jetzt bereits ein komplettes Objekt (eine Instanz der Klasse MyClass)
// inkl. erfolgtem Kontruktoraufruf

Python kennt aber ja eine solche Typendeklaration gar nicht, sondern Variablen werden ausschließlich durch Zuweisung erzeugt und zugewiesen werden ausschießlich Referenzen auf Objekte. Eigentlich ist Python ja gerade da sehr einfach. Es gibt nur lauter Referenzen, die auf lauter Objekte zeigen.

Jan

Oops, Ich sollte auch lesen, was ich zitiere. Tief im Inneren halte ich C++ wohl doch für schlecht ;-)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]