Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Ein paar Fragen
Mortal-Shadow - Di 01.07.08 17:25
Titel: Ein paar Fragen
Hallo,
ich bin noch relativ neu hier und wurde bei meiner anfrage nach einem Artikel in dem man einiges über delphi lernen kann auf den hier verwiesen:
http://www.christian-stelzmann.de/artikel/crashkurs.htm
Dabei haben sich für mich jedoch einige Fragen aufgetan:
1) Properties:
| Zitat: |
| Hier wurde nur die Deklaration für die property "x" verändert: Es wird von "x" aus nun nicht mehr auf die private Eigenschaften "Fx" zugegriffen, sondern die Aufrufe werden an die Funktion "getX" und die Prozedur "setX" weitergeleitet. Wird also "x" wieder (wie oben bereits gezeigt) der Wert 5 zugewiesen, wird nun die Prozedur "setX" aufgerufen und als Parameter "value" die 5 übergeben. Wird "x" abgefragt, so wird die Funktion "getX" aufgerufen und das Ergebnis als "x" zurückgegeben. |
Verstehe ich das richtig, dass wenn ich für setX eine prozedur einrichte, die den Wert vervierfacht und irgendwo im Programm x:=5 schreibe, setX aufgerufen wird und mein x schulssendlich 20 ist?
2) Der Array: Liege ich richtig wenn ich sage, dass er eine 'Variablensammlung' ist und sein zweck ist, einem das einfügen vieler einzelner Variablen zu ersparen?
3) Verschiedene Klassen: Mit virtual und abstract kann man einer Unterklasse erlauben, die Werte die von der Mutterklasse gegeben werden zu verändern. Aber welchen Sinn hat den überhaupt eine Unterklasse wenn sie diese Rechte nicht hat?
Es gibt hierbei folgendes angeführtes Beispiel:
| Zitat: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type TAuto = class(TObject) private public function drive : String; end;
function TAuto.drive : String; begin result := 'TAuto.drive'; end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type TOpel = class(TAuto) private public function drive : String; end;
function TOpel.drive: String; begin result := 'TOpel.drive'; end; |
Und dazu folgende Verwendung der beiden Klassen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var auto : TAuto; begin auto := TOpel.Create; ShowMessage(auto.drive()); end; |
Beachten Sie dabei, dass "auto" zwar als "TAuto" deklariert wurde, aber der Konstruktor von "TOpel" aufgerufen wird, außerdem sollten Sie beachten, dass die Methode in "drive" in der Klasse "TAuto" nicht als "virtual" deklariert wurde.
Führt man diesen Code nun aus, sieht man, dass die Methode "drive" aus der Klasse "TAuto" aufgerufen wird, obwohl wir eine Instanz der Klasse "TOpel" erzeugt haben. |
Darf ich das so verstehen, dass man den in einer Unterklasse benutzten Funktionen in der Mutterfunktion immer die Attribute virtual und abstract geben muss, da ansonsten die Unterlassenfunktion nutzlos ist? :gruebel:
Welchen Sinn hätte das - da könnte delphi dies doch automatisch machen -> ich habe vermutlich irgedeinen denkfehler.
Vielen Dank schon mal im Vorraus für eure hilfe und entschuldigung falls einige meiner fragen für euch doch recht trivial sein sollten.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 01.07.2008 um 18:35
Tilman - Di 01.07.08 17:32
@arrays: arrays können mehrere Dimensionen haben. Eindimensionale Arrays sind dabei mit "Listen" zu vergleichen (im Sinne der Umgangssprache). ZWeidimensionale Arrays entsprechen "Tabellen", z.B. kann man Schachbretter gut mit einem zweidimensionalen Array realisieren.
@Unterklassen: Man muss nicht immer vorhandene Methoden und Eigenschaften überschreiben. Meistens erweitert man vorhandene Classen nur um eigene FUnktionalitäten.
Allgemein frage ich mich wie gut du überhaupt programmieren kannst bzw. wie weit es mit deinen Delphi-Kenntnissen bestellt ist. Das Thema "Array" scheint mir ein indiz zu sein, dass du noch nicht viel programmiert hast. Evtl. könnte es der falsche Ansatz sein, sich bereits jetzt mit Vererbung und Polymorphie zu beschäftigen.
Mortal-Shadow - Di 01.07.08 17:56
| Zitat: |
| Das Thema "Array" scheint mir ein indiz zu sein, dass du noch nicht viel programmiert hast. |
immerhin habe ich es anscheinend richtig begriffen :)
-> Ja ich bin relativ neu beim programmieren - die grunddinge wie if then, schleifen oder dateien einzulesen und zu schreiben sind kein problem und ich würde mich gerne ein wenig weiter in delphi umsehehen.
der obige link war wie gesagt ein tipp dazu und er kam nunmal auf diese themen zu sprechen.
falls du einen besseren vorschlag hast, freue ich mich natürlich darüber.
mkinzler - Di 01.07.08 19:10
Zudem ist die Bezeichnung "Unterklasse" recht ungeschickt. Es handelt sich ja eher um eine abgeleitete Klasse.
Diese dienen zur Klassifizierung/Verfeinerung
Opel1 is vom Typ TOpel. Und deshalb auch ein Auto ( IS-A).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!