|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.09.2013, 00:53 | #21 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
04.09.2013, 01:05 | #22 | |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Цитата:
Если поведение объекта - реакция на изменение состояния его свойства...то, если мы не скроем свойства, то будет нарушена инкапсуляция и это будет уже не объект, а обыкновенный экземпляр фактически структуры (если уж область видимости - весь остальной код). Таким образом, нарушив инкапсуляцию: - клиент может рассматривать абстракцию не так, как того ожидает разработчик. Т.е клиент использует абстракцию не по назначению. - не локализируются данные, тем самым труднее найти ошибку и легче ее допустить - стирается грань между реализацией поведения объекта и его контрактными обязательствами. Зачем клиенту контракт, если данные итак на виду... их можно взять, изменить и без контракта. Инкапсуляция это пресекает. При инкапсуляции мы бы изолировали данные и контрактные обязательства объекта, а в случае адаптации программы под новые требования просто изменили бы способ реализации поведения (т.е данные), не затрагивая интерфейса. Оставляем контракт тем же, а способ реализации меняем. Последний раз редактировалось Igor95; 04.09.2013 в 01:30. |
|
04.09.2013, 01:33 | #23 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Код:
Код:
Последний раз редактировалось _Bers; 04.09.2013 в 01:41. |
|
04.09.2013, 01:46 | #24 | |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Цитата:
Т.е задокументировать eMAXIMUM и mSafe придется, но тогда, при нарушении условия описанных в документации никакой ошибки не произойдет, т.к проверится инвариант. Последний раз редактировалось Igor95; 04.09.2013 в 01:54. |
|
04.09.2013, 02:13 | #25 | |||
Пользователь
Регистрация: 31.08.2013
Сообщений: 93
|
Цитата:
Человек пишет свой класс chelovek, который в дальнейшем будет использовать в своей программе. Так он уже пишет новую конструкцию, а Вы говорите что "это плохо". А потом читая его код Вы будете говорить что класс chelovek сбивает Вас с толку? Отвратительно? Во первых я не советую, а обмениваюсь опытом (если конечно Вы находите разницу) Цитата:
Ну так подотрите их на правах модератора, что бы никто не увидел случайно эти макросы, а то не дай Бог к завтрашнему дню тысячи студенотов используют их в своих дипломных работах. Как то протеворечивы местами некоторые умозаключения. У каждого свой стиль, свои наработки, свой опыт. У каждого свои видения ситуаци. Кто то прав, кто то не прав, а кто именно? Вот например: Цитата:
Для Вас костыли, другие не брезгуют. Вы всех будете призывать к написанию в стиле WinAPI strcpy(), strcat() и.т.д.. и.т.п... что бы с толку не сбивало? Я уж боюсь предположить что будет если я какую нибудь стороннюю библиотеку подключу, в ней ведь свои конструкции будут и своё API... |
|||
04.09.2013, 03:02 | #26 | |||||
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
PS макросы эти нафиг, они в иде не всегда удобны и для грепа тоже. |
|||||
04.09.2013, 04:55 | #27 | |
Пользователь
Регистрация: 31.08.2013
Сообщений: 93
|
Цитата:
min(a, b) max(a, b) MAKEWORD(a, b) MAKELONG(a, b) LOWORD(l) HIWORD(l) LOBYTE(w) HIBYTE(w) ZeroMemory(pb, cb) FillMemory(pb, cb, b) CopyMemory(pbDst, pbSrc, cb) MoveMemory(pbDst, pbSrc, cb) |
|
04.09.2013, 10:00 | #28 | |||
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Цитата:
Цитата:
|
|||
04.09.2013, 12:18 | #29 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Это скорее слэнг, а не официальная терминология..
Именно в плюсовой он и появился. И он не мог не появится, поскольку природа его слишком уж отличается от "свободной функции" (тоже кстати, слэнг). Лаконичный синоним словосочетания member function, использующий __thiscall calling convention Цитата:
Другое распространенное заблуждение - полезность гибкости кода к возможным изменениям. "Сегодня мы напишем сеттер, потому что завтра помимо тупого присвоения, нам возможно понадобится валидация нового значения. МЫ ЭТОГО НЕ ЗНАЕМ. Мы не знаем что будет завтра. Поэтому пишем код, который максимально безболезненно переносит изменения". Скользкий путь рефакторинга, овер-инжениринга. Что касается сомнений пользователя "как это использовать" - если такое есть, то это уже не проблема отдельно взятых скобочек. Это проблема механизма в целом: он отвратительно спроектирован, слишком сложен, им не удобно работать. И очень часто такие переусложненнки получаются у тех товарищей, которые слишком много думали о гибкости. |
|
04.09.2013, 14:23 | #30 | |||||
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обновление поля формы после создания новой записи создания | romanln2012 | Microsoft Office Access | 2 | 09.08.2012 14:12 |
Подскажыте програму для создания gif-анимаций, которые после создания не теряют четкости | pufystyj | Софт | 1 | 24.02.2011 01:50 |
Автоматическое преобразование на основе первого аргумента конструктора в вызов самого конструктора | jennya | Visual C++ | 8 | 03.10.2010 19:03 |
Создание конструктора | Superlotles | Общие вопросы C/C++ | 5 | 23.05.2010 01:38 |
Правила разделов/главные правила | Alex Cones | О форуме и сайтах клуба | 1 | 30.09.2009 17:49 |