AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekt erzeugen - aber welche Klasse - und wie zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt erzeugen - aber welche Klasse - und wie zugreifen?

Ein Thema von MarioM. · begonnen am 29. Mai 2006 · letzter Beitrag vom 29. Mai 2006
Antwort Antwort
MarioM.

Registriert seit: 29. Mai 2006
52 Beiträge
 
#1

Objekt erzeugen - aber welche Klasse - und wie zugreifen?

  Alt 29. Mai 2006, 18:17
Guten Tag zusammen,

ich habe folgendes Problem, und hoffe, Ihr könnt mir dabei behilflich sein.

Ich habe zwei Klassen geschrieben, TSuzuki und TKawasaki.

Ich möchte nun in meinem Programm, je nachdem was der User auswählt, ein Objekt aus dieser Klasse erzeugen; und hier hört es auch schon auf mit dem Wissen um OOP, bzw. fangen die Probleme an.

Ich habe zwar schon einige Tutorials diesbezüglich gelesen, allerdings haben die sich alle mit einfachen Beispielen befasst, in dem eine Klasse geschrieben, und daraus dann ein Objekt erzeugt wurde.

Nun also zum Problem.

Normalerweise erzeuge ich ein Objekt dadurch, dass ich eine Variable erstelle, dieser einen Typ zuweise, und dann z.B. sage

Delphi-Quellcode:
var
  MeineVariable: TMeinTyp;
begin
  MeineVariable := TMeinTyp.Create;
end;
Nun ist es in meinem aktuellen Beispiel aber so, dass ich noch nicht weiss, was für ein Typ das sein wird, es kann also TSuzuki oder TKawasaki sein.

Muss ich dem Fall zwei Variablen anlegen, und je nachdem welcher Typ benötigt wird, eine von den beiden erzeugen, also so:

Delphi-Quellcode:
var
  MeineSuzuki: TSuzuki;
  MeineKawasaki: TKawasaki;
begin
  if Maschine = 'Suzukithen begin
    MeineSuzuki := TSuzuki.Create;
  end
  else if Maschine = 'Kawasakithen begin
    MeineKawasaki := TKawasaki.Create;
  end;
end;
Das wäre ja ziemlich umständlich, gerade wenn es dann mehrere Klassen sind.

Und meine zweite Frage:
Ich möchte natürlich mehrere dieser Objekte erzeugen. Wie kann ich dann später auf diese Objekte zugreifen? Ich meine, die heissen dann ja alle MeineSuzuki oder MeineKawasaki - geht das überhaupt, oder kann ich da irgendwie zur Laufzeit Variablen anlegen?


Verzeiht bitte, dass ich so ein für Euch sicherlich triviales Problem habe, aber ich beginne gerade erst mit der OOP und bin diesbezüglich nirgends fündig geworden - danke.
  Mit Zitat antworten Zitat
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#2

Re: Objekt erzeugen - aber welche Klasse - und wie zugreifen

  Alt 29. Mai 2006, 18:33
Ein Vorschlag: Erstell eine Klasse TMotorrad, von der die andern beiden abgeleitet werden:
Klassendeklarationen:
Delphi-Quellcode:
type
  TMotorrad = class(TObject)
    // Eigenschaften und Methoden, die beide Klassen gemeinsam haben sollen
  end;

  TSuzuki = class(TMotorrad)
    // hier alles suzukispezifisches
  end;

  TKawasaki = class(TMotorrad)
    // und hier kawasakispezifisches
  end;
Verwendung:
Delphi-Quellcode:
var
  MeinMotorrad: TMotorrad;
begin
  if Maschine = 'Suzukithen
  begin
    MeinMotorrad := TSuzuki.Create;
  end
  else
  if Maschine = 'Kawasakithen
  begin
    MeinMotorrad := TKawasaki.Create;
  end;
end;
Unterscheiden, welche Marke es ist, kannst Du später so:
Delphi-Quellcode:
if MeinMotorrad.ClassType = TSuzuki then
  // ...

 // oder für Kawasaki:
if MeinMotorrad.ClassType = TKawasaki then
  // ...
MfG
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Objekt erzeugen - aber welche Klasse - und wie zugreifen

  Alt 29. Mai 2006, 18:44
Zitat von MarioM.:
Und meine zweite Frage:
Ich möchte natürlich mehrere dieser Objekte erzeugen. Wie kann ich dann später auf diese Objekte zugreifen? Ich meine, die heissen dann ja alle MeineSuzuki oder MeineKawasaki - geht das überhaupt, oder kann ich da irgendwie zur Laufzeit Variablen anlegen?
Schau dir mal die Klasse TObjectList aus der Unit contnrs an.
Andreas
  Mit Zitat antworten Zitat
MarioM.

Registriert seit: 29. Mai 2006
52 Beiträge
 
#4

Re: Objekt erzeugen - aber welche Klasse - und wie zugreifen

  Alt 29. Mai 2006, 18:49
Hallo,

das sieht ja schonmal gut aus - vielen Dank

Und das funktioniert auch, wenn ich diese Funktion aufrufe, dass ich dann beliebig viele 'MeinMotorrad' mal als Suzuki und mal als Kawasaki habe?

Ich meine, wenn ich dann folgendes habe:

MeinMotorrad (Kawasaki)
MeinMotorrad (Kawasaki)
MeinMotorrad (Suzuki)
MeinMotorrad (Kawasaki)
MeinMotorrad (Suzuki)
MeinMotorrad (Suzuki) <---- wie bekomme ich diese Suzuki?
MeinMotorrad (Kawasaki)
MeinMotorrad (Kawasaki)
MeinMotorrad (Suzuki)
MeinMotorrad (Suzuki)
MeinMotorrad (Kawasaki)

Wie kann ich dann eine von diesen direkt ansprechen?
Ich meine, jedes Objekt hat ein Feld ID, welches eindeutig ist.
Aber wie kann ich nun ein bestimmtes Objekt über seine ID ansprechen?

Per SQL würde ich einfach SELECT * FROM ... WHERE ID=XXX schreiben, was hier aber wohl nicht funktioniert

Edit: OK, ich schaue mir mal TObjectList an - danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz