Klassen, Methoden und Objekte

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Daniel

Klassen, Methoden und Objekte

Beitrag von Daniel »

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 ... :joker:

Aber nicht dass ihr glaubt, alle Schweizer seien ...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Klassen, Methoden und Objekte

Beitrag von brandelh »

Daniel hat geschrieben:also stelle ich hier die erste dumme Frage:
...
Aber nicht dass ihr glaubt, alle Schweizer seien ...
Hi,

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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

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:
  • Motor
  • Fahrgestell
  • Reifen
  • Abblendlicht
  • Fernlicht
  • Rücklicht
  • Bremsleuchte
  • Nummernschild
  • Blinker
  • Lenkrad
  • Sitz
  • Kofferraum
  • Chassis
  • Scheibenwischer
  • ....
Und als nächstes könnte man sich Gedanken über die einzelnen Fahrzeugtypen machen und diese von der Hauptklasse ableiten und verfeinern.
  • Anzahl der Reifen
  • Art des Motors
  • Anzahl der Scheibenwischer
  • Lage des Kofferraumes
  • Aussehen des Chassis
  • Anzahl der Sitze
  • Sonderausstattung (Martinshorn, Blau-/Gelblicht, ...)
  • ....
Übertragen auf Xbase++ hast Du im Allgemeinen zum Beispiel pro Dialog eine Klasse. Grundfunktionalitäten, die in allen Dialog vorhanden sein sollen, programmierst Du in die Klasse, von der die anderen abgelitten werden.

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Klassen, Methoden und Objekte

Beitrag von brandelh »

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?
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:

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.)
Nun denken wir an mehrere Varianten von z.b. SLE:

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 ;)
Daniel hat geschrieben:2. Wie kann man ein Objekt erklären, wie ist es charakterisiert, aufgebaut und was kann man damit machen?
Ein Objekt bezeichne ich gerne als Mischung zwischen Funktion und Daten.
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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Klassen, Methoden und Objekte

Beitrag von Martin Altmann »

Hallo Hubert,
brandelh hat geschrieben:- Kaum volljährig bei gleicher Bitte kommt die Antwort 'hols doch selbst, bin ich dein Diener' ...
eindeutig falsche Aufforderung - bessere Resultate bringt ein: Hol uns doch mal ein Bier... :D

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

jetzt muß ich gleich mal meinen fragenden Kommentar hier abgeben:
die prozedurale Programmierung ist sogar besser, als eine "schlechte" objektorientierte Programmierung
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."

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!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

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 :lol:
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. :wink:

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

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.
:D

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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

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. :wink:
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

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......
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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich halte viele Beispiele von Xbase++ einfach für zu umständlich, falls sie nicht trivial sind.
Gruß
Hubert
Daniel

Beitrag von Daniel »

Vielen Dank, Martin, Hubert und Manfred

damit ist schon mal einiges Grundsätzliches erhellt.

Wenn die meisten Beispiele nicht gut sind.
stellt sich die Frage, ob jemand ein besseres darstellen könnte?
Je nach dem in diesem oder einem eigenen Thread.
Benutzeravatar
Josef Stockinger
UDF-Programmierer
UDF-Programmierer
Beiträge: 53
Registriert: So, 25. Sep 2005 18:06
Wohnort: Nähe Regensburg
Kontaktdaten:

Beitrag von Josef Stockinger »

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
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

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
Daniel

Beitrag von Daniel »

Jan hat geschrieben: Vor allem stört mich aber auch, daß die Beispiele alle grundsätzlich nicht auf GUI gemünzt sind.
Die alten Bsp von Alaska sind noch aus der Anfangs- (Migrations-) Zeit.
ME sollten heute alle Bsp in GUI sein.
Aber dafür scheinen die Alaska's keine Zeit zu haben ...
Aber das ist mein persönliches Problem, ich weiß daß viele von Euch nicht unbedingt mit GUI arbeiten. Jan
Womit denn sonst? :?:
... ich meine, abgesehen von "Altlasten" ... :wink:
Daniel

Beitrag von Daniel »

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
Ich hätte bestimmt Interesse.
Aber noch besser wäre hier eine Fortsetzung von ein paar grundsätzlichen Erläuterungen.
So eine Art Crashkurs... :)
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Ich hätte auch Interesse.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

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 :wink:

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
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

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. :-)
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!!
Daniel

Beitrag von Daniel »

Danke für deine Bereitschaft, Hubert!

Hab' mal mit einer Frage +einem Bsp. einen neuen Thred eröffnet.
Antworten