30. november 2000 - 11:27Der er
7 kommentarer og 1 løsning
Classer
Er der ikke en smart måde man kan lave alle de public functioner/procedure i stedet for at skrive en function til hver hent og en procedure til hver gem. Noget med \'read as\' og \'write as\' ikke??
Prøv at slå op under \"property\" i din Delphi hjælp - jeg kan desværre ikke lige et eksempel i hovedet, så du får en kommentar istedetfor et svar, og så må du selv guide dig udfra hjælpen - håber det er okay ;-)
tjaa - siden du vil lade dine objekt instanser og de klasser som nedarver fra din klasse tilgå dine member variabler mere eller mindre direkte kan du vel ligeså godt putte dem ind i public. De properties du laver bliver alligevel public (published ?)
tknudsen> \"God skik siger\", at du skjuler dine variabler og så laver methode (i dette tilfælde properties) til at accesse dem - men ellers har du fuldstændig ret (om du tilgår dem direkte eller som jeg gør - giver samme resultat).
Personlig så laver JEG altid properties og så \"skuler jeg\" variablerne enten i Private eller Protected. Dette giver den fordel at jeg på et senere tidspunkt nemt kan ændre den måde hvorpå class\'en (internt) \"læser/skriver\" variablerne uden at jeg skal ændre en eneste linie i resten af koden. Som jeg ser det giver det kun det kun \"lidt ekstra arbejde\" med at definere properti\'erne (som er tjent ind hvis man skal ændre på det senere).
pellelil>det er et foreslag - jeg gør som du, men er surreal lige begyndt med at programmere sine egne klasser kunne jeg forestille mig at det er et irretationsmoment at skulle skrive set og get funktioner til alle member vars
Der er meget lidt ekstra arbejde i at benytte properties og langt bedre service på sigt.
Start med at lave din classe således:
type TForm1 = class(TForm) private { Private declarations } public { Public declarations } Property Variabel : Integer; end;
Tryk så på CTRL+SHIT+C, hvorefter Delphi ændrer din code til:
type TForm1 = class(TForm) private FVariabel: Integer; procedure SetVariabel(const Value: Integer); { Private declarations } public { Public declarations } Property Variabel : Integer read FVariabel write SetVariabel; end;
Bemærk at coden her tilgår variable direkte ved read mens write operationer går igennem en metode kaldet SetVariabel (som desuden er oprettet automatisk i Implementation delen. Ønsker man så at read access også skal foregå via en metode, ændrer man lige teksten \"read FVariabel\" til \"read GetVariabel\" og trykker igen på CTRL+SHIFT+C og igen sker der noget magisk.
PS: Selvom properties er lækre at arbejde med, så er det ikke altid de kan benyttes så nemt. Fx. kan Array properties kun oprettes under Public delen og i COM kan man ikke skjule property access metoderne i private delen, så noget af ideen forsvinder.
Delphi
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.