Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компонент и объект...


Страницы:   1 2

\/iKTOR ©   (2007-08-09 18:32:00) 

Здравствуйте мастера.
Часто эти два понятия идут по соседству и обозначают одно и тоже, в объектно-ориентированном программировании чаще фигурирует объект, применительно к VCL Delphi, как следует из названия, это компоненты, но если их используют, он становятся объектами, вобщем может кто точно определить в чем у них разница.


Kolan   (2007-08-10 13:36:00) [1]

> Вовсе нет. Объект это более широкое понятие.

На нач. этапе такое допущение имхо не вредно.


\/iKTOR   (2007-08-10 12:06:00) [2]

>Спасибо, скачал, посмотрел. Материал для начинающих весьма полезный, хорошо бы было где-то его выложить напостоянно.
И вам спасибо за теплые слова, я только за, тем более я продолжаю дополнять потихоньку книгу сию, раскладываю по полочкам(подразделам, упорядочиваю, бытаюсь связать непонятные пока мне вещи).
Если бы помошников было много, можно было бы сформировать полезное руководство, а главное доступное для понимания и правильно организованное, но инфы так много и она так неупорядоченна, что одному все не объять.

>"Не должны" - это неточность, потому что этого просто не получится. Любой класс, НЕ являющийся потомком TComponent, среда НЕ будет считать компонентом - и, соответственно, работать с ним, как с компонентом тоже НЕ будет. Не удастся ни в палитре его зарегистрировать, ни все остальное.

Спасибо, я внесу вашу поправку, но оригинальный текст не мой. Когда внесу существенные дополнения, выложу еще.


Юрий Зотов   (2007-08-10 11:58:00) [3]

> \/iKTOR   (10.08.07 11:39) [23]

Спасибо, скачал, посмотрел. Материал для начинающих весьма полезный, хорошо бы было где-то его выложить напостоянно.

Но есть и погрешности, например: "разработчики компонентов не должны создавать свои компоненты непосредственно как производные (потомки) от класса TObject".

"Не должны" - это неточность, потому что этого просто не получится. Любой класс, НЕ являющийся потомком TComponent, среда НЕ будет считать компонентом - и, соответственно, работать с ним, как с компонентом тоже НЕ будет. Не удастся ни в палитре его зарегистрировать, ни все остальное.


\/iKTOR   (2007-08-10 11:45:00) [4]

> в руководстве для разработчиков классов визуальной библиотеки
тут я допустил неточность, это не руководство а рекомендации и разъяснения устройства VC библиотеки Делфи ориентированное на разработчиков самих компонентов Делфи, а не прикладных программ не связанных с Делфи.


\/iKTOR   (2007-08-10 11:39:00) [5]

Ссылочку я приводил в другой теме, я преобразовал его в формат CHM но правок в начальный текст не делал
http://www.ssfiles.com/uploads/338de8129e.rar(416 килобайт).

Это первая выдержка -
Но разработчики компонентов не должны создавать свои компоненты непосредственно как производные (потомки) от класса TObject. Библиотека VCL предос­тавляет широкий выбор классов, производных от класса TObject, и разрабатываемые компоненты могут создаваться на их основе. Эти уже существующие классы обеспечивают большинство функциональных возможностей, необходи­мых для вновь создаваемых компонентов. Лишь при создании классов, не являющихся компонентами, имеет смысл делать их потомками класса TObject.

Далее по иерархии идет -
Класс TPersistent происходит непосредственно от класса TObject.
Особенностью класса TPersistent является то, что экземпляры происходящих от него объектов могут читать и записывать свои свойства в поток.
Поскольку все компоненты являются потомками класса TPersistent, то все они обладают этой способностью.
Класс TPersistent определяет не специальные свойства или события, а только некоторые методы, полезные как пользователям, так и разработчикам компонентов.

А за ним уже TComponent


Юрий Зотов   (2007-08-10 11:22:00) [6]

> \/iKTOR   (10.08.07 11:00) [19]

> Ну чтоже, похоже так считает большинство.

Это абсолютно неважно, кто что считает. У термина "компонент" есть четкое и однозначное определение - и оно именно такое. Независимо ни от каких большинств-меньшинств.

> в руководстве для разработчиков классов визуальной библиотеки
> компонентов

Интересно было бы почитать. Ссылочкой не поделитеь?


\/iKTOR   (2007-08-10 11:17:00) [7]

Резюме.
Вот мне тут RTFM, говорят...
Самое интересное то, что книги для начинающих опускают подробности связанные с формированием самой среды разработки.
А книги для профи, опускают подробности формулировок, подразумевая, что раз уж это кто читает, то основы ему вполне знакомы.
Поэтому получить полное представление что и почему, можно перелапатив кучу документов, где вскользь упоминается пересечение первопричин возникновения понятий, и особенности их практического применения.
Афтар поплелся обреченно RTFM....


MsGuns   (2007-08-10 11:01:00) [8]

>Юрий Зотов ©   (10.08.07 10:52) [16]
>Во наговорили....

Вопрос ставился не "Что такое компонент ?", а "Чем обличается компонент от объекта"
Вот и наговорили ;)


\/iKTOR   (2007-08-10 11:00:00) [9]

>Компонент - это объект класса TComponent или его потомка. Все.
Ну чтоже, похоже так считает большинство.
Я так подозреваю, что не зря говорится в руководстве для разработчиков классов визуальной библиотеки компонентов, что не приветствуется создание новых компонентов, потомков класса TObject без крайней необходимости, нужно делать их потомками класса TComponent.


DevilDevil   (2007-08-10 10:55:00) [10]

ыыы... мнения разошлись :)


\/iKTOR   (2007-08-10 10:52:00) [11]

Спасибо, вобщем тоже, что я писал в первом посте, только подробнее.


Юрий Зотов   (2007-08-10 10:52:00) [12]

Во наговорили....

> \/iKTOR   (10.08.07 10:33) [10]
> Можно ли вообще это как то четко сформулировать?

Компонент - это объект класса TComponent или его потомка. Все.

Прочее есть следствия.


DevilDevil   (2007-08-10 10:48:00) [13]

есть компонент TLabel.
Ты можешь создать экземпляр такого компонента (класса) в самой среде.
Этот экземпляр может называться Label1. А может и MySuperPuperLabel - как назовёшь. У каждого такого экземпляра можно менять свойства в самой среде разработки.

А есть типы, классы и свойства, которые нельзя изменить в среде разработки.


Сергей М.   (2007-08-10 10:48:00) [14]


> что тогда компонент, чем он в это смысле отличается от объекта?


Компонент, с т.з. иерархии VCL-классов, есть класс TComponent или любой порожденный на его основе класс.

Компонент, с т.з Делфи-объектов, есть любой экземпляр класса, порожденного от класса TComponent

Так или иначе, но с любой из этих т.з. понятие "Компонент" неразрывно связано с классом TComponent.


MsGuns   (2007-08-10 10:48:00) [15]

Поправочка:
К простым объектам можно отнести переменные, указатели, записи, файлы и т.д., содержащие только ДАННЫЕ


MsGuns   (2007-08-10 10:45:00) [16]

Компонент - это такая зверюка, которая обладает свойствами дельфишного компонента, в частности его можно "кидать" на форму ;)
При этом на форме окажется не сам компонент, а его ЭКЗЕМПЛЯР (экземпляр класса) - вот тогда он станет "объектом", т.е. с ним можно работать.

Объект же в общем случае может быть не привязан ни к какому компоненту (например переменная) и его нельзя "положить" на форму и, следовательно, увидеть

Можно сказать так:
Компонент - это некий код, реализующий определенный функционал
Объект - это область памяти, содержащия как сам код, так и сопутствующие ему байты с информацией, статической (не изменяемой при выполнении) или динамической (именяющейся при выполнении).
К простым объектам можно отнести переменные, указатели, записи, файлы и т.д., содержащие только код
К "сложным" объектам относятся те же ЭКЗЕМПЛЯРЫ классов (к которым в частности относятся все потомки TComponent), а также созданные самим программистом специальные блоки кода

Вообще, отностительно физической сущности процессора все, что участвует в работе приложения, можно отнести к объектом - ведь для него любая иформация в регистре, стеке или памяти служит ОБЪЕКТОМ. Для ОС объектами служат сообщения, порты, файлы и т.д.


DevilDevil   (2007-08-10 10:43:00) [17]

Компонент - это специальный Delphi класс, свойства и события экземпляров которого могут быть изменены в IDE.


\/iKTOR   (2007-08-10 10:33:00) [18]

Можно ли вообще это как то четко сформулировать?


\/iKTOR   (2007-08-10 10:31:00) [19]

Спасибо.
Ну с эти как раз можно разобраться (хотя поначалу и сложно).
А вот что тогда компонент, чем он в это смысле отличается от объекта?


DevilDevil   (2007-08-10 10:29:00) [20]

все классы и типы в Delphi принято называть с буквы "T".
компоненты - это необычные классы.
классы - это необычные типы.

:)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо