Sinnvolles einsetzen von klassen



  • Klassen sind nich einfach nur die Trennung oder teilung von code.. es ist das objektorientiere denken was klassen effektiv machen!! Ne klasse ist ja nix anderes als ein Muster aus dem ein objekt erzeugt wird, wenn du dir deine anwenudn als zusammen spiel vorstellst, und auch mit objekten aus der realen weltvergeilcht wirst du bald mal das OO denken drauf haben:)



  • FachmannFürObjekte schrieb:

    Objekte sind keine Aktionen. Mit oder an Objekten führt man Aktionen durch.

    Das kann man so nicht pauschal sagen, man kann auch Aktionen in Klassen kapseln (z.B. Zustände, State-Pattern, usw). Da verpackt die Klasse tatsächlich nur noch eine Aktion, das Objekt entspricht dann dem Zustand, also letztlich der gewollten Aktion.



  • Die Klasse entspricht einem Zustand (State) und man bildet eine Instanz davon und fürhrt mit diesem Objekt die passende Aktion zu diesem Zustand durch.



  • BorisDieKlinge schrieb:

    Klassen sind nich einfach nur die Trennung oder teilung von code.. es ist das objektorientiere denken was klassen effektiv machen!! Ne klasse ist ja nix anderes als ein Muster aus dem ein objekt erzeugt wird, wenn du dir deine anwenudn als zusammen spiel vorstellst, und auch mit objekten aus der realen weltvergeilcht wirst du bald mal das OO denken drauf haben:)

    was waere denn eine gute moeglichkeit in OOP einzusteigen ? ich hab das bisher zwar schon oefters gehoert - konnte mir aber noch nie genaueres drunter vorstellen - hab auch schon einige sachen darueber gelesen - aber irgendwie hab ich es nicht verstanden - gibts gute lektuere die OOP gut erklaert ?



  • Versuch einfach deine Projekte in Module (UI, Datenbank, Logik, ...) aufzuteilen. Diese Teilst du dann wieder auf (Buttons, Textfelder ...). Nicht nur an die Funktionen und an "if das, dann das" usw. denken, sondern was die einzelnen Teile können sollen und wie sie miteinander kommunizieren.
    Und schau dir einfach ein paar Designpattern an, dann bekommst du schon ein paar gute Ideen wie Objekte aussehen und zusammenarbeiten können.



  • Benutze einfach gute OO-Bibliotheken. Dann kann man schon mal sehen wie es andere gemacht haben. Der nächste Schritt kann sein, solche OO-Bibliotheken zu ändern und sich den Code anzuschauen. So war das bei mir damals der Fall, als ich ein PC-Spiel (C++) ändern und erweitern mußte. Irgendwann kam mir dann das "Aha!"-Erlebnis. Davor habe ich zwar C++ Code verstanden und bearbeiten können, aber OOD kam dann erst später von einem Moment auf den anderen.



  • mal ne frage nebenbei

    angenommen es geht um eine dialoganwendung
    waehre es ratsam die dialog klasse als hauptklasse anzusehen - oder waere es besser die dialogklasse in einer eigenen hauptklasse abzuleiten ?

    zb es gibt eine klasse die ist fuer eigene string manipulatoren zustaendig, je nachdem was man manipuliert haben will braucht man nur die benoetigte methode aufrufen

    dann gibts noch eine klasse die ist fuer erstellen einer logdatei zustaendig, da das selbe

    dann eine klasse die die schnittstelle zur gui darstellt (dialog)

    und der ganze vorgang wird in der hauptklasse erledigt

    nun - da es zb nur ein dialogfeld basierendes project ist, kann/sollte man die dialog klasse als hauptklasse ansehen oder auch diese nur als schnittstelle ?!



  • Eine Klasse ist eine Schablone für Objekte.

    Ein Objekt definiert sich durch einen Zustand in dem es sich befindet und einen Satz von Funktionen, die den Zustand abfragbar machen, verändern, verarbeiten, ....

    Soweit die Theorie. In der Praxis wird es neben den Klassen, die durch das Design vorgegeben sind noch weitere Klassen geben, die notwendig sind um eine bestimmte Funktionalität in der jeweiligen Programmiersprache abzubilden.
    Diese müssen sich nicht zwingend an die Definition halten..



  • Mr Evil schrieb:

    angenommen es geht um eine dialoganwendung
    waehre es ratsam die dialog klasse als hauptklasse anzusehen - oder waere es besser die dialogklasse in einer eigenen hauptklasse abzuleiten ?

    Ableiten drückt eine bestimmte Beziehung zwischen zwei Klassen aus. Öffentliche-Ableitung class A : public B { }; bedeutet A IST-EIN B . Du solltest dich also beim ableiten fragen, ob diese Beziehung erfüllt ist. Ansonsten ist die Ableitung falsch!

    Aus dem Grund sollte man erst einmal die Grundlagen solide lernen, bevor man sich an GUI-Programmierung und Zeugs ran macht.

    Tipp: Besorg dir die Bücher Effektiv C++ und Exceptional C++ (bzw. lies http://www.gotw.ca/gotw/index.htm)





  • Ich kenne die neueren Bände zwar nicht. Aber da die ersten mich überzeugt haben, sollten die anderen wohl auch gut sein. Wenn du sie dir eh ausleihen kannst, dann nichts wie ran an die Bücher. Du kannst davon nur profitieren.


Anmelden zum Antworten