Autor Beitrag
Died12
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 18.08.08 14:49 
Hallo Liebe Delphi Community,

Ich besuche die 13. Klasse eines Gymnasiums und bin wirklich nicht grade ein Ass in Informatik. Wir haben uns in der Vergangenheit mit der Klasse TList in Form einer Vokabelliste auseinandergesetzt. Nun sollen wir bis Freitag folgende Aufgabe lösen die auch noch benotet wird und ich bitte euch um Hilfe:

Die Klasse TList stellt eine Verwaltungsstruktur für Listenobjekte zur Verfügung. Die Objekte sind zwar logisch verkettet, tatsächlich jedoch sind sie in die Liste "eingehängt". Als Alternative bietet es sich an, die Objekte direkt zu verketten, indem jedes Listenobjekt einen Verweis auf seinen Vorgänger erhält.

1)Formulieren Sie eine solche Alternative unter Benutzung von Hat-,Ist- und Kennt Beziehung.

2) Erstellen Sie ein zugehöriges Klassendiagramm.

3) Implementieren Sie diese Alternative.

Keine Idee wie ich das realisieren kann. Bitte erklärt es mir.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1260

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 19.08.08 20:59 
Moin und :welcome: im Forum!

user profile iconDied12 hat folgendes geschrieben:
Ich besuche die 13. Klasse eines Gymnasiums und bin wirklich nicht grade ein Ass in Informatik.
[...]
Keine Idee wie ich das realisieren kann.
Vielleicht das "falsche" Fach gewählt? :nixweiss: Manchmal hilft´s auch einfach, wenn man zuhört, was der Lehrer im Unterricht so erzählt... :zwinker: sorry, aber für Null-Plan-Fragen muss man auch einen Spruch kassieren können *g*

user profile iconDied12 hat folgendes geschrieben:
Nun sollen wir bis Freitag folgende Aufgabe lösen die auch noch benotet wird und ich bitte euch um Hilfe:
Vorab: du kannst sicher nicht erwarten, dass wir für dich deine Hausaufgaben machen. :| Wenn sie auch noch benotet werden, wäre das sogar ein Betrugsversuch, nur mal zum drüber nachdenken. :idea:

user profile iconDied12 hat folgendes geschrieben:
Als Alternative bietet es sich an, die Objekte direkt zu verketten, indem jedes Listenobjekt einen Verweis auf seinen Vorgänger erhält.
[...]
Bitte erklärt es mir.
Es geht hier um eine sogenannte verkettete Liste. Das könnte man in Delphi etwa so abbilden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TMyObject = class(TObject)
  private
    FText: String// Nutzdaten
    FNext: TMyObject; // Zeiger auf den Nachfolger
  public
    property Text: String read FText write FText; // Zugriff auf Nutzdaten
    property Next: TMyObject read FNext write FNext; // Zugriff auf den Nachfolger
  end;
Das Beispiel oben ist nur zur Veranschaulichung gedacht (es wird sich so nicht verwenden lassen, ich habe absichtlich einen wichtigen Teil weggelassen, den der Compiler braucht, damit er das "versteht"; aber ein bischen was sollst du schließlich auch noch machen ;)).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Inicus63
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 20.08.08 11:57 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
.
.
.

type
  TListe = class (TObject)
    private
      hListe: TList;
      AktPos: Integer;
    public
      constructor Create;  virtual;
      destructor  Destroy; override;
      property AktElement: TListe read FNext write FNext
      procedure Append (Elem: TObject); virtual;
      procedure Insert (Elem: TObject); virtual;
      procedure Delete;                 virtual;
      function  GetElement: TObject;    virtual;
      procedure First; virtual;
      procedure Last; virtual;
      procedure Previous; virtual;
      procedure Next; virtual;
      function IsEmpty: Boolean; virtual;
      function IsFirst: Boolean; virtual;
      function IsLast:  Boolean; virtual;
    end;

implementation

constructor TListe.Create;
begin
  inherited Create;
  hListe := TList.Create;
  AktPos := -1;
end;

destructor TListe.Destroy;
begin
  hListe.Destroy;
  inherited Destroy
end;

procedure TListe.Append (Elem: TObject);
begin
  hListe.Add (Elem);
  AktPos := hListe.Count-1;
end;

procedure TListe.Insert (Elem: TObject);
begin
  if not Self.IsEmpty
    then begin
      hListe.Insert (AktPos, Elem);
      AktPos := hListe.IndexOf (Elem)
    end
    else Self.Append (Elem)
end;

procedure TListe.Delete;
begin
  if not IsEmpty
    then begin
      hListe.Delete (AktPos);
      if AktPos >= hListe.Count
        then AktPos := hListe.Count-1
     end;
end;

function TListe.GetElement: TObject;
begin
  if not IsEmpty then
    GetElement := hListe.Items[AktPos]
end;

procedure TListe.First;
begin
  If AktPos >= 0
    then AktPos := 0
end;

procedure TListe.Last;
begin
  if AktPos >= 0
    then AktPos := hListe.Count-1;
end;

procedure TListe.Previous;
begin
  if AktPos >= 1
    then AktPos := AktPos-1;
end;

procedure TListe.Next;
begin
 if AktPos <= hListe.Count-2
   then AktPos := AktPos+1;
end;

function TListe.IsEmpty: Boolean;
begin
  IsEmpty := (AktPos <= -1)
end;

function TListe.IsFirst: Boolean;
begin
  IsFirst := (AktPos = 0)
end;

function TListe.IsLast: Boolean;
begin
  IsLast := (AktPos = hListe.Count-1)
end;

end.


So müsste der gesamte Code aussehen, nur wie implementiere ich da jetzt die verkettete Liste ein?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 20.08.08 12:05 
Wenn du eine verkettete Liste haben willst, dann musst du vom Delphi-Typ TList weg. Denn das heißt zwar Liste, ist aber ein Array.

user profile iconNarses hat da die ersten Ansätze geliefert. In eine Liste kommen Objekte rein, die jeweils den Vorgänger und Nachfolger in der Liste speichern. Die Liste muss dann diese "Zeiger" auf Vorgänger und Nachfolger ändern, wenn Daten/Objekte angehängt, eingefügt oder gelöscht werden. Die Methoden sind dann in etwa die, die du da auch schon hast. Aber das mit TList ist Murks.

_________________
We are, we were and will not be.
Died12 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 24.08.08 22:35 
Titel: Thema verkettete Liste
Hallo allerseits!!

Ersteinmal danke für die kompetente Hilfe. Ich wollte jedoch nur einaml anmerken das ich keinen gebeten habe meine Hausaufgaben zumachen. Ich habe mir ienfach schnelle Hilfe erhofft weil unser Kurs nicht grade der Beste ist und wir auch nciht so recht mit unserer Lehrerin klar kommen. Deswegen jedoch direkt wegen eines Betrugsverscuhes angeklagt zu werden habe ich nicht gedacht :shock: :shock: !!

Naja wie dem auch sei vielen Dank nochmal und wenn ich noch einmal Probleme haben sollte wende ich mich vertrauensvoll an das Forum.

mfG Andre