Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2009, 22:46   #1
albatros
Пользователь
 
Регистрация: 09.05.2008
Сообщений: 39
По умолчанию ООП инкапсуляция

Пишу исследовательскую по ООП
Вопрос по директиве private
Код:
type
world=class(TObject)
numberspeople:integer;
end;
people=class(World)
private
name: string;
end;
student=class(people)
grant: boolean;// степендия
end;
var
 w: world;
 s: student;
 p: people;
 
begin
w:=world.create;
s:=student.create;
p:=people.create;
s.name:='Петя';//компялиция программы с этой строкой невозможна
p.name='Петя';
w.name:='Народы';//компялиция программы с этой строкой невозможна
readln;
end.
По идеи программа не должна компилироваться, а она компилируется.
Т.е. аттрибуты и методы класса определённые в разделе private
не доступны классам-родителям и дочерним классам.
Непечатный жаргон - это тот язык, которым решительно все программисты владеют в совершенстве.

Последний раз редактировалось Stilet; 02.10.2009 в 10:30.
albatros вне форума Ответить с цитированием
Старый 02.02.2009, 23:18   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да что вы говорите? А элементарно в хэлп заглянуть не пробовали?
Посмотрите все же "Visibility of class members". Полезно, знаете ли...
mihali4 вне форума Ответить с цитированием
Старый 03.02.2009, 08:28   #3
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

А она точно компилируется?

у меня сразу ругнулась на
Код:
p.name='Петя';
(отсутствует : )

потом
Код:
w.name:='Народы';//компялиция программы с этой строкой невозможна
Родительский класс не знает о методах детей.

Ну а с этим
Код:
s.name:='Петя';//компялиция программы с этой строкой невозможна
и
Код:
p.name:='Петя';
Все элементарно - в модуле где объявлен класс приватные свойства и методы видны всем, что можно почитать из справки, как правильно сказал mihali4
s.Creator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ооп (игра) vmagdn Общие вопросы Delphi 0 14.12.2008 21:50
Инкапсуляция Lyxor Общие вопросы Delphi 0 29.06.2008 13:06
ООП Римма Общие вопросы Delphi 16 15.04.2008 11:32
ООП Andrey Gort Общие вопросы Delphi 1 22.11.2006 15:01