Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 289 290 [291] 292 293 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#4351
,
|
|
|
|
Да ладно. А height у класса QWidget, Caption у TForm и прочее это так просто, чисто поржать, да?
Цитата korvin @ И как тогда ты напишешь более-менее крупную систему при "хорошем проектировании и использовании инструмента по назначению"?Уже n последних страниц говоришь, что это неправильно, но о том, почему э то неправильно и как надо, почему-то ни слова. это не самообман, а признак плохого проектирования и использования инструмента не по назначению. |
|
Сообщ.
#4352
,
|
|
|
|
Цитата Flex Ferrum @ А если ещё и в исходник взглянуть - так и вообще ахтунг, потому что для интеграции с дизайнером все те же самые свойства описываются и третий раз - посредством макросов А, так вот как Qt с дизайнером взаимодействует. А почему не сделали автоматический описатель? Ну что-то вроде утилиты, которая генерирует эти описания на основе описания класса (ну с несколькими макросами-атрибутами еще)? |
|
Сообщ.
#4353
,
|
|
|
|
Цитата Romkin @ Угу. Но сеттер и геттер - методы, а не поля данных. Или методы тоже ничего не скрывают? Тогда сразу говори, что данные вообще скрыть нельзя, поскольку ко всем данным объекта так или иначе есть доступ ![]() и что, что они методы? и при чем тут методы? ты про свойства говорил Добавлено Цитата OpenGL @ Да ладно. А height у класса QWidget, Caption у TForm и прочее это так просто, чисто поржать, да? не знаю, что за height там у QWidget, наверное поле объекта. а Caption -- свойство. так что там про атрибутику? Добавлено Цитата OpenGL @ И как тогда ты напишешь более-менее крупную систему при "хорошем проектировании и использовании инструмента по назначению"? прямо. с объектами, моделирующими объекты предметной области, а не какой-то набор свойств Добавлено Цитата OpenGL @ Уже n последних страниц говоришь, что это неправильно, но о том, почему это неправильно и как надо, почему-то ни слова. ты видимо плохо читал, интерфейс объекта должен максимально соответствовать моделируемому объекту, а методы(сигнатуры методов) отражать суть того, что они делают. и я показывал как правильно. несколько раз. Добавлено Цитата Romkin @ А, так вот как Qt с дизайнером взаимодействует. А почему не сделали автоматический описатель? Ну что-то вроде утилиты, которая генерирует эти описания на основе описания класса (ну с несколькими макросами-атрибутами еще)? [offtop(хотя наверное все-таки on-, но мы сейчас о другом =) )] потому что C++ недостаточно гибкий язык, поэтому требует различных костылей в виде препроцессора и прочих извращений =) [/offtop] а вообще не понимаю, почему в Qt просто не сделали описание(в смысле текстовое представление) интерфейса в виде например xml. |
|
Сообщ.
#4354
,
|
|
|
|
Цитата korvin @ и что, что они методы? и при чем тут методы? ты про свойства говорил Ты уж сам реши, что как открывается. А то все что следует из твоих постов: доступ к полям объекта должен быть через методы, но они не должны быть геттером и сеттером |
|
Сообщ.
#4355
,
|
|
|
|
Дурная затея - это точно. В BCB у новичков одна из часто встечающихся проблем:
почему не работает ++SomeObject.SomeIntegerProperty; А просто геттер у SomeIntProperty - метод, возвращающий значение. Причём, если геттер - собственно приватный член, то это работает, если ничего не путаю. |
|
Сообщ.
#4356
,
|
|
|
|
korvin, то есть поясню: по-твоему, должны быть методы length и setLength, а вот объединить их в свойство - низзя, это уже жуткое нарушение защиты, ООП, и конвенций ООН.
|
|
Сообщ.
#4357
,
|
|
|
|
Цитата korvin @ не знаю, что за height там у QWidget, наверное поле объекта. а Caption -- свойство. так что там про атрибутику? Атрибутика, свойство, характеристика, да хоть унитазом назови - какая разница? Все это - некая характаристика объекта. Почему бы не объявить ее в виде свойства? Цитата korvin @ прямо. с объектами, моделирующими объекты предметной области, а не какой-то набор свойств Цитата korvin @ Как этому мешают свойства? Или если я заменю их на геттер с сеттером, у меня объекты как-то по-другому начнут моделироваться? интерфейс объекта должен максимально соответствовать моделируемому объекту, а методы(сигнатуры методов) отражать суть того, что они делают. |
|
Сообщ.
#4358
,
|
|
|
|
Цитата Romkin @ по-твоему, должны быть методы length и setLength нет, по моему должны быть методы length и changeLength. или length и scale. или length и например expand и shrink. в зависимости от того, что мы подразумеваем/моделируем. Цитата Romkin @ а вот объединить их в свойство а зачем? если методы уже есть, зачем еще и по верх них какое-то свойство? Добавлено Цитата Romkin @ Ты уж сам реши, что как открывается. А то все что следует из твоих постов: доступ к полям объекта должен быть через методы, но они не должны быть геттером и сеттером ![]() из моих постов следует, что проектирование объекта как набора методов/свойств/чего-то-там-еще для доступа к внутренним полям -- это не проектирование |
|
Сообщ.
#4359
,
|
|
|
|
Цитата korvin @ а зачем? если методы уже есть, зачем еще и по верх них какое-то свойство? То есть просто нужен минимальный набор необходимых инструментов? С этого-то и надо было начинать А нам больше нравится, когда есть не необходимые, но полезные инструменты. |
|
Сообщ.
#4360
,
|
|
|
|
Цитата OpenGL @ Атрибутика, свойство, характеристика, да хоть унитазом назови - какая разница? Все это - некая характаристика объекта. Почему бы не объявить ее в виде свойства? разница большая, ну да ладно. нет у объектов характеристик/свойств/аттрибутов. у них есть внутреннее состояние (и то не обязательно, но почти всегда) поведение, которое соответствует поведению моделируемого объекта (предметной области) и внешний интерфейс (набор сообщений, на которые может ответить объект) и проектировать нужно от интерфейса и добавлять внутренние поля только, если это необходимо для обеспечения необходимого поведения Добавлено Цитата OpenGL @ То есть просто нужен минимальный набор необходимых инструментов? С этого-то и надо было начинать А нам больше нравится, когда есть не необходимые, но полезные инструменты.нет, нужен не минимальный, нужен неизбыточный и непротиворечивый |
|
Сообщ.
#4361
,
|
|
|
|
Цитата korvin @ откуда такое определение? почему эта "некоторая часть состояния объекта" должна быть видна? Считай, из головы. Да ну? Вот у тебя есть метод getCaption. В названии этого метода Caption - это что? Некая фикция, к объекту не имеющая никакого отношения? Вот как только ты сам дашь определение того, что используется в качестве существительных в именах геттеров - ты получишь определение свойства. ![]() Вот я и говорю. Жопа есть, а слова нету. ![]() Цитата korvin @ а вообще не понимаю, почему в Qt просто не сделали описание(в смысле текстовое представление) интерфейса в виде например xml. Вот ты не поверишь, но сделали! ![]() Цитата korvin @ прямо. с объектами, моделирующими объекты предметной области, а не какой-то набор свойств Вот у объекта предметной области, для которого ты делаешь модель, есть нечто под названием "Цвет материала". Что такое это "нечто" с точки зрения клиента? |
|
Сообщ.
#4362
,
|
|
|
|
Цитата Flex Ferrum @ Да ну? Вот у тебя есть метод getCaption. В названии этого метода Caption - это что? Некая фикция, к объекту не имеющая никакого отношения?getCaption нету, есть caption. это сообщение, на которое объект может ответить каким-то образом. свойство-то тут где? где "атрибутика", зачем выдумывать терминологию и впихивать ее внутрь системы? |
|
Сообщ.
#4363
,
|
|
|
|
Цитата korvin @ getCaption нету, есть caption. это сообщение, на которое объект может ответить каким-то образом. свойство-то тут где? где "атрибутика", зачем выдумывать терминологию и впихивать ее внутрь системы? Хорошо. Есть сообщение "caption". Какую семантику несёт это существительное? Что (по мнению проектировщика интерфейса) ожидает получить клиент, отправив объекту это сообщение? |
|
Сообщ.
#4364
,
|
|
|
|
Цитата Flex Ferrum @ Вот ты не поверишь, но сделали! ![]() ну молодцы че, только нужно было делать давно, не пришлось бы кучу геттеров/сеттеров писать Добавлено Цитата Flex Ferrum @ Вот у объекта предметной области, для которого ты делаешь модель, есть нечто под названием "Цвет материала". Что такое это "нечто" с точки зрения клиента? какого клиента? |
|
Сообщ.
#4365
,
|
|
|
|
И (коли мы за чистоту и гигиену интерфейсов), почему сообщение (сиречь метод) не содержит в себе глагола? Какое это тогда поведение, если мы описываем его существительными?
Добавлено Цитата korvin @ какого клиента? Который этот объект будет использовать. Или у нас объекты - это сферические кони в вакууме? И их интерфейсы никому не требуются? |