Текущий архив: 2002.04.22;
Скачать: CL | DM;
Вниз
Что есть компонент и объект? Найти похожие ветки
← →
panov © (2002-03-12 08:28) [0]
← →
MBo © (2002-03-12 08:47) [1]В философском смысле?
← →
Виктор Щербаков © (2002-03-12 08:58) [2]ИМХО, с точки зрения проектировщика, объект означает комбинацию данных и программы, представляющих некоторую сущность реального мира.
← →
panov © (2002-03-12 09:00) [3]Лучше бы определения.
А также какими понятиями оперировать в разговоре о таких вещах, как компонент, класс, объект.
Например, как правильно:
Во время выполнения программы компонент TMemo ...
или
Во время выполнения программы объект типа TMemo ...
или
Во время выполнения программы экземпляр класса TMemo ...
← →
Виктор Щербаков © (2002-03-12 09:06) [4]Я предпочитаю последнее, но иногда сокращаю до просто Memo, когда смысл и так понятен собеседникам. А компонент - это наследник TComponent, поэтому, если собеседник знает дерево наследования VCL, то можно и не уточнять.
Объект на Object pascal, это не то же самое, что экземпляр класса. См. в хэлпе "object types".
← →
MBo © (2002-03-12 09:08) [5]Все же правильно - по определению (ООП в Паскале) экземпляр класса является объектом. Memo тоже объект, а в более узкой сущности - компонент. Преподаешь?
P.S.
Пришли к раввину с просьбой рассудить, кто прав. Выслушал он взаимоисключающие мнения и говорит: И ты прав, и ты тоже прав!
третий воскликнул: Как это, ребе, так же не может быть!
И ты прав... сказал мудрый старикашка.
← →
Иван Шихалев © (2002-03-12 09:08) [6]Если мы рассматриваем его на форме, во взаимодействии с ней и другими компонентами, то компонент. Если нам важно, что это экземпляр определенного класса (например, мы рассматриваем его место в иерархии классов), то экземпляр класса.
А если объект типа, то типа оп-па :)
← →
MBo © (2002-03-12 09:15) [7]>Объект на Object pascal, это не то же самое, что экземпляр класса
Это так, но в житейско-программистском значении это обычно не учитывается из-за сравнительно небольшой теперь важности старого (TPascal) понимания термина. Это и оставлено (QT=Object(...)) для совместимости
← →
paul_shmakov © (2002-03-12 16:31) [8]слово "компонент" появляется, когда мы говорим о существовании класса в неком окружении (enviroment), контейнере, среде.
именно этим и отличается компонент от класса или экземпляра класса (объекта). естественно, компонент - это обычный класс, но на который наложены некоторые ограничения. например, определенная иерархия наследования. т.е. понятие "компонент" - логическое.
delphi предоставляет компонентную среду, в которой классы, наследуемые от класса TComponent, встраиваются в определенную design-time среду, окружение.
компонентную модель следует считать более высокой абстракцией, следующим витком развития ооп. программисту гораздо удобнее писать компонент, который выполняет только свою бизнес-функцию, а не класс, который должен заботится и обо всем остальном.
обо всем остальном должен заботится контейнер, в котором и выполняется компонент (пример, enterprise java beans).
← →
Владислав © (2002-03-12 16:59) [9]В применении к Delphi:
Компонент - это наследник (не обязательно прямой) TComponent.
Объект - это наследник (также не обязательно прямой) TObject.
Множество TObject включает в себя множество TComponent.
← →
vuk © (2002-03-12 17:22) [10]to Владислав:
Не соглашусь с Вами по поводу объектов.
В ОО-терминологии объект и экземпляр класса - синонимы. При этом всегда понятно - о чем идет речь. Если говорится "экземпляр" или "объект", то имеется ввиду существующий экземпляр какого-то класса. Тогда как класс описывает поведение объектов(экземпляров) этого класса. Не знаю кто как, я предпочитаю придерживаться общепринятой терминологии - она более четкая.
← →
Владислав © (2002-03-12 18:15) [11]> vuk © (12.03.02 17:22)
Я не хочу с Вами спорить, но здесь как раз та ситуация, когда непонятно о чем речь :). Об этом нужно узнать у вопрошающего :).
Если смешать терминологии ООП и VCL и все же оставить все понятным, то лучше вообще разделить термины "объект", "экземпляр класса", "класс" ну и "компонент" в придачу :).
← →
Delirium © (2002-03-12 18:19) [12]Предлагаю такое мнение
← →
evgeg © (2002-03-12 18:20) [13]Компонент -- это либо объект, который можно положить на форму или DataModule в design-time, либо форма, либо DataModule.
← →
panov © (2002-03-12 18:21) [14]>Владислав © (12.03.02 18:15)
Уточняю. Например в форуме появляется вопрос такого типа:
Как мне в компонент TMemo скопировать текст из ClipBoard?
Как правильно? Я подозреваю, что объект TMemo.
Как создать компонент TMemo динамически? - подобный вопрос.
← →
Delirium © (2002-03-12 18:24) [15]Класс это : TMyClass=class
Объёкт это : TMyObject=class(TObject)
Компонент это: TMyComponent=class(TComponent)
естественно и все последующие потомки подчиняюся вышеозначеной иерархии, как вам терминалогия?
← →
Иван Шихалев © (2002-03-12 18:26) [16]> Как мне в компонент TMemo скопировать текст из ClipBoard?
Тут, возможно, и то и то.
> Как создать компонент TMemo динамически?
Тут однозначно речь идет о компоненте, поскольку вопрос подразумевает взаимодействие его с формой, а именно помещение на нее.
← →
evgeg © (2002-03-12 18:29) [17]> Класс это : TMyClass=class
> Объёкт это : TMyObject=class(TObject)
Оба объявления определяют определяют одно и то же: тип - класс.
← →
Delirium © (2002-03-12 18:34) [18]Не, я имел ввиду что любой TObject и его потомков можно назвать классом, а любой TComponent и его потомков можно назвать как классом, так и объектом и конечно компонентом - я пытаюсь разделить терминалогически объёкты и компоненты.
← →
vuk © (2002-03-12 18:37) [19]>Если смешать терминологии ООП и VCL и все же оставить все
>понятным, то лучше вообще разделить термины "объект",
>"экземпляр класса", "класс" ну и "компонент" в придачу :).
Терминологию лучше использовать ту, которая допускает меньше неоднозначностей.
А вообще говоря, понятие компонент относится скорее к архитектуре приложения, тогда как класс и экземпляр(объект) - понятие ЯП. Компонент не в любой компонентной архитектуре обязательно является классом. К примеру класс COM может быть написан на языке не поддерживающем ООП, на C, например...
to evgeg:
Компонент, который нельзя положить на форму - не компонент? :o)
to panov:
>Я подозреваю, что объект TMemo.
Именно.
>Как создать компонент TMemo динамически? - подобный вопрос.
Правильнее было бы "создать экземпляр TMemo динамически".
← →
Иван Шихалев © (2002-03-12 18:38) [20]> А вообще говоря, понятие компонент относится скорее к
> архитектуре приложения, тогда как класс и экземпляр(объект)
> - понятие ЯП.
Вот это-то я и пытаюсь объяснить, да слова правильного не нашел.
>> Как создать компонент TMemo динамически? - подобный вопрос.
> Правильнее было бы "создать экземпляр TMemo динамически".
А в чем тогда вопрос?
← →
evgeg © (2002-03-12 18:47) [21]> vuk
> Компонент, который нельзя положить на форму - не компонент? :o)
Любой компонент можно положить на форму (если, конечно, он зарегестрирован). Суть TComponent-а в том, что он обеспечивает основу для визуального проектирования в design-time.
← →
vuk © (2002-03-12 18:53) [22]to evgeg:
>Любой компонент можно положить на форму
Ну тогда положите на форму компонент TStringField. :o)
В конце концов, вполне могут быть компоненты, которые не предназначены для работы на формах.
>Суть TComponent-а в том, что он обеспечивает основу для
>визуального проектирования в design-time.
Основу для design-time обеспечивает RTTI и IDE.
← →
yaJohn © (2002-03-12 18:55) [23]2 Иван Шихалев © (12.03.02 18:38)
> А в чем тогда вопрос?
Любопытное доказательство старого тезиса (рекомендованного к прочтению всеми участниками форума) о том, что правильно поставленный вопрос включает в себя 70% ответа.
Цифра - приблизительная. Иногда я подозреваю, что должно быть >100
К сути вопроса: Вопрос о терминологии не будет решен вплоть до создания раздела знаний (науки) постулирующей эти термины. Является ли ООП на сегодняшний день таковой?
← →
vuk © (2002-03-12 18:57) [24]to yaJohn:
Возьмите любую книгу по теории ООП. Того же Буча. Там все есть.
← →
evgeg © (2002-03-12 19:12) [25]>vuk
StringField-ы и лежат на форме, просто их не видно :)
← →
Иван Шихалев © (2002-03-12 19:23) [26]> Возьмите любую книгу по теории ООП. Того же Буча. Там все есть.
Там нет ничего, что можно назвать наукой. Пока это все технологии, методики. Хорошие методики, иногда - хорошо изложенные, но системы, которая объединила бы их в теорию нет. Можно сравнить того же Буча и того же Кнута...
← →
vuk © (2002-03-12 19:23) [27]>просто их не видно
Я в курсе, но положить-то их туда нельзя - только через редаетор полей. :o)
Еще раз повторяю - компоненты могут использоваться и вне форм, мало того, они могут и не предполагать своего помещения на форму, а работать только в определенном окружении, которое к формам/модулям данных никак не относится.
← →
vuk © (2002-03-12 19:26) [28]to Иван Шихалев:
>Там нет ничего, что можно назвать наукой.
Это да, но с терминологией о которой мы здесь беседуем(класс/объект), похоже, уже все устаканивается...
← →
Иван Шихалев © (2002-03-12 19:26) [29]Форма, не форма... Для компонента важно его окружение в конкретном модуле или приложении.
← →
yaJohn © (2002-03-12 19:29) [30]2 vuk
Возьмусь утверждать, что термин "компонент" используется Борланд и Г.Бучем несколько по разному.
Но имхо - это пустое. С практической точки зрения во всяком случае.
С академической... Спорить с апологетами - занятие не благодарное. Борланды правы и Буч прав. И Вук тоже прав. ;))) Как преподавать студентам? В принципе - все равно, те кто понимают о чем речь - поймут и Буча и Вука и Борланд. Остальные - не поймут ничего.
← →
Иван Шихалев © (2002-03-12 19:30) [31]И где же мой стакан? :)
Собственно, я о том, что, какой термин лучше употреблять, зависит от рассматриваемого вопроса. Нижеследующее вижу как подтверждение моего тезиса, только Буч-то тут при чем?
> А вообще говоря, понятие компонент относится
> скорее к архитектуре приложения, тогда как класс
> и экземпляр(объект) - понятие ЯП.
← →
evgeg © (2002-03-12 19:33) [32]> vuk
Какой смысл тогда от компонента, а не от объекта наследовать? Ну, деструкторы для членов компонентов, которые через Create (self) создавались явно вызывать не надо, а еще?
TStringField можно на форму из палитры положить (если его в ней зарегестрировать), толку от этого не будет, ну и что?
← →
vuk © (2002-03-12 19:48) [33]to evgeg:
>Какой смысл тогда от компонента, а не от объекта наследовать?
Хранение структурированных данных в потоках достаточная причина?
to Иван Шихалев:
>Нижеследующее вижу как подтверждение моего тезиса, только Буч-то
>тут при чем?
Собственно Буч ни при чем, просто это первое, что всплыло в голове и что найти проще всего. То, что он написал в какой-то мере отражает сложившуюся ситуацию - та же самая терминология и у других авторов встречается.
← →
Sir Alex © (2002-03-12 20:37) [34]IMHO,
"Компонент" - это любой класс, порожденный от TComponent (прямо или косвенно).
"Компонент" - это класс наделенный дополнительными полномочиями, позволяющие классу отображать себя на "палитре компонентов", иметь и управлять дочерними компонентами и т.д.
Когда говорят об объекте, неважно от кого он порожден, от класса или от компонента (это есть одно и тоже), поэтому правильнее говорить "Как создать экземпляр(или объект) компонента TMemo динамически?" либо "Как создать экземпляр(или объект) класса TMemo динамически?"
← →
Sir Alex © (2002-03-12 20:42) [35]Да и еще попробую ответить на вопрос:
Что есть компонент и объект?
"Компонент" - специализированный класс.
"Объект" - экземпляр любого класса.
(IMHO)
← →
vuk © (2002-03-12 20:44) [36]to Sir Alex:
>позволяющие классу отображать себя на "палитре компонентов",
Нет. Сам компонент ничего подобного не делает. Этим занимаеся IDE.
>иметь и управлять дочерними компонентами и т.д.
А вот это имеется.
← →
JohnnyCrisJoe © (2002-03-12 20:46) [37]
> panov © (12.03.02 18:21)
> >Владислав © (12.03.02 18:15)
> Уточняю. Например в форуме появляется вопрос такого типа:
> Как мне в компонент TMemo скопировать текст из ClipBoard?
>
> Как правильно? Я подозреваю, что объект TMemo.
>
> Как создать компонент TMemo динамически? - подобный вопрос.
После прочтения этого возникла мысль:
класс - некий носитель определённых свойств и методов, но не заточенный под конкретные задачи.
компонент - класс, реализующий какую-либо конкретную функциональность на основе класса. TButton - компонент
но когда речь идёт о куске кода:
MyButton := TButton.Create
, то здесь MyButton - уже объект.
← →
vasco © (2002-03-12 20:50) [38]Полностью согласен с yaJohn. Если два человека понимают друг друга, то какая разница, какие термины они используют. А пытаться всех привести к одному знаменателю - дело безнадежное и чрезвычайно напоминает мне мои курсантские годы:
Из чего складывается оценка курсанта?
Балл - за подход,
балл - за отход,
балл - за знания
и два - за старание.
Если человеку в обиходе проще изъясняться определенными терминами, так пусть его...
Мы же не говорим "проявление фотопленки", "печатание фотоснимков", хотя, как говорят филологи, это как раз и есть правильные варианты. Можно еще, кстати, разобраться, как правильнее "компонент" или "компонента"...
← →
Sir Alex © (2002-03-14 18:25) [39]2 Vuk
Написал немного не то. Компонент имеет необходимые методы и свойства, для того, что-бы IDE смогла отобразить его на палитре.
← →
vuk © (2002-03-14 19:13) [40]to Sir Alex:
>Компонент имеет необходимые методы и свойства, для того, что-бы
>IDE смогла отобразить его на палитре.
И какие же методы/свойства имеют отношение к отображению на палитре?
Страницы: 1 2 вся ветка
Текущий архив: 2002.04.22;
Скачать: CL | DM;
Память: 0.58 MB
Время: 0.018 c