|
Модераторы: Partizan, gambit |
|
Domestic Cat |
|
||||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Дык вопрос-то был о том, почему так считается. Возьми любой класс, и замени все проперти на соответствующие методы. (Я имею в виду написанный тобой класс, а не FCLьный) Поменяется логика работы класса? С ним станет сложнее работать, придется как-то серьезно редизайнить код ? Отнюдь, все будет абсолютно так же как и было до этого. Оттого что написано a.Size = ... вместо a.setSize(...) - разве мне стало понятнее (или непонятнее)? Вот и интересно, зачем так. Что выиграно? И Size = и в setSize - программист все равно должен для начала почитать доки и разобраться что делает метод/своиство. И в любом случае он будет знать что меняется некая характеристика объекта.
Вообще-то не программисты для языка, а язык для программиста. Если я учу язык, я хочу понять, что к чему и зачем. И вполне имею право иметь свое мнение. -------------------- |
||||
|
|||||
Tomcat |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2003 Где: Гродно, Беларусь Репутация: 2 Всего: 2 |
Черт, жалко.... Уходил на защиту диплома, такие дебаты проворонил...
Ладно, вроде все прочитал... Не буду возвращатся к самым верхним постам. Так что вклиниваюсь в самый конец.
Вспоминая дядюшку Бутча.... На ровне с понятием сообщение есть и понятие операция, причем эти термины употребляются в книге как синонимы. Ну даже если были бы только одни сообщения... То чем тебе не нравится такое сообщение, как "Field = 2", где Field - это свойство?! Нигде же не регламентировано, каким образом должны описываться эти сообщения. Так что, я думаю, что использование свойств не выходит за рамки ООП. Лично я представляю свойство в контексте С# таким образом, свойство - это интерфейс между полями объекта и внешними объектами. Важно отношение один-ко-многим: свойство-поля, а не только строго одно поле. Следуя такому пониманию, у меня никогда не возникает вопроса, когда использовать свойство, а когда метод. Добавленно позже Мда, видимо еще не все прочитал. Фигня вышла. Извиняюсь за "вклиниваюсь в самый конец". Это сообщение отредактировал(а) Tomcat - 23.6.2005, 10:49 |
|||
|
||||
arilou |
|
||||
Великий МунаБудвин Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Скобки придется поставить после каждой...
Только если понятние название метода. Мое мнение, со св-вом такого вопроса не возникает. Априори понятно, что изменяя свойство, изменяешь хар-ку объекта. |
||||
|
|||||
Domestic Cat |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Вот ты привел определение "A property is a member that provides access to a characteristic of an object or a class. "
Смотрим определение слова "characteristic":
ну и так далее, вроде понятно. Теперь берем DataTable класс и его своиства Columns, Rows. Да, таблица состоит из столбцов или рядов. Точно также я состою из 2 рук, двух ног и т д. Но мои руки не являются моей характеристикой. Количество рук - да, но рука является моей составляющей, никак не моим индивидуальным свойством. Руль илисиденье не есть характеристики машины, это ее части. Почему тогда Микрософт, чье определение свойств ты привел, на деле сам себе противоречит? Или его программисты сами не понимают что такое свойство? -------------------- |
|||
|
||||
AntonSaburov |
|
|||
Штурман Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Хотелось все-таки услышать оценку моей идеи по поводу визуальности - свойства удобно использовать в визуальных редакторах. Но что-то никто не обсудил это действительно реальное удобство
Нет никаких соглашений по именованию - все достаточно жестко. Правда опять же все легко работает и в варианте JavaBeans если только соблюдать правила именования. |
|||
|
||||
Domestic Cat |
|
||||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
По-моему, именно этим и руководствовались при решении - сделать метод или своиство. Хотя можно было бы например использовать аттрибуты, скажем
-------------------- |
||||
|
|||||
arilou |
|
||||
Великий МунаБудвин Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот это очень широкое определение, под которое руки и ноги тоже подпадают. С одной стороны, это твои характеристики, которые определяют, являешься ли ты антропоидной сущностью, или нет С другой строны, это составные части тебя как организма. Тоже самое и с Rows и Columns, с одной стороны, они отличают один DataTable от другого. Со второй стороны - являются частями его самого.
Я согласен, с Intellisense всегда видно, свойство это или поле. Т.е. никто не спорит |
||||
|
|||||
Domestic Cat |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Нет, характеристика не может объектом, это некое свойство предмета, но не предмет. Например, если тебя попросят описать твою машиму, ты что, пойдешь, вытащишь двигатель, принесешь и скажешь: вот характеристика моей машины? Характеристики машыны - это ее цвет, марка, тип, мощность двигателя, количество дверей, тип кузова, и т п. Но сами по себе цвет или объем движка не являются самостоятельными сущностями. Когда читаешь table.Columns естественнее полагать, что это количество столбцов, чем сами столбцы. Тогда да, это подпадало бы под определение. А так - нет. Вот и получается, что Микрософт сам не следует своим рекомендациям. -------------------- |
|||
|
||||
arilou |
|
|||
Великий МунаБудвин Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ну как это не может??? Возьми, например, пресловутый dataset, в котором можно хранить связи между таблицами. Связь - это характеристика набора таблиц, но она представлена в форме объекта. Понятия объект и предмет в данном контексте различны. Объект - это экземпляр класса сущностей. Сущность - это любое понятие. |
|||
|
||||
Domestic Cat |
|
||||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Это разные понятия. Цвет - это свойство. Но в АПИ он представлен структурой Color. И вообще даже длина массива - это структура, т.е. по сути, класс, наследующий от ValueObject. Иначе нельзя - ведь надо как-то свойства описывать. Просто когда я смотрю свойство Color некоего объекта, я получаю объект, описывающий это свойство. Речь то о том что Rows - это не характеристика таблицы. Чтоб не запутаться, вот два других примера: 1. текстовое поле имеет свойство Text. Но текст не является свойством текстового поля. К свойствам можно отнести размеры, цвет, шрифт; текст же меняется юзером и следовательно не является свойством текстового поля как такового. 2. компоненты в Windows.Forms имеют проперти Tag. Но он вообще может никакого отношения не иметь к баттону. Там можно хранить что угодно. Но из определения:
Здесь вообще ясно видно что одно противоречит другому. -------------------- |
||||
|
|||||
Дрон |
|
|||
Java-ненавистник :) Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Что-то вы увлеклись
Domestic Cat Ты вторую цитату из контекста вырвал. Там говорится не о свойствах вообще, а о properties в языке C#. -------------------- Да. Именно так. |
|||
|
||||
Domestic Cat |
|
||||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну вообще да, там скорее про то, что это не просто акссессор для поля, но он может и вычислять это поле. ВСе равно, определение звучит так:
Приведены примеры, с которыми я согласен на 100%. Но вот текст в поле, тэг или коллекция столбцов - это не свойства. -------------------- |
||||
|
|||||
Exception |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Domestic Cat, сомневаюсь, что, человека можно в чем-то убедить, если он так противится этому. Свойства удобны. Не более того.
Лично я для себя делю св-ва на: 1. Свойства состояния объекта. Например, IsActive. Они всегда readonly. Да и сама комбинация getIsActive звучит по меньшей мере тупо. 2. Характеристические свойства объекта. Вроде Name у Employee. Являются надстройкой над полями и предотвращают присваивание невалидных значени Добавлено @ 13:13 й. 3. Свойства - внутренности [как их назвать..] Описывают объекты, связанные с данным объектом, являющиеся его частью... Вроде DataRow. Почти всегда индексаторы. Возвращают объекты. В основном readonly. --- Вообще, св-ва позволяют рассмотреть объект, похожий на реальный. К примеру, когда ты смотришь на машину, ты видишь ее цвет. А когда ты смотришь на число, ты не видишь его хэш. Вот и разделение св-ва/методы... |
|||
|
||||
Exception |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
P.S. Моя терминология не претендует на идеальность и полноту - придумывал на ходу..
|
|||
|
||||
Дрон |
|
||||
Java-ненавистник :) Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Теперь я подниму ещё разок эту тему
Существует ещё одно замечательное свойство пропертей. Их можно использовать в DataBindings (не знаю, есть ли аналог этого в Java). Объясняю на примере. Пусть мы хотим сделать на форме CheckBox и рядом с ним текстовое поле. Также мы хотим, чтобы текстовое поле было disabled, когда галочка в checkbox не поставлена. Делается это одной строчкой в конструкторе формы:
Вуаля Соответственно, если мы хотим сделать так, чтобы текст в этом текстовом поле автоматически брался из источника данных, и так же автоматически записывался в него, то мы пишем в конструкторе так:
И больше никакого кода! При этом без пропертей, такой красоты и простоты мы бы не получили. Это сообщение отредактировал(а) Дрон - 25.11.2005, 16:57 -------------------- Да. Именно так. |
||||
|
|||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |