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

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

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

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


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

 



- Текстовая версия 18.07.2025 14:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"