Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Component=Object или нет? 
:(
    Опции темы
Radio
  Дата 22.2.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



А чем отличается обьект от компоненты?
PM MAIL   Вверх
Foley
Дата 22.2.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: 2
Всего: 7



Ну если подумать, что Объекто Ориентированное Программирование, это программирование при помощи объектов, то наверно да...(ведь компоненты являються объектами...)
Хотя фиг знает...

PM MAIL ICQ   Вверх
Snowy
Дата 22.2.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Сомпонента это класс.
Компонента, брошенная на форму есть экземпляр класса, наследника TControl.
То есть компонента не является объектом, пока она не создана при помощи конструктора или не брошена на форму. Иначе она есть объект.
PM MAIL   Вверх
Fin
Дата 22.2.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Компонента не обязательно может быть объектом. Если скажем она написано стилем структурного программирования. Конечно стараются сделать компоненту в ООП. Как наиболее доминируюший стиль программирования. VCL самой дельфи построена на ООП. И компоненты в Дельфи являются объектами.
Когда бросается компонента на форму, Оболочка Дельфи автоматически создает код для создания экземпляра данного объекта.


--------------------
Пролетал мимо.
PM MAIL   Вверх
Snowy
Дата 22.2.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Fin @ 22.2.2006, 22:58 Найти цитируемый пост)
Компонента не обязательно может быть объектом.

Обязательно.
Компонента всегда наследник TControl.
Никак по другому она написана быть не может.
PM MAIL   Вверх
Fin
Дата 22.2.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Snowy, Я писал компоненту на чистом WinAPI. Когда разбирался с ней (WinAPI). И писал в стиле структурного программирования. Да и первые компоненты самой винды написаны в структурном стиле.


--------------------
Пролетал мимо.
PM MAIL   Вверх
remax
Дата 23.2.2006, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Наверное проблема в терминологии...

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

2) Методы любого объекта - это процедуры. Которые, безусловно могут быть написаны в стиле структурного программирования. Мало этого, может быть большое количество локальных процедур - не имеющих соостветствия в методах объекта. Кроме того, Delphi поддерживает использование ассемблерного кода, что в общем случае даже не является структурным программированием.

3) Целый ряд компонент Delphi родными для него не являются. Это, например, ActiveX портированные из C++. В Delphi реализована только обвязка для взаимодействия с ним.


Не забираясь дальше в дебри тонкостей программирования на делфи, можно сделать следующие выводы:
1) Любой компонент является объектом (или классом объекта, в терминологии Delphi)
2) ООП не исключает других техник программирования, таких как например структурное программирование

Fin! Использование "чистого" WinAPI само по себе тоже не противоречит принципам ООП. Мало этого, совсем не обязательно использовать Windows вообще, чтобы реализовывать ООП! (Например, Kylix под Linux)
smile

Это сообщение отредактировал(а) remax - 23.2.2006, 03:33


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
Snowy
Дата 23.2.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Fin, у тебя неверное представление о понятии "компонент".
Компонент Delphi это всегда наследник TControl. И никак иначе.
Можешь реализовать его как угодно, но он все рабно должен быть классом, пронаследованным от TControl или любого его потомка.
Например,сама по себе кнопка Windows не является компонентом.
А вот TButton уже компонент.

Цитата(Fin @ 22.2.2006, 23:27 Найти цитируемый пост)
Я писал компоненту на чистом WinAPI. Когда разбирался с ней (WinAPI). И писал в стиле структурного программирования. Да и первые компоненты самой винды написаны в структурном стиле.
Мы говорим о компонентах, а не о элементахуправления User Interface. Это разные понятия.

PM MAIL   Вверх
Romikgy
Дата 23.2.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Snowy @ 23.2.2006, 10:48 Найти цитируемый пост)
Компонент Delphi это всегда наследник TControl.

А
Цитата(Snowy @ 23.2.2006, 10:48 Найти цитируемый пост)
TControl

это наследник Tobject smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
z-END
Дата 23.2.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Цитата(Snowy @ 23.2.2006, 11:48 Найти цитируемый пост)
Компонент Delphi это всегда наследник TControl. И никак иначе

Ты точно в словах не путаешься?
Компонент это TComponent а контрол это TControl ?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Snowy
Дата 23.2.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



z-END, конечно путаю. Зачем спрашиваешь smile
Не TControl, а TComponent.
Но суть та же.

PM MAIL   Вверх
Демо
Дата 23.2.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



1. Давайте называть правильно - компонент. И никак иначе.
2. Если имеется ввиду объект - экземпляр класса Object Pascal, то он никакого отношения к компонентам не имеет.

Объект - экземпляр класса. Практически не зависит от среды и языка программирования.
Компонент - элемент среды программирования. Зависит как от языка, так и от среды программирования (в данном случае - Delphi).


--------------------
    
PM MAIL ICQ Skype   Вверх
remax
Дата 23.2.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата(Демо @ 23.2.2006, 10:11)
Объект - экземпляр класса. Практически не зависит от среды и языка программирования.

Это что-то новенькое! Хотел бы я посмотреть, как "практически не зависимый от среды и языка программирования" экземпляр класса, например TButton1 из Delphi будет функционировать в среде VC! smile


Цитата(Демо @ 23.2.2006, 10:11)
Если имеется ввиду объект - экземпляр класса Object Pascal, то он никакого отношения к компонентам не имеет.

Вообще-то, вся иерархия компонент Delphi есть ни что иное, как классы Object Pascal. И, следовательно, здесь очевидная взаимосвязь smile

Но этот как раз тот случай, когдп перемена мест слов играет роль:

Утверждение - Любой компонент является объектом. Верно
Утверждение - Любой объект является компонентом. Не верно

P.S. Что тут еще непонятного?

Это сообщение отредактировал(а) remax - 23.2.2006, 14:25


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
SoWa
Дата 23.2.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Цитата(Демо @ 23.2.2006, 13:11 Найти цитируемый пост)
1. Давайте называть правильно - компонент. И никак иначе.

Нет. Грамотно- компонента.
Конечно, любой компонент наследник класса TComponent.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Fin
Дата 23.2.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



У нас наверно чуть разная точка зрения на понятия.
IMHO Компонент никак не зависит от языка программирования. Это набор процедур, функций, сообшений, данных. Которые работают все вместе в совокупности для решения каких либо целей. Например компонента работы с XML. Компонента может быть выполнена, как и в стиле структурного программирования, так и ввиде объекта (класса), так и в виде совокупности классов (объектов). В этом коренное различие от одного единственного объекта (класса). Компонента для внешнего пользователя выступает черным яшиком. Программист который ее использует, знает только интерфейс компоненты. и все.
Почему в дельфи начинают делать все компоненты с класса TComponent? Я думаю, потому что в этом классе решены некоторые рутинные вопросы. И с него удобно стартовать.
Но это не значит, что в других языках, обязательная стартовая точка должна быть именно с этого класса.

Это сообщение отредактировал(а) Fin - 23.2.2006, 16:40


--------------------
Пролетал мимо.
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.