
13.04.2013, 21:25
|
Прохожий
|
|
Регистрация: 29.07.2011
Сообщения: 11
Репутация: 10
|
|
Создание класса
Код:
program Project1;
uses
SysUtils,
Dialogs;
type
TLevel = class
FreqLevel : array of Integer;
constructor Create (CountPoint : Integer);
destructor Destroy ();
end;
constructor TLevel.Create(CountPoint : Integer);
begin
SetLength(FreqLevel, CountPoint);
end;
destructor TLevel.Destroy ();
begin
SetLength(FreqLevel, 0);
end;
type
TData = class
private
CountPass : Integer;
CountPoint : Integer;
procedure RescailSize ();
public
Freq : array of Integer;
Pass : array of TLevel;
procedure AddFreqLevel (index , NumPass, FreqValue, FreqLevelValue: Integer);
procedure AddLevel (index , NumPass, FreqLevelValue: Integer);
constructor Create (CountPoint, CountPass : integer);
destructor Destroy ();
end;
constructor TData.Create (CountPoint, CountPass : integer);
var
i : Integer;
begin
self.CountPass := CountPass;
self.CountPoint := CountPoint;
SetLength(Freq, CountPoint);
SetLength(Pass, CountPass);
for i := 0 to CountPass-1 do
Pass[i] := TLevel.Create(CountPoint);
end;
procedure TData.RescailSize ();
var
i : Integer;
newSize : Integer;
begin
newSize := CountPass * 2;
SetLength(Pass, newSize);
for i:= CountPass to newSize-1 do
Pass[i] := TLevel.Create(CountPoint);
CountPass := newSize;
end;
procedure TData.AddFreqLevel (index , NumPass, FreqValue, FreqLevelValue: Integer);
begin
Freq[index] := FreqValue;
Pass[NumPass].FreqLevel[index] := FreqLevelValue;
end;
procedure TData.AddLevel (index , NumPass, FreqLevelValue: Integer);
begin
if self.CountPass <= NumPass then
RescailSize ();
Pass[NumPass].FreqLevel[index] := FreqLevelValue;
end;
destructor TData.Destroy ();
begin
SetLength(Freq, 0);
SetLength(Pass, 0);
end;
var
Data : TData;
i : Integer;
begin
Data := TData.Create(100,1);
Data.AddFreqLevel(0,0,101,55);
Data.AddFreqLevel(1,0,102,77);
Data.AddFreqLevel(2,0,103,70);
Data.AddLevel(0,1,66);
Data.AddLevel(1,1,79);
Data.AddLevel(2,1,88);
ShowMessage(IntToStr(Data.Freq[2]));
ShowMessage(IntToStr(Data.Pass[1].FreqLevel[2]));
Data.Free;
end.
Вопрос:
1. Правильно реализованы классы?
2. Правильно ли я освобождаю память?
|