Ein
TObjectList Objekt wäre hier wesentlich besser geeignet als ein array of TStudents.
Dafür gibt es mehrere Gründe:
1.) wenn das TObjectList Objekt freigeben wird, werden auch alle enthaltenen Objekte freigegeben
man spart also arbeit und schützt sich vor Speicherlecks
2.) bei TObjectList kann man ganz einfach und stressfrei weitere Objekte einfügen oder löschen
bei einem dynamischen Array ist das jedesmal mit grösserem Aufwand verbunden
Delphi-Quellcode:
// mit TObjectList
mylist.Add(TStudent.Create); // eine Zeile, klarer Code
// mit dynamischem array
SetLength(dynarray, Length(dynarray)+1);
dynarray[Length(dynarray)] := TStudent.Create; // immer aufpassen, damit man mit dem Index nicht um eins daneben liegt
Das Löschen eines Objekts in einem dyn. Array ist noch viel komplizierter; bei TObjectList ist es nur ein Einzeiler.
3.) man kann (und sollte auch) eine Klasse von TObjectList ableiten und dort Methoden implementieren, die sich auf alle Objekte in der Liste beziehen:
Delphi-Quellcode:
TStudentList=Class(TObjectList)
public
function GetBesteNote:double;
function GetDurchschnittsNote:double;
function BerechneFrauenQuote:double; // zwischen 0.0 bis 1.0
...
end;
Vor einem dynamischen Array kann man nicht ableiten.
Man wird also auch keine objektorientierte Software erhalten.
OOP hat ja seine Überlegenheit gegenüber "normaler" strukturierter Programmierung schon oft genug bewiesen.