Klassen, Methoden und Objekte
Moderator: Moderatoren
Klassen, Methoden und Objekte
Jemand muss hier ja mal den Anfang der Peinlichkeiten machen,
also stelle ich hier die erste dumme Frage:
1. Warum sind Klassen, Methoden und Objekte, also die Objekt-orientierte Programmierung (OOP) besser
als die guten alten hassgeliebten Procedures und Functions mit ihren Abläufen?
2. Wie kann man ein Objekt erklären, wie ist es charakterisiert, aufgebaut und was kann man damit machen?
Damit wären es schon zwei (Fragen).
Bitte keine akademischen Exkurse, lieber einfache, praktische Antworten.
Soll ich das wirklich so absenden? Ach, ich tu's einfach ...
Aber nicht dass ihr glaubt, alle Schweizer seien ...
also stelle ich hier die erste dumme Frage:
1. Warum sind Klassen, Methoden und Objekte, also die Objekt-orientierte Programmierung (OOP) besser
als die guten alten hassgeliebten Procedures und Functions mit ihren Abläufen?
2. Wie kann man ein Objekt erklären, wie ist es charakterisiert, aufgebaut und was kann man damit machen?
Damit wären es schon zwei (Fragen).
Bitte keine akademischen Exkurse, lieber einfache, praktische Antworten.
Soll ich das wirklich so absenden? Ach, ich tu's einfach ...
Aber nicht dass ihr glaubt, alle Schweizer seien ...
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Klassen, Methoden und Objekte
Hi,Daniel hat geschrieben:also stelle ich hier die erste dumme Frage:
...
Aber nicht dass ihr glaubt, alle Schweizer seien ...
erstmal zu den einfachen Antworten,
1. es gibt keine dummen Fragen, sondern nur dumme Antworten ...
2. soweit ich weiß steht die Schweiz in vielen Dingen besser da als wir, wieso sollten wir also die Schweizer für ... halten ?
Keine Angst, wie sagt der Engländer: You are welcome !
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16542
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Daniel,
die prozedurale Programmierung ist sogar besser, als eine "schlechte" objektorientierte Programmierung
Aber wenn man es richtig macht, kann man sich vieles vereinfachen.
Beim Erstellen von Klassen macht man sich erstmal Gedanken über die Gemeinsamkeiten und die Unterschiede. Alles, was die späteren Klassen gemeinsam haben, kommt in eine Hauptklasse, von der alle anderen abgelitten werden.
Die sogenannte Hauptklasse nennt Alaska in der Hilfe Superklasse und die abgelittenen Subklasse.
Das ableiten nennt man dann vererben.
Ein Beispiel: Wenn man die Autos als Klassen darstellen wollte, dann müsste man sich erstmal Gedanken darüber machen, was alle Autos gemeinsam haben:
Viele Grüße,
Martin
die prozedurale Programmierung ist sogar besser, als eine "schlechte" objektorientierte Programmierung
Aber wenn man es richtig macht, kann man sich vieles vereinfachen.
Beim Erstellen von Klassen macht man sich erstmal Gedanken über die Gemeinsamkeiten und die Unterschiede. Alles, was die späteren Klassen gemeinsam haben, kommt in eine Hauptklasse, von der alle anderen abgelitten werden.
Die sogenannte Hauptklasse nennt Alaska in der Hilfe Superklasse und die abgelittenen Subklasse.
Das ableiten nennt man dann vererben.
Ein Beispiel: Wenn man die Autos als Klassen darstellen wollte, dann müsste man sich erstmal Gedanken darüber machen, was alle Autos gemeinsam haben:
- Motor
- Fahrgestell
- Reifen
- Abblendlicht
- Fernlicht
- Rücklicht
- Bremsleuchte
- Nummernschild
- Blinker
- Lenkrad
- Sitz
- Kofferraum
- Chassis
- Scheibenwischer
- ....
- Anzahl der Reifen
- Art des Motors
- Anzahl der Scheibenwischer
- Lage des Kofferraumes
- Aussehen des Chassis
- Anzahl der Sitze
- Sonderausstattung (Martinshorn, Blau-/Gelblicht, ...)
- ....
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Klassen, Methoden und Objekte
Es ist von Vorteil, dass Objekte Daten und Funktionscode (Methoden) gekapselt von der Außenwelt in sich verwalten. Angenommen man benötigt 4 Funktionen um z.B. eine Aufgabe zu erledigen. Alle diese Funktionen werden nacheinander aufgerufen und eine ellenlange Parameterliste mit locals oder aber eine Menge Private Variablen beinhalten die Daten. Unter DOS konnte man damit Leben, denn der Programmierer wusste immer genau wie der aktuelle Stand gerade war. Angenommen unter GUI würde man so seine Eingabefenster basteln, und der Anwender macht 2 davon gleichzeitig auf ? Alle globalen Variablen (private public) können nun von außen geändert werden, was zu unvorhersehbaren Schwierigkeiten führen kann. Man kann es in den Griff bekommen (andere Sprachen müssen auch damit auskommen), aber es ist viel einfacher ein Object mit vielen Methoden und Instanzvariablen zu verwalten, als eine Menge Funktionen mit Parameterlisten ... man denke nur an die Problematik die Parameterzeile richtig zu bestücken:Daniel hat geschrieben:1. Warum sind Klassen, Methoden und Objekte, also die Objekt-orientierte Programmierung (OOP) besser als die guten alten hassgeliebten Procedures und Functions mit ihren Abläufen?
Code: Alles auswählen
oWin:title := "Titel"
oWin:...
ist einfacher und sprechender als
nWin := GetWindow("Titel", .d..d... .sd..s.s sd. .sd. sad.s .s.d.)
Wären es Funktionen, könnte man das Verhalten nicht ändern, man müsste sein eigenes Datumseingabefeld schreiben; nicht ganz einfach mit der Messegeverwaltung von Windows. So ist es eine Klasse, von der man Ableitungen machen kann. Ich erstelle also einen neue Klasse, die alle Eigenschaften der alten erbt und ändere nur was ich anders benötige.
Wenn der Formdesigner CLASS-Code erzeugt, kann man direkt auf alle Elemente zugreifen:
oSleName:setData("Name") ... beim Function-Code, steht da ein
oXbp für alle Elemente, somit muß ich über die Clientliste das richtige SLE ermitteln, das ist mir zu umständlich !
Noch ein Beispiel aus dem wirklichen Leben:
*** Kindererziehung
- In früher Jugend muss man alles lernen, die Anweisung lauf mal 5 Schritte vor kann ein Kind beim Laufen lernen nicht begreifen. Man unterstützt also mit der Hand und setzt Beinchen vor Beinchen -> Funktionscode, mehr geht halt noch nicht.
- 4 Jahre später sagt man hol mir bitte das Bier ... und das Kind läuft ohne über das Laufen nachzudenken und holt das Bier. -> object orientiert
- Kaum volljährig bei gleicher Bitte kommt die Antwort 'hols doch selbst, bin ich dein Diener' ... man sieht, object orientierte Programmierung muss nicht immer bessere Resultate bringen, aber es kann das Leben erleichtern
Ein Objekt bezeichne ich gerne als Mischung zwischen Funktion und Daten.Daniel hat geschrieben:2. Wie kann man ein Objekt erklären, wie ist es charakterisiert, aufgebaut und was kann man damit machen?
Es kennt seine Daten, gibt manche davon frei und behält andere für sich, genauso mit den Methoden. Man kann alles damit machen.
So ich hoffe es ist etwas klarer geworden. Wenn nicht ruhig weiterfragen.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16542
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Klassen, Methoden und Objekte
Hallo Hubert,
Viele Grüße,
Martin
eindeutig falsche Aufforderung - bessere Resultate bringt ein: Hol uns doch mal ein Bier...brandelh hat geschrieben:- Kaum volljährig bei gleicher Bitte kommt die Antwort 'hols doch selbst, bin ich dein Diener' ...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21214
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
jetzt muß ich gleich mal meinen fragenden Kommentar hier abgeben:
Was heißt jetzt OOP eigentlich wirklich? Wann kann man sagen, dass man OOP anwendet? Ich kämpfe die ganze Zeit damit und versuche mir eine Antwort darauf zu geben, ob ich jetzt schon zu den Programmiergöttern zähle, oder ob ich nur einfach die Funktionen usw. gegen Methoden ausgetauscht habe und sie über das Objekt aufrufe.
Oder bin ich doch schon auf dem besten Wege dahin...?
jetzt muß ich gleich mal meinen fragenden Kommentar hier abgeben:
hm, was meinst Du damit? Ich frage mich die ganze Zeit schon, ob es genügt ein paar Klassen und Objekte zu erstellen, Methoden aufzurufen, um dann sagen zu können: "Juchu, ich kann OOP."die prozedurale Programmierung ist sogar besser, als eine "schlechte" objektorientierte Programmierung
Was heißt jetzt OOP eigentlich wirklich? Wann kann man sagen, dass man OOP anwendet? Ich kämpfe die ganze Zeit damit und versuche mir eine Antwort darauf zu geben, ob ich jetzt schon zu den Programmiergöttern zähle, oder ob ich nur einfach die Funktionen usw. gegen Methoden ausgetauscht habe und sie über das Objekt aufrufe.
Oder bin ich doch schon auf dem besten Wege dahin...?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16542
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
das kann ich Dir auch nicht beantworten, da ich Deinen Code ja nicht kenne.
Gut bist Du, wenn Deine Sourcen des OOP-Codes nicht größer sind, als die Sourcen Deines prozeduralen Codes
Im Ernst: Wenn Du jede Klasse neu definierst ohne was zu erben oder zu vererben (obwohl es vielleicht in einzelnen Fällen möglich wäre), dann bist Du noch nicht auf dem richtigen Weg - bestenfalls am Anfang.
Viele Grüße,
Martin
das kann ich Dir auch nicht beantworten, da ich Deinen Code ja nicht kenne.
Gut bist Du, wenn Deine Sourcen des OOP-Codes nicht größer sind, als die Sourcen Deines prozeduralen Codes
Im Ernst: Wenn Du jede Klasse neu definierst ohne was zu erben oder zu vererben (obwohl es vielleicht in einzelnen Fällen möglich wäre), dann bist Du noch nicht auf dem richtigen Weg - bestenfalls am Anfang.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21214
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
na gut, dann bin ich ja jetzt froh, das es den Ernst gibt. Dann bin ich doch schon auf dem richtigen Wege. Ich dachte das wäre noch nicht alles.
OOps, ich stelle gerade fest, dass mir hier ein paar Smilies fehlen an deren Stelle dann ein Ani steht.
na gut, dann bin ich ja jetzt froh, das es den Ernst gibt. Dann bin ich doch schon auf dem richtigen Wege. Ich dachte das wäre noch nicht alles.
OOps, ich stelle gerade fest, dass mir hier ein paar Smilies fehlen an deren Stelle dann ein Ani steht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Hi,
es gibt Sprachen, bei denen ist alles ein Object.
Ich persönlich baue mir eine Funktion, welche z.B. ein Fensterobject so zürückgibt, wie ich mir das Fenster normalerweise vorstelle. Danach kann ich dann anpassen, es spart mir aber immer wieder die Zeilen mit :new():create() etc.
Ich denke man kann alles übertreiben.
Schließlich bin ich kein Glaubensritter in Sachen OOP sondern will die Vorteile für mich nutzen.
es gibt Sprachen, bei denen ist alles ein Object.
Ich persönlich baue mir eine Funktion, welche z.B. ein Fensterobject so zürückgibt, wie ich mir das Fenster normalerweise vorstelle. Danach kann ich dann anpassen, es spart mir aber immer wieder die Zeilen mit :new():create() etc.
Ich denke man kann alles übertreiben.
Schließlich bin ich kein Glaubensritter in Sachen OOP sondern will die Vorteile für mich nutzen.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21214
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
genau das ist es. Das fällt bei mir immer noch durch das Raster durch, sollte es aber nicht. Immer wieder sehe ich in Beispielen, das es so gemacht wird und jedesmal denke ich, das sollte ich auch so machen und jedesmal......
genau das ist es. Das fällt bei mir immer noch durch das Raster durch, sollte es aber nicht. Immer wieder sehe ich in Beispielen, das es so gemacht wird und jedesmal denke ich, das sollte ich auch so machen und jedesmal......
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Josef Stockinger
- UDF-Programmierer
- Beiträge: 53
- Registriert: So, 25. Sep 2005 18:06
- Wohnort: Nähe Regensburg
- Kontaktdaten:
Hallo Hubert,
wenn Du bereit wärst eine Schulung über dieses Thema zu halten - auch gegen Bezahlung! - wäre ich sofort dabei. Aus all Deinen Beiträgen im Forum sehe ich deutlich, das es Dir gegeben ist, Wissen auf verständlich Art rüber zu bringen und Du einen riesigen Fundus an Erfahrung hast.
Wer hätte daran noch Interesse bzw. denselben Wunsch?
Gruß
Josef
wenn Du bereit wärst eine Schulung über dieses Thema zu halten - auch gegen Bezahlung! - wäre ich sofort dabei. Aus all Deinen Beiträgen im Forum sehe ich deutlich, das es Dir gegeben ist, Wissen auf verständlich Art rüber zu bringen und Du einen riesigen Fundus an Erfahrung hast.
Wer hätte daran noch Interesse bzw. denselben Wunsch?
Gruß
Josef
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Josef,
also ich für meinen Teil wäre auch sehr interessiert an soetwas, gerade über Klassen. Aber in meinem Fall bitte eher schriftlich, denn zu Euch in den Süden zu kommen wäre mir dann doch zu aufwändig (abgesehen davon, daß ich schon mein Weib wegen Berlin überreden musste). Vielleicht das Skript bzw. die Präsentation?
Ansonsten muß ich Hubert absolut Recht geben. Ich finde die Beispiele auch häufig abgehoben. Vor allem stört mich aber auch, daß die Beispiele alle grundsätzlich nicht auf GUI gemünzt sind. Aber das ist mein persönliches Problem, ich weiß daß viele von Euch nicht unbedingt mit GUI arbeiten.
Jan
also ich für meinen Teil wäre auch sehr interessiert an soetwas, gerade über Klassen. Aber in meinem Fall bitte eher schriftlich, denn zu Euch in den Süden zu kommen wäre mir dann doch zu aufwändig (abgesehen davon, daß ich schon mein Weib wegen Berlin überreden musste). Vielleicht das Skript bzw. die Präsentation?
Ansonsten muß ich Hubert absolut Recht geben. Ich finde die Beispiele auch häufig abgehoben. Vor allem stört mich aber auch, daß die Beispiele alle grundsätzlich nicht auf GUI gemünzt sind. Aber das ist mein persönliches Problem, ich weiß daß viele von Euch nicht unbedingt mit GUI arbeiten.
Jan
Die alten Bsp von Alaska sind noch aus der Anfangs- (Migrations-) Zeit.Jan hat geschrieben: Vor allem stört mich aber auch, daß die Beispiele alle grundsätzlich nicht auf GUI gemünzt sind.
ME sollten heute alle Bsp in GUI sein.
Aber dafür scheinen die Alaska's keine Zeit zu haben ...
Womit denn sonst?Aber das ist mein persönliches Problem, ich weiß daß viele von Euch nicht unbedingt mit GUI arbeiten. Jan
... ich meine, abgesehen von "Altlasten" ...
Ich hätte bestimmt Interesse.Josef Stockinger hat geschrieben:Hallo Hubert,
wenn Du bereit wärst eine Schulung über dieses Thema zu halten - auch gegen Bezahlung! - wäre ich sofort dabei. Aus all Deinen Beiträgen im Forum sehe ich deutlich, das es Dir gegeben ist, Wissen auf verständlich Art rüber zu bringen und Du einen riesigen Fundus an Erfahrung hast.
Wer hätte daran noch Interesse bzw. denselben Wunsch?
Josef
Aber noch besser wäre hier eine Fortsetzung von ein paar grundsätzlichen Erläuterungen.
So eine Art Crashkurs...
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Hallo an alle,
ob ich der richtige für eine richtige Schulung in OOP bin wage ich ja zu bezweifeln,
aber ich bin gerne bereit hier einige Diskusionen zu solchen Themen zu begleiten und
meine Meinung bzw. was ich tun würde hier kund zu tun.
Wie man sieht gehöre ich ja nicht zu den schreibfaulen
Wo drückt euch denn der Schuh, ist es OOP, Privat Local etc. Variablen ...
Eventuell habt Ihr ja auch Routinen, die euch drücken, wie damals Manfred mit dem Sortieren.
Wenns nicht zu lange ist kann jeder davon lernen und ich erkläre gerne was ich warum anders machen würde
obwohl ich mir nicht einbilde den besten oder einzig richtigen Weg zu gehen
ob ich der richtige für eine richtige Schulung in OOP bin wage ich ja zu bezweifeln,
aber ich bin gerne bereit hier einige Diskusionen zu solchen Themen zu begleiten und
meine Meinung bzw. was ich tun würde hier kund zu tun.
Wie man sieht gehöre ich ja nicht zu den schreibfaulen
Wo drückt euch denn der Schuh, ist es OOP, Privat Local etc. Variablen ...
Eventuell habt Ihr ja auch Routinen, die euch drücken, wie damals Manfred mit dem Sortieren.
Wenns nicht zu lange ist kann jeder davon lernen und ich erkläre gerne was ich warum anders machen würde
obwohl ich mir nicht einbilde den besten oder einzig richtigen Weg zu gehen
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21214
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
das ist recht nett von Dir und prima, aber wie schon erwähnt, wir kommen auf die Dauer nicht um eine Wikipedia hier im Forum herum.
das ist recht nett von Dir und prima, aber wie schon erwähnt, wir kommen auf die Dauer nicht um eine Wikipedia hier im Forum herum.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!