Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ ООП

Автор: Анна 1.04.2006 21:32

Почитала http://forum.pascal.net.ru/index.php?showtopic=2085 по ООП.
Все очень сложно sad.gif blink.gif .

Цитата
Реализовать объект. Создать и вызвать несколько свойств и методов.

Объект лучше графический.

Если раннее сабж решался, то дайте линк.

Автор: klem4 1.04.2006 21:37

Ну так в чем проблема, опиши объект - шар. Его "приватные" свойства например радиус, координаты центра и цвет, ну и 2 "публичых" метода : один рисут шар, другой стирает + конструктор в котором задаются начальные данные

Автор: volvo 1.04.2006 21:53

Анна,
+ поиск, например, по "Constructor", никто еще не отменял...

И что видим? http://forum.pascal.net.ru/index.php?s=&showtopic=3867&view=findpost&p=26411 (как раз работа с объектами)...

Автор: DFooz 3.04.2006 0:43

здесь не графический, зато пример оч простой

http://forum.pascal.net.ru/index.php?showtopic=10005

Автор: Анна 4.04.2006 20:17

Есть мысль переделать программу http://forum.pascal.net.ru/index.php?showtopic=9905

Вот код:

uses Crt;

type

PItem = ^Item;
Item = record
Name : string;
Next : PItem;
end;

var
TempNew,Temp,first : PItem;
i, k, n : integer;
key : char;

procedure ADD(k:integer);

begin
if k<=n+1 then
begin
new(Tempnew);
write('Vvedite Znachenie: ');
readln(Tempnew^.name);
writeln;

if k = 1 then
begin
Tempnew^.Next:=first;
First:=tempnew;
end;

if (k>1)and(k<=n) then
begin
Temp:=first;
for i:=1 to k-2 do Temp:=temp^.next;
Tempnew^.next:=temp^.next;
temp^.next:=tempnew;
end;

if k=n+1 then
begin
Temp:=first;
for i:=1 to n-1 do Temp:=temp^.next;
Temp^.next:=tempnew;
end;
inc(n);
end;
end;

procedure RESULT;
begin
Temp:=first;
for i:=1 to n do
begin
writeln(i,' eLement: ',temp^.name);
Temp:=Temp^.next;
end;
end;

procedure DEL(k1:integer);
begin
if k<=n then
begin

if (k>1)and(k<n) then
begin
Temp:=first;
for i:=1 to k-2 do Temp:=temp^.next;
tempnew:=temp;
Temp:=temp^.next;
tempnew^.next:=temp^.next;
end;
if k=n then
begin
Temp:=first;
for i:=1 to n-1 do Temp:=temp^.next;
end;

dispose(temp);
n:=n-1;
end;
end;

Begin
textattr:=green;
clrscr;
n:=0;
first:=nil;
repeat
writeln;
writeln(' [1] Dobavlenie'); writeln;
writeln (' [2] Udalenie'); writeln;
writeln ('[ESCl Exit'); writeln;

key:=readkey;

case key of
'1':begin
write('Vvedite nomer elementa: ');
readln(k);
ADD(k);
end;
'2':begin
write('Vvedite nomer elementa: ');
readln(k);
DEL(k);
end;

end;
RESULT;
until key=#27;

end.

Автор: volvo 4.04.2006 20:25

Анна
Ты уже НАСТОЛЬКО хорошо владеешь ООП, что в состоянии писать ДСД (Динамические Структуры Данных), используя его? А Поиском ты пользоваться не научилась? Ведь специально ТАМ ЖЕ, в FAQ-е по ООП выложены реализации ВСЕХ ДСД !!!

Смысл ПЕРЕделки объясни мне... Что толку, что ты это переделаешь? Ты что, научишься чему-то новому, если добавишь по 5 символов перед каждой процедурой?

Тем более, что задание там какое-то уж больно надуманное - не работают со списками "по номеру", для этого массивы придуманы... Со списками другой стиль работы...