Бодрое утро!Завтра намечается экзамен по Объектно-ориентированному программированию.Существует несколько вопросов, неосвещенных ни в нашем чудесном учебном заведении , ни в волшебном FAQ-e... хотелось бы кое -что прояснить, для себя, и для зачетки.
вот список вопросов:
1) чем принципиально отличается конструктор (constructor ) среды паскаль от конструктора в среде делфи.Методы вызова в этих средах( мне на пальцах можно...представление обо всем этом я имею, просто вот конкретно ответить на эти вопросы не могу )
2) Self-параметры в паскале.Когда необхадим.Принцип действия.
3)Чем отличаются виртуальные методы от динамических?
4)Механизмы позднего и раннего связывания.ВОт тут можно поподробнее...
5)Событийное управление.Методы реализации.
Если кто-то обладает данной информацией и способен в доступной форме выразить все это, буду признательна.Может ссылки какие есть пользительные по этому вопросу? а то нам объясняли последний раз что self-параметр это что-то типа шасси в самолете, которое содержит этот самолет...конечно я все понимаю...но
По порядку:
TypeПринцип действия... Хм... В каждый метод объекта кроме фактических параметров, передается невидимый параметр Self, указывающий, какому объекту принадлежит метод... Явно обычно Self не обрабатывается, с этим прекрасно справляется компилятор (один из немногочисленных случаев, когда применение Self оправдано я привел выше)... Но совсем забывать про Self тоже нельзя, ибо:
Rec = Record
A, B: Integer;
End;
Obj = Object
A, B: Integer;
Constructor Init(R: Rec);
End;
Constructor Obj.Init(R: Rec);
Begin
With R Do Begin
self.A := A; { <--- Без self компилятор не разберется, о каком первом A речь }
self.B := B;
End;
End;
а-ха....по первому вопросу я не так сформулировала наверное...Чем отличается конструктор в Object Pascal от конструктора в Делфе? я даже и сама-то не знаю что от нас хотят...детальное изучение работы языков программирования? ...ню-ню..
еще хотелось бы узнать про виртуальную таблицу...VMT вроде
читаю...осваиваю...кто еще что предложит?
TA=object...
TA=class...?
ну млин )))) наверно я все путаю..но ) я помню, что "делфи - это тот же паскаль но под Винду и немножко другой" как мне объяснили тут недавно...так вот в досовском паскаел турбо №7 видимо конструктор немножко другой , чем в делфЕ...так вот нас и попросили узнать, в чем разница ...
а насчет 2 вариантов, так это просто по разному реализуется это в делфи и в паскале, зоветс япо разному. а работает одинаково ведь, так?
Не совсем одинаково.
Поищи по разделу Делфи, была тема, где это обсуждалось...
Разница проявляется при замещении методов.
Про конструкторы в принципе volvo ответил. Турбо - это тот самый "классический".
Немножко добавлю...
В википедии нашла вот что:
Begin
With R Do Begin
self.A := A; { <--- Без self компилятор не разберется, о каком первом A речь }
self.B := B;
End
Если есть Self - то это поле объекта... У записи нет Self ... То есть, здесь полю объекта присваивается значение поля записи, т.е.:
Self {Объект} .A <- R.A;
Self {Объект} .B <- R.B;
Вот эта ссылка мне очень сильно помогла в понимании механизма объектов - http://zeus.sai.msu.ru:7000/programming/bp70_ug/bp70ug_091.shtml#6
Self также можно использовать, когда надо передать объект своему же методу как параметр. В общем когда тебе понадобится его использовать, ты это поймёшь..