![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
В C++ написано, что класс отличается от структуры только модификатором доступа по умолчанию, но дело в другом. Мы можем использовать структуру как класс, хотя многие программисты так не делают. Конечно, это обуславливается наследием Си и совместимостью. Однако при переходе на С++ люди всё равно хранят свои поля в структуре открыто. Для построения классов же применяются различные шаблоны проектирования.
Для примера код:
Те же свойства можно определить иначе, через шаблоны или ещё как, но понимать под этим будем то же самое. Вопрос, как назвать стереотип классов в которых находятся только свойства (как полей структуры, только с проверкой) и в другом случае только методы, то есть простые случаи использования. -------------------- ![]() обычный день на винграде |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
спорно, очень спорно, т.к. бесполезен класс, кторый владеет только методами, а данные этим методам передаются в параметрах, для такого есть более логичная семантика: namespace Добавлено @ 07:11 равнозначная замена:
Добавлено @ 07:18 ну или непосредственно:
это будет точная копия, только оптимальнее, хотя бы с точки зрения производительности: не нужно таскать с каждым вызовом this Это сообщение отредактировал(а) GremlinProg - 2.12.2009, 07:40 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Вначале тоже написал с полем position, но потом убрал. Интересно именно название такого стереотипа, реализация не важна, пусть даже там будут заключены шаблоны функций. Нахождение внутри класса дополнительных данных просто говорит о том, что стереотип называется по другому. Между прочим ему тоже можно дать название, хотя я для начала хотел взять что попроще. Более сложных шаблонов проектирования, таких как Команда, вообще не касаюсь, не про них этот топик. -------------------- ![]() обычный день на винграде |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
да нет такого стереотипа,
смотри сам: http://ru.wikipedia.org/wiki/Класс_(программирование) класс - сущность, задающая поведение объекта, а поля - как раз и формируют объект когда нет полей - объекта - нет, соответственно, и класса над ним, т.е. класса только с методами не существует, это просто пространство имен: namespace -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| unicuum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Поля определяют данные объекта, а класс это шаблон по которому строится объект. Впрочем речь совершенно о другом.
Лично я в С++ считаю классами даже реализацию на них шаблона проектирования интерфейса с чисто абстрактными методами. В общем, классы это типы определяемые пользователем программистом, а уж что он там определил дело десятое. -------------------- ![]() обычный день на винграде |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
абстрактные и полиморфные классы заведомо "непустые", не надо путать, а вот привязываться к конкретной возможности создавать именно пустые классы не стоит (кстати, даже такой класс будет владеть объектом размером в 1 байт) есть Си-парадигма - общее представление, есть Си-стандарт - конкретная реализация этой парадигмы, в какм-то завершенном/незавершенном виде я уже не говорю о реализации этого стандарта - конкретном компиляторе стереотип, или то понятие, которое ты подразумеваешь в теме, относится скорее к парадигме, как и паттерны и пр., и точно не относится к реализации стандарта, т.е. компилятору, т.е. не должны эти вещи зависеть ни от реализации, ни от какой-то модификации стандарта пусть, к примеру через пару лет, возможность создавать такие классы у нас не отберут, либо будут автоматически выводить такой "неоптимальный" код из ООП, т.е. превратят методы в функции, ты по прежнему будешь считать, что работаешь с классом? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
unicuum, скажу тебе как человек, страдающий ООП головного мозга, ты архитектурный астронавт
не в обиду было сказано то о чем ты спрашиваешь, не имеет названия, есть такое понятие как геттер/сеттер - метод возвращающий/изменяющий значение поля, которые используются так-как в языке нет такого понятия как свойство, а есть более общее понятие - метод класса, вот собственно и все; вряд-ли кто-то занимается классификацией подобных вещей. |
|||
|
||||
| unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Именно это я и подразумеваю. Вот представь, что тебе в C++ захочется скомбинировать функции в пространстве имён. А в другой раз сделать их статическими в классе. Если знать для чего это делаешь, то при разных реализациях смысл один и тот же. Но ведь у понятия должно быть хоть какое-то название. Так я и не говорю, что его нет. Вот в C# есть, но при декомпиляции видно, что реализация абсолютно такая же. Свойство это фундаментальный шаблон проектирования программы - Property Container: Посредник между полями и методами класса.
Это и не обижает, тем более, что правда в какой-то мере. Сначала меня образно говоря заставили выучить синтаксис языка. Потом принять правила игры библиотек на этом самом языке. Далее нашпиговали различными шаблонами проектирования. Моя же цель прийти к некому соглашению, по которому я просто смогу мыслить одобренными мною понятиями и при этом как бы сказать, не отбиваться совсем уж от коллектива, то есть общих понятий программирования. Это сообщение отредактировал(а) unicuum - 2.12.2009, 09:44 -------------------- ![]() обычный день на винграде |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Данные бывают разные статические и нестатические дата-члены. Вас так понял интересует последние. Говоря Вашим языком: если есть возможность создать объект, значит у класса есть данные, даже если они реально не описаны в нем. Именно на эти данные будет указывать this. Это сообщение отредактировал(а) mes - 2.12.2009, 10:26 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |