getter setter fkt.



  • hallo

    gibt es bei mfc sowas, dass es automatisch getter und setter fkt. einfuegt??

    bei eclipse gibt es anscheined sowas.

    wenn ich ne klasse erstelle, mit z.b. 3 membervariablen

    dann es gleich die get und set fkt einfuegt und ich die nicht immer tippen muss



  • Die IDE selbst unterstützt es nciht. Vielleicht findest du aber ein AddIn, das diese Funktionalität bereit stellt.



  • Macht es denn sinn ?
    Will man jeden Wert den man speichert mit get und set versehen ?

    Tut die Faulheit die get/set selbst zu schreiben dem design nich irgendwie sogar gut weil man überlegt wie man drum herum kommt ?

    Fand es auch mal ne Zeitlang störend, mittlerweile würde es mich nerven ständig getset zu löschen.



  • noe du hast recht ist echt sc.. wenn man z.b. eine paar klassen hat mit paar (4-8) attricuten und man muss immer per hand alles machen.

    noe ist auch nicht gut das es z.b. eine List gibt mit checkboxen und man auswählen könnte ob man get/set will oder nicht.

    denk mal drüber nach.

    ausserdem ist es eine designfrage, und wenn ich eine klasse erstelle, dann "manipuliere" ich IMMER über set und nehme durch get. ( ok ausser beim helloWorld )
    welche vorteile es bringt? schau dir mal gute literatur an, dann erkennste gute bsp. und welche nachteile bring es?? naja der code ist länger



  • newkid schrieb:

    ausserdem ist es eine designfrage, und wenn ich eine klasse erstelle, dann "manipuliere" ich IMMER über set und nehme durch get. ( ok ausser beim helloWorld )
    welche vorteile es bringt? schau dir mal gute literatur an, dann erkennste gute bsp. und welche nachteile bring es?? naja der code ist länger

    *lol*
    schonmal etwas von kapselung und information hiding gehoert?



  • Shade Of Mine schrieb:

    *lol*
    schonmal etwas von kapselung und information hiding gehoert?

    aehmm ja, und? wo liegt das problem?
    bin jetzt gespannt was jetzt kommt



  • DFTT



  • MaSTaH schrieb:

    DFTT

    ...sonst wird er immer fetter 😉



  • newkid schrieb:

    aehmm ja, und? wo liegt das problem?
    bin jetzt gespannt was jetzt kommt

    Hast also noch nix davon gehoert, schade 😞
    solltest dich da mal n bisschen schlau machen - dann postest du vielleicht nicht mehr so nen bloedsinn.



  • wenn du mit vc++ activex controls erzeugst kannst du übrigends automatisch get/set funktionen für deine attribute hinzufügen lassen

    is halt sehr ms spezifisch



  • Shade Of Mine schrieb:

    Hast also noch nix davon gehoert, schade 😞
    solltest dich da mal n bisschen schlau machen - dann postest du vielleicht nicht mehr so nen bloedsinn.

    ok war nicht gerade nett zu dir, aber du kannst mir gerne helfen.

    Also dann schildere ich mal was ich unter Inf. Hid. verstehe.

    Also es gibt mehrere arten "warum und wie man programmiert"

    z.b. man erstellt eine .exe.
    also eine programm, was etwas tut. Converter,emule, und und und

    dann programmiert man um sich selber und dann auch z.b. für andere etwas gutes zu tuen. Sprich man erstellt Klassen die einem helfen sollen.
    So in der art von CodeGuru. Man bekommt die .h und die .cpp files und dann diese benutzen und abändern. Das ist noch kein Inf.Hid. drin. klar

    Dann gibt es fälle wo man z.b. für andere etwas Prog. tut. endweder es ist ein Auftrag, oder man hat eine Hardware ( z.b. für auto, kaffeeautom. bankautom. raketenabschussprogramme ) und stellt Schnittstellen zur verfügung ( die methoden).
    Dann erhählt der Kunde die .h files und hat die Schnittstellen. die .cpp sind "verschlossen" .dll

    dann bindet er die files ein und kann intit., und versch. sachen machen.
    das ist dann inf.hid.

    klar wenn ich eine variable habe die beim objekt erstellen initi. werden muss aber frozen ist, dann brauch ich auch keine get und set fkt.

    so sehe ich inf. hid. .was ist an diesem "weltbild" bitte falsch? hab ich was verpasst? "überlesen" eine revolution verpasst?

    Also wenn darauf jetzt jemand antwortet, dann nur wenn er es ernst meint. rum lamen oder troll nennen oder sonstwas, bring die sache nicht voran.

    Also nochmals auf das Thema zurückzukommen, ich habe nur gefragt wegen den get und set fkt.
    ob ich meine prozeduren oder geile algorithem preis geben will ist doch meine he.



  • schau dir einfach mal zB
    std::vector, string, etc.

    du hast teilweise zugriff - aber du hast keine get/set methoden.

    schau dir boost an - get/set nur in den seltensten fällen.

    get/set methoden sind einfach ausnahmen - normalerweise sind sie nicht nötig.

    du sagst obj.moveUp()
    und nicht obj.setX(obj.getX()+1)

    information hiding hat nix mit offenlegung von quellcodes zu tun.



  • Shade Of Mine schrieb:

    du sagst obj.moveUp()
    und nicht obj.setX(obj.getX()+1)

    information hiding hat nix mit offenlegung von quellcodes zu tun.

    so mein ich das auch wieder nicht
    bei mir würde es so aussehen,
    obj.set_x( int x){ m_x = x;}
    oder obj.set_x(), { m_X = blabla /*-+ blablabla }

    zum bsp.
    oder eben dein moveup(){kor_x = kor_x + Joy_x();}
    oder irgendwas anderes

    hab das eher so gemeint



  • Shade Of Mine schrieb:

    schau dir einfach mal zB
    std::vector, string, etc.

    du hast teilweise zugriff - aber du hast keine get/set methoden.

    schau dir boost an - get/set nur in den seltensten fällen.

    ok dann wollte ich noch höflich fragen wie du es z.b. machen würdest bei einer Versicherungsfirma.

    die haben teilweise viele klassen, und klassen mit über 20 attributen ( bis zu 400 insg. dann pro obj. )

    da fällt mir spontan ein:

    persnr
    gebdat
    name
    vorname
    versklasse
    risikokla
    blabla
    blabla
    betreig

    dann adressklasse

    strasse, hausnr. tel. fax, mail, plz. bezirk, usw usw

    wie macht man es dann da ohne get und set methoden
    wenn man embedded c++ oder java macht und dann die werte dann auf dem DB server manipulieren muss. wo man werte ausrechnen muss ( div. faktoren ) usw.

    und das dann ohne get/set methoden.



  • dann hast du doch einfache structs - der eintrag besteht dann eben aus diversen kunden infos - wozu ne komplizierte klasse bauen, wenn es eine einfache struktur für daten ist?

    get/set hat nur dann sinn, wenn das get bzw. set auch etwas macht, einfache werte zuweisen ist nicht sonderlich viel 🙂 dann kannst du es ja gleich bleiben lassen.

    das kommt jetzt auf die daten an, aber uU wäre zB eine map für diese attribute auch recht praktisch (jetzt nicht aus der sicht von kapselung und information hiding, aber aus sicht von erweiterbarkeit)

    denn normalerweise (ausnahmen wird es immer geben) hat man einen designfehler wenn eine klasse 20 attribute hat, und dann auch noch alle get/set methoden hat



  • Wenn ihr für Steuerlemente in einem Dialog Variablen anlegt bzw. anlegen lässt,
    schreibt ihr für diese doch keine get und set Methoden, oder?
    Außer bei Members in der Doc-Klasse da nach einem Set ein SetModifiedFlag ();
    aufgerufen werden sollte.
    Aber für einfache Dialoge wäre das doch "unnötig", da man so ja nur den Code
    ausbremst, ob ich dlg.staticText = "foo" oder dlg.setStaticText ("foo") schreibe
    kommt aufs gleiche raus.
    Erst wenn der Wert auf bestimme Eigenschaften überprüft werden muss, oder dieses
    Feld nur verändert werden darf, wenn irgendetwas gegeben ist, machen solche
    Methoden Sinn.

    Ist jedenfalls meine Ansicht.



  • also für variablen für steuerelemente listboxen editferlder usw nehme ich auch keine get set methoden.

    was du sagst mit dem überprüfen, könnte sinn machen, da ja eine versicherungsgesellschaft ja zig daten auswerten muss ( z.b. wenn man versch. versicherungspakete hat lebensvers, kranken, beruftsunfähigk. ) und die dann die daten nach plausibilität, und nach kennungen ( raucher, weiblich, unter 25 ect, bush wähler usw. ) durchführen muss.
    ich kenne jemanden der bei einer grossen gearbeitet hat und da hatte die halt pro mitglied halt soviele daten die dann in versch. klassen untergebracht sind.
    find ich aber normal.

    man nimmt auch keine "einfache struct" für die daten dann, weil man nicht gerade die 0te oder 1ste normalform wählt. deswegen kapselt man immer in eigene klasse wenn sinnvoll

    z.b. bsp Geschäft

    klassen: z.b.
    Kunde, Verkäufer, Person, adresse, bank, artikel, einkauf, einkaufartikel, usw. dies alles in einer "einfachen" struct zu modelieren? davon wird dir jeder db designer abraten.

    was ich mir überlegt habe man würde das OBjekt AUTO anlegen wollen. mit klassen z.b. karesorie, motorraum, motor, auspuffanlage ( festiger, schrauben, gewinde und und und ) und jedes einzelteil mit namen, gewicht, qualitätsmerkmal und und und designen würde, dann würde auch viel zusammenkommen.

    oder nimm mal den menschen. oder komplexe strukturen wie die natur.

    muss ja nicht immer die string klasse sein, die sich "nur" mit strings beschäftigt.



  • newkid schrieb:

    die dann die daten nach plausibilität, und nach kennungen ( raucher, weiblich, unter 25 ect, bush wähler usw. ) durchführen muss.

    Das kommt halt darauf an. Warum willst du die Daten auf plausibilitaet testen, wenn du sie gerade der datenbank entnommen hast.
    uU ist soetwas ja recht aufwendig.

    Deshalb waere es uU besser einfach nur ein verifyData() zu haben, dass die struct testen.

    Das kann man dann schoen machen, wenn der user OK klickt 🙂

    Die Frage bei get/set ist doch auch immer: muss man wirklich auf die Elemente zugreifen?

    reicht es nicht, wenn die Klasse sich selber darstellen kann? zB indem sie eine const struct liefert, in der alle Daten enthalten - so haettest du eine get Methode, die die kapselung nicht bricht 😉 Und um damit die Daten in einem Dialog auszufuellen reicht es auch.

    natuerlich kenne ich das system nicht und kann deshalb nichts mit sicherheit sagen - aber vielleicht findest du eine meiner ideen ja interessant...

    ich kenne jemanden der bei einer grossen gearbeitet hat und da hatte die halt pro mitglied halt soviele daten die dann in versch. klassen untergebracht sind.
    find ich aber normal.

    Eine Klasse fuer Vorname, Nachname, Alter,...? ne, das verstehe ich jetzt nicht.

    Natuerlich kann sich eine Klasse anbieten, wenn das Datum komplex ist, zB irgendweclhe beziehungen zu anderen Daten handlen muss.

    man nimmt auch keine "einfache struct" für die daten dann, weil man nicht gerade die 0te oder 1ste normalform wählt. deswegen kapselt man immer in eigene klasse wenn sinnvoll

    kommt halt immer darauf an was man will. eine klasse ist nicht immer die beste wahl.

    als 'rule of thumb' kann man sagen, dass eine klasse die alle ihre member per get/set veroeffentlicht, uU besser eine struct ist. (Ausnahmen gibt es natuerlich immer).

    Kunde, Verkäufer, Person, adresse, bank, artikel, einkauf, einkaufartikel, usw. dies alles in einer "einfachen" struct zu modelieren? davon wird dir jeder db designer abraten.

    adresse waere zB ein Kandidat fuer eine struct. uU auch artikel - haengt aber mit der modellierung zusammen.

    ich glaube du verstehst mich nicht: ich sage nicht: nimm immer struct, sondern nimm nicht immer klassen nur weil es sie gibt.

    muss ja nicht immer die string klasse sein, die sich "nur" mit strings beschäftigt.

    natuerlich. aber zB eine Klasse fuer Adressen wo du
    setStreet, setHouseNr, setCity, setZIP, etc. hast - was bringen sich dann die set Methoden, wenn die eh nicht auf plauibilitaet pruefen koennen (hoechstens city und ZIP, aber selbst das kann zu aufwaendig werden).


Anmelden zum Antworten