IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задачи на знание ООП, (только для Турбо-Паскаля 7.0)
сообщение
Сообщение #1


Гость






Приветствую всех, зашедших в эту тему...

Такая мысль у меня зрела давно, но вот сегодня (по мотивам одного из топиков в разделе Дельфи) я все-таки решил ее материализовать... Если понравится - продолжу smile.gif

Тема создана для того, чтобы помочь начинающим программировать обратить внимание на особенности ООП, которые при написании программы и (казалось бы) "неправильной" ее работе могут вызвать недоумение.

Говорю сразу, сложных задач здесь выкладывать не буду, будут простые задачки с подвохом ( или без, это уже на мое усмотрение smile.gif ), поэтому огромная просьба: НЕ запускайте компилятор... Внимательно посмотрите на код, и попробуйте определить, что будет выведено на экран при его выполнении... Объяснения, почему Вам кажется, что будет именно так, только присветствуются. Но скрывайте посты тегом [SPОILER], чтобы своим ответом не сбивать остальных smile.gif

Значит, задача №1:

type
TA = object
constructor init;

procedure print; virtual;
end;

TB = object(TA)
constructor init;

procedure print; virtual;
end;

constructor TA.init;
begin
writeln('TA.init');
end;
procedure TA.print;
begin
writeln('TA type object');
end;

constructor TB.init;
begin
inherited Init;
writeln('TB.init');
end;
procedure TB.print;
begin
writeln('TB type object');
end;

procedure print(X: TA);
begin
X.print;
end;
procedure print_const(const X: TA);
begin
X.print;
end;
procedure print_var(var X: TA);
begin
X.print;
end;

var obj: TB;
begin
obj.init;
print(obj);
print_const(obj);
print_var(obj);
end.
Запускаем, и на экране появляется...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
volvo   Задачи на знание ООП   23.11.2006 14:01
Алена   Потому, что этот вариант некорректен по определени…   11.12.2006 17:14
Bokul   type pT = ^T; T = object end; pTT=^TT; …   13.12.2006 5:11
volvo   :no1: Не пойдет... Имелся в виду другой способ... …   13.12.2006 5:34
Bokul   знаешь ли ты, что при таком вызове X(new(pT, Init…   14.12.2006 4:27
volvo   О том коде, при добавлении которого в программу (и…   14.12.2006 5:05
Bokul   Ха, действительно так :good: Никогда не встреча…   14.12.2006 5:56
volvo   Вот с таким: procedure X(const the_pointer: pT); b…   14.12.2006 6:00
Bokul   А :rolleyes: :rolleyes: :rolleyes: ??????? Я…   14.12.2006 6:02
volvo   :blink: Попробуй обратиться к методу статического…   14.12.2006 6:04
Bokul   Правильно заметил - я запутался с терминами. Те…   15.12.2006 5:22
Bokul   Разобрался, даже память не надо использовать, прос…   15.12.2006 6:24
Bokul   Значит правильно? :) Теперь я хотел бы вернутся …   16.12.2006 0:32
volvo   Ну что ж... Давай вернемся... :) Только вначале я…   16.12.2006 5:45
Bokul   Ясно, все красиво и просто.. :) после того как уж…   16.12.2006 6:07
2 страниц V < 1 2


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.09.2025 14:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name