Autor Beitrag
Mortal-Shadow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 110



BeitragVerfasst: Di 01.07.08 17:25 
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: www.christian-stelzm...rtikel/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:
ausblenden 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;

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

ausblenden 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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 01.07.2008 um 18:35
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Mortal-Shadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 110



BeitragVerfasst: 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 :)
Zitat:
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: www.christian-stelzm...rtikel/crashkurs.htm

-> 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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).

_________________
Markus Kinzler.