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

> Правила раздела!

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

> Теоретические вопросы по ООП, ответы на конкретные вопросы
сообщение
Сообщение #1


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


Бодрое утро!Завтра намечается экзамен по Объектно-ориентированному программированию.Существует несколько вопросов, неосвещенных ни в нашем чудесном учебном заведении , ни в волшебном FAQ-e... хотелось бы кое -что прояснить, для себя, и для зачетки.
вот список вопросов:
1) чем принципиально отличается конструктор (constructor ) среды паскаль от конструктора в среде делфи.Методы вызова в этих средах( мне на пальцах можно...представление обо всем этом я имею, просто вот конкретно ответить на эти вопросы не могу )
2) Self-параметры в паскале.Когда необхадим.Принцип действия.
3)Чем отличаются виртуальные методы от динамических?
4)Механизмы позднего и раннего связывания.ВОт тут можно поподробнее...
5)Событийное управление.Методы реализации.

Если кто-то обладает данной информацией и способен в доступной форме выразить все это, буду признательна.Может ссылки какие есть пользительные по этому вопросу? а то нам объясняли последний раз что self-параметр это что-то типа шасси в самолете, которое содержит этот самолет...конечно я все понимаю...но blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
сообщение
Сообщение #2


Гость






По порядку:

Цитата(LOVE133 @ 10.01.2007 11:43)
1) чем принципиально отличается конструктор (constructor ) среды паскаль от конструктора в среде делфи.
Имеется в виду КАКОЙ Паскаль? Не Object? Тогда, наверное, различием можно считать то, что в классическом Паскале конструктор не может быть виртуальным, а в Object Pascal - может...
Цитата(LOVE133 @ 10.01.2007 11:43)
2) Self-параметры в паскале. Когда необхадим. Принцип действия.
Необходим для разрешения конфликтов (имен, в частности)... Классический пример:
Type
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;
Принцип действия... Хм... В каждый метод объекта кроме фактических параметров, передается невидимый параметр Self, указывающий, какому объекту принадлежит метод... Явно обычно Self не обрабатывается, с этим прекрасно справляется компилятор (один из немногочисленных случаев, когда применение Self оправдано я привел выше)... Но совсем забывать про Self тоже нельзя, ибо:
Цитата(Глава 9. Объектно-ориентированное программирование)
... параметр Self является частью физического кадра стека при всех вызовах методов. Методы, используемые как внешние на языке Ассемблера, должны учитывать Self при получении доступа к параметрам метода в стеке.

Цитата(LOVE133 @ 10.01.2007 11:43)
3)Чем отличаются виртуальные методы от динамических?
В принципе - ничем, хотя...
Цитата(www.interface.ru)
По смыслу динамические и виртуальные методы идентичны. Различие состоит только в механизме их вызова. Методы, объявленные с директивой virtual, вызываются максимально быстро, но платой за это является большой размер системных таблиц, с помощью которых определяются их адреса. Размер этих таблиц начинает сказываться с увеличением числа классов в иерархии. Методы, объявленные с директивой dynamic вызываются несколько дольше, но при этом таблицы с адресами методов имеют более компактный вид, что способствует экономии памяти. Таким образом, программисту предоставляются два способа оптимизации объектов: по скорости работы (virtual) или по объему памяти (dynamic).


Пока все, о связывании сейчас найду ссылку, было очень хорошо написано...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


а-ха....по первому вопросу я не так сформулировала наверное...Чем отличается конструктор в Object Pascal от конструктора в Делфе? я даже и сама-то не знаю что от нас хотят...детальное изучение работы языков программирования? ...ню-ню..
еще хотелось бы узнать про виртуальную таблицу...VMT вроде

Сообщение отредактировано: LOVE133 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
еще хотелось бы узнать про виртуальную таблицу...VMT вроде

http://zeus.sai.msu.ru:7000/programming/bp...r/lr21.shtml#44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


читаю...осваиваю...кто еще что предложит? cool.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
Чем отличается конструктор в Object Pascal от конструктора в Делфе?

Ты ничего не путаешь? Делфи - это не язык...
Может быть, речь про реализацию конструктора в двух таких случаях:
1.
TA=object...

2.
TA=class...
?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата(мисс_граффити @ 10.01.2007 15:52) *

Ты ничего не путаешь? Делфи - это не язык...


Начиная с версии 7, язык. Если Борланд нам не врет. rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


ну млин )))) наверно я все путаю..но ) я помню, что "делфи - это тот же паскаль но под Винду и немножко другой" как мне объяснили тут недавно...так вот в досовском паскаел турбо №7 видимо конструктор немножко другой , чем в делфЕ...так вот нас и попросили узнать, в чем разница ...
а насчет 2 вариантов, так это просто по разному реализуется это в делфи и в паскале, зоветс япо разному. а работает одинаково ведь, так?

Сообщение отредактировано: LOVE133 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Не совсем одинаково.
Поищи по разделу Делфи, была тема, где это обсуждалось...
Разница проявляется при замещении методов.

Про конструкторы в принципе volvo ответил. Турбо - это тот самый "классический".
Немножко добавлю...
В википедии нашла вот что:
Цитата
В Object Pascal вы используете специальное ключевое слово constructor и можете дать конструктору любое имя. Хотя Borland в Delphi 4 добавила поддержку перегрузки методов, программисты всё ещё дают разным конструкторам разные имена. В Object Pascal у каждого класса по умолчанию есть конструктор Create (наследуемый от TObject), если вы не перегрузите его конструктором с тем же именем и, возможно, другими параметрами. Этот конструктор, как мы увидим позднее, просто наследуется от общего базового класса ;)



--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +



Begin
With R Do Begin
self.A := A; { <--- Без self компилятор не разберется, о каком первом A речь }
self.B := B;
End


а какая буква тут принадлежит записи, а какая объекту, то есть что чему присваивается ?


так ничего и не нашла по раннему и позднему связыванию...как насчет ссылки? smile.gif

Сообщение отредактировано: LOVE133 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Если есть Self - то это поле объекта... У записи нет Self ... То есть, здесь полю объекта присваивается значение поля записи, т.е.:

Self {Объект} .A <- R.A;
Self {Объект} .B <- R.B;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Вот эта ссылка мне очень сильно помогла в понимании механизма объектов - Объектно-ориентированное программирование

Self также можно использовать, когда надо передать объект своему же методу как параметр. В общем когда тебе понадобится его использовать, ты это поймёшь.. smile.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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