Здравствуйте.)
Начинаю изучать Ооп, вот появилось задание написать программу "массив динамических стеков", массив и стек должны быть описаны своими классами.
вот мой класс простого массива, в который, я думаю, нужно добавлять указатели стеков(пока только добавление).
Код:
unit MyMass; //заголовок модуля(!)
interface
Uses Dialogs, classes, SysUtils, Unit1;
type
TMas = class //заголовок класса
mas1: array [1..20] of pCell;
i : integer;
private
public
constructor Create; overload;
procedure AddX;
procedure AddFD(X:integer);
procedure DelFD(x:integer);
procedure ShowMas;
end;
implementation
constructor TMas.Create;
begin
i:=0;
end;
procedure TMas.AddX;
begin
if i>19
then ShowMessage('Массив полон')
else i:=i+1;
end;
procedure TMas.AddFD(X:pCell);
begin
mas1[i]:=X; //входит из основной программы
end;
Класс стека(только добавление):
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs;
type
PCell = ^TCell;
TCell = record
Num : Integer; // значение
Next : pCell; // указатель на следующий элемент
end;
TStack = class(TComponent) //класс
private
FDataPtr : PCell; //указатель на верхний элемент стека
public
constructor Create(AOwner : TComponent); overload; //
procedure Push(Val : Integer); //добавление элемента в стек
procedure Info(N:pCell); //отображение стека
end;
implementation
Uses MyMass;
constructor TStack.Create(AOwner : TComponent);
begin
inherited Create(AOwner); // вызываем конструктор предка
FDataPtr:=NIL;
end;
procedure TStack.Push(Val : Integer);
var
P : PCell;
str:string ;
FMas : TMas;
begin
New(P);
P^.Num:=Val;
P^.Next:=FDataPtr;
FDataPtr:=P;
Fmas.AddFd(FdataPtr); //добавляет в массив элемент
end;
Сначала вызывается Create массива, затем стека, потом создается стек и должно происходить добавление указателя в массив (по которому в дальнейшем можно будет определять этот стек)... Но добавления не происходит. Нужно объявлять массив или указатель как свойства?
никак не могу разобраться с методами Set/Get... нужно ли их использовать и если да, то как?
Подскажите, пожалуйста)