Klasse und Instanzen...ich steh auf dem Schlauch

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.
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Klasse und Instanzen...ich steh auf dem Schlauch

Beitragvon Monsi » Mittwoch 18. Februar 2009, 13:22

Hallo,

ich brauche noch mal jemand, der den Knoten in meinem Kopf loesen kann. Ich habe jetzt das Kapitel "Klassen" begonnen und mir ist einfach nicht klar, wozu ich Klassen oder Instanzen letztendlich brauche. Und vor allem weiss ich nicht, was eine Instanz macht. Also wenn ich z.B. sage

Code: Alles auswählen

class Meldung:
    def __init__(self, einString):
        self.text = einString
    def druckEs(self):
        print self.text


dann habe ich eine Klasse definiert, die "Meldung" heisst.

Und

Code: Alles auswählen

m1=Meldung("Hello World")
ist dann eine Instanz von der Klasse "Meldung". Aber was mache ich dann damit? Ich habe gerade null Durchblick..dabei ist es sicher ganz einfach. Kann mir jemand (bitte in einfachen Worten) helfen?
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 18. Februar 2009, 13:34

Eine Klasse ist eine Zusammenfassung von Methoden und den zugehörigen Daten. Eine Klasse Auto hat zum Beispiel die Daten Höchstgeschwindigkeit, Beschleunigung, Bremskraft .. und die passenden Methoden: Beschleunigen, Bremsen, ...

Eine Instanz ist einfach nur ein Auto, wenn ich dem Beispiel mal folgen darf, dass sich dann eben so verhält wie die Klasse es beschreibt. Die Instanziierung hast du ja schon.
Was du damit machen kannst? Du kannst die Methoden der Klasse auf diese Instanz anwenden, in deinem Beispiel dann eben `m1.druckEs()'

Aber du scheinst das Konzept der OOP noch nicht verstanden zu haben. Mit Klassen modelliert man Objekte (s.o.), was du allerdings machst ist eine umständliche Kapselung von print bzw einer Funktion.
Im Forum geistern einige Threads zur OOP rum, benutz einfach mal die Suchfunktion.
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Beitragvon Monsi » Mittwoch 18. Februar 2009, 13:37

Das Auto-Beispiel ist gut, das macht einiges klarer.

Aber du scheinst das Konzept der OOP noch nicht verstanden zu haben. Mit Klassen modelliert man Objekte (s.o.), was du allerdings machst ist eine umständliche Kapselung von print bzw einer Funktion.


Das war nicht meine Idee, das ist ein Beispiel aus einem Text entnommen, der mir eigentlich erklaren sollte, wie Klassen funktionieren.

Vielen Dank fuer das Beispiel!
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 18. Februar 2009, 13:52

Aus welchem Text? Ich glaube der ist dann bzgl Python und OOP wegzuschmeissen ... zufällig das Galileo Openbook?

Und wenn das Buch dir diesen Programmierstil suggeriert, solltest du mal PEP 8 lesen: [wiki]PEP 8 (Übersetzung)[/wiki] http://www.python.org/dev/peps/pep-0008/
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Beitragvon Monsi » Mittwoch 18. Februar 2009, 13:55

Das ist aus "Learning to program" von Alan Gauld, in der deutschen Uebersetzung.
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Beitragvon Monsi » Mittwoch 18. Februar 2009, 13:58

Eigentlich gehe ich das Tutorial "Dive into Python" durch, aber da hatte ich Schwierigkeiten, so viele neue Begriffe bezueglich der Klassen auf einmal zu verstehen, deshalb hatte ich etwas auf Deutsch gesucht. Aber so langsam bekomme ich eine Idee davon, wofuer Klassen gut sind.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Re: Klasse und Instanzen...ich steh auf dem Schlauch

Beitragvon sma » Mittwoch 18. Februar 2009, 23:24

Monsi hat geschrieben:Ich habe gerade null Durchblick..dabei ist es sicher ganz einfach. Kann mir jemand (bitte in einfachen Worten) helfen?


Stell dir vor: Ein Stempel ist eine Klasse. Ein auf ein Papier gestempeltes Bild ist ein Exemplar*. Der Stempel beschreibt, wie alle Abbilder aussehen.

Anderes Beispiel: Du bist ein Exemplar der Klasse Mensch (nehme ich jedenfalls mal an). Menschen haben gewissen Eigenschaften. Sie essen und schlafen etwa, schreiben Forumsbeiträge oder kennen ihren Namen. Jedes Exemplar Mensch ist jedoch anders, hat einen anderen Namen und wenn Exemplar "Paul" etwas isst, dann hat Exemplar "Peter" immer noch Hunger und beide kann man von "Mary" unterscheiden.


* Das Ausrotten der falschen Übersetzung Instanz für das englische Wort "instance" - korrekt ist Exemplar - ist meine ganz persönliche Windmühle.

Stefan
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Beitragvon str1442 » Mittwoch 18. Februar 2009, 23:27

* Das Ausrotten der falschen Übersetzung Instanz für das englische Wort "instance" - korrekt ist Exemplar - ist meine ganz persönliche Windmühle.


Könntest du das mal kurz erläutern? Ok, instance heißt auch Exemplar (gibt auch Sinn), aber ich sehe nicht, wieso der Begriff der Instanz komplett falsch sein sollte. (odge.de übersetzt instance mitunter auch mit Instanz).
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Mittwoch 18. Februar 2009, 23:43

Instanz im Deutschen ist/war eine zuständige Stelle bei Behörden oder vor Gericht. Die andere Bedeutung ist erst in den letzten Jahren in die Sprache geschwappt. Wikipedia nennt z.B. einen Gruppenspezifischen Dungeon bei Online-Rollenspielen ebenfalls eine Instanz, was genauso falsch von "instance" übersetzt ist und eigentlich ein Exemplar bzw. eine Ausprägung einer Dungeon-Klasse oder eines prototypischen Dungeons meint.

Der Begriff ist ein falscher Freund.

Stefan
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Beitragvon str1442 » Donnerstag 19. Februar 2009, 00:11

Also ich habe (auf Wikipedia, unter Instanz (Informatik)) das gefunden:

Es gibt die Annahme, dass der heutige Sprachgebrauch „Ein Objekt ist eine Instanz einer Klasse“ auf einer Fehlübersetzung der englischen Bezeichnung „instance“ = „Beispiel“, „Auftreten“ oder „Fall“ beruht. Als Begründung dient die Beobachtung, dass Instanzen im juristischen Kontext zueinander immer in einem Über- oder Unterordnungsverhältnis liegen. Diese Annahme ist jedoch falsch. Die lateinische Wurzel „instantia“ = „das Daraufbestehen“ enthält keine solche Hierarchie von Instanzen untereinander. Vielmehr müssen Instanzen auf anderen Dingen bestehen, was Exemplare von Klassen tun (sie bestehen nämlich auf den Klassen). Auch Goethe benutzte „Instanz“ schon in der Bedeutung „Exemplar“: „Eine Instanz aus dem Tierreich der niedrigsten Stufe führen wir noch zu mehrerer Anleitung hier vor.“[1] Mithin ist diese Verwendung des Instanzbegriffes korrekt.


Instanz („abgeschlossene Einheit“, lat. instantia „das Daraufbestehen“)


Grade die Begrifflichkeit der "abgeschlossen Einheit" oder dem "Bestehen auf Etwas anderem" ergibt doch Sinn. Und ich habe unter Instanz auch immer derartiges verstanden, noch bevor ich mich intensiver mit Programmierung auseinandergesetzt habe. Aber ich war auch nie ein Freund davon, Begriffe, die inhaltlich Anderes bedeuten, in der nur von einst festgelegten Bedeutung zu benutzen, führt imho nur zu Neusprech.
BlackJack

Beitragvon BlackJack » Donnerstag 19. Februar 2009, 00:23

@str1442: Auf der Diskussionseite finden sich auch Gegenstimmen:

Goethe war ohne Zweifel ein großer Dichter und Denker, aber als die geeignete Instanz zur Definition zeitgenössischen Sprachgebrauchs sollte er, wie man bereits an dem kurzen Text-Beispiel oben sieht, vielleicht eher nicht dienen (wer sagt denn schon: "zu mehrerer Anleitung ..."?). …


oder

Welchen Sinn hat der Absatz "Morphlogie" in diesem Artikel? Der gesamte Abschnitt trägt rein gar nichts zur Erklärung des Begriffs Instanz(Informatik) bei. Es wird nur eine persönliche Meinung widergegeben, ohne den geringsten Ansatz eines Beweises. Ich finde man sollte den Abschnitt rausnehmen. --solovej 16:01, 15. Sep. 2008 (CEST)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 19. Februar 2009, 00:52

Ich werd weiterhin Instanzen verwenden, genauso wie ich von Frameworks und Toolkits sprechen werde. Bin kein sonderlicher Sprachpurist und bei Grafischen Benutzeroberflächen-Werkzeugkästen ist dann irgendwann die Grenze zur Lächerlichkeit überschritten (sagt hier irgendwer von euch etwa "schönfinkeln"?). Aber wenn jemand weitere tolle Begriffe zum Übersetzen will, wie wäre es mit diesen: Dependency Injection, Inversion of Control, RESTful, List Comprehension.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Donnerstag 19. Februar 2009, 01:59

Leonidas hat geschrieben:(sagt hier irgendwer von euch etwa "schönfinkeln"?).
Ich ab heute =D

Ich verwende auch lieber deutsche Wörter, aber Framwork klingt einfach schöner als Rahmenwerk =/ Instanzen steht _überall_. Es macht es nicht richtiger, aber ... verbreiteter. Wobei ich bei Erklärungen auch lieber von Exemplar spreche ...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Donnerstag 19. Februar 2009, 10:36

Man darf bei solchen Sprachdiskussionen niemals vergessen, dass Sprachen etwas dynamisches sind! Das umfasst neben der reinen Form von Wörtern eben auch die Bedeutung. Bestes Beispiel ist das alte deutsche Wort "geil" - in den 80ern kam dieses Wort irgend wie wieder auf, allerdings mit der Bedeutung "gut", "toll" usw - die ursprüngliche Bedeutung wurde also erweitert.

Insofern finde ich Wörter wie "Instanzen" durchaus passend - im Kontext des Programmierens ist die Bedeutung dann nämlich klar.

Anders formuliert: Wenn man konsequent falsch übersetzt, dann wird aus dem Fehler irgend wann einfach etwas Richtiges ;-) (Ok, war ein wenig überspitzt jetzt!)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Donnerstag 19. Februar 2009, 12:59

Hyperion hat geschrieben:Anders formuliert: Wenn man konsequent falsch übersetzt, dann wird aus dem Fehler irgend wann einfach etwas Richtiges ;-) (Ok, war ein wenig überspitzt jetzt!)

Stimmt aber. Daher sprach ich ja von meiner persönlichen Windmühle. Ich habe ja auch noch nicht aufgegeben, auf dem richtige Verwendung von dem Genetiv zu dringen :)

Stefan

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]