Форум программистов, компьютерный форум CyberForum.ru

Пишем свой класс, спецификатор доступа protected - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ При вычитании целочисленного типа неправильно вычисляется http://www.cyberforum.ru/cpp-beginners/thread1496239.html
Доброго времени суток. Вычитаю два массива и записываю в новый массив. m=chisob-chikl; получаетя ,что 8-18=-96. Что не так?
C++ Замена элемента из множества Подскажите с оптимальным решением задачи. Имеется динамический vector элементов для подстановки. std:vector<std::string> letters_rep; letters_rep.push_back("r"); letters_rep.push_back("u"); letters_rep.push_back("z"); letters_rep.push_back("w"); http://www.cyberforum.ru/cpp-beginners/thread1496217.html
C++ Ассоциативный массив своими руками
Подскажите, пожалуйста, как реализовать такую конструкцию: array = 324;
C++ Stl vector как массив
Есть функция принимающая указатель на массив и его длину и копирующая его в другой массив определенный указателем. void SetMass(float *pMass, int plengthMass) { mMass = new float(plengthMass); lengthMass = plengthMass; memcpy(mMass,pMass,sizeof(float)*plengthMass); }
C++ Копирование при полиморфизме http://www.cyberforum.ru/cpp-beginners/thread1496190.html
Всем доброго дня ! Почему при полиморфизме вызывается конструктор копировщик только базового класса (строка 70) ? Получаю ошибку. Мне нужна полноценная копия. Заранее спасибо !!!
C++ Нужно перевести программу с Visual basic на с++ ... подробнее

Показать сообщение отдельно
ct0r
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
10.07.2015, 03:13     Пишем свой класс, спецификатор доступа protected
Цитата Сообщение от hoggy Посмотреть сообщение
суть инкапсуляции:
возможность использовать функционал без необходимости знать детали внутренней реализации.
(нам не нужно знать какие есть данные-члены у суперкласса, что бы дергать его методы)
Забавно, что часто приходится узнавать детали внутренней реализации и при инкапсуляции в коде. Отголоски закона дырявых абстракций.

Цитата Сообщение от hoggy Посмотреть сообщение
суть инварианта:
компонент гарантирует стабильность своей работы (отсутствие крашей, утечек ресурсов и тп),
независимо от корректности вызывающей стороны.
Что такое инвариант - всем понятно. А вот что обозначает словосочетание "суть инварианта" - мне неведомо. Тем более что компонент не обязан гарантировать сохранение своих инвариантов всегда. Соблюдение инвариантов вполне может зависеть от каких-то внешних условий.

Цитата Сообщение от hoggy Посмотреть сообщение
то есть, даже если вызывающая сторона запускает функцию с плохими аргументами,
инвариантный компонент это пофиксит, и обработает ошибку.
и никаких сбоев в его работе не будет.
Далеко не всегда так названный "инвариантный компонент" - это хорошо. Все зависит от ситуации. Иногда очень удобно и полезно забить на инварианты и сделать DbC (Design by Contract), подразумевая, что невыполнение предусловий ведет к неопределенному поведению. Это предотвращает маскировку багов и делает код более быстрым. Иногда наоборот, стоит последовать принципам DP (Defensive Programming) и повтыкать ассерты и рантайм-проверки там, где ожидается неправильное использование функционала. Не стоит думать за всех и во всех ситуациях стараться сохранить инварианты любой ценой.

Цитата Сообщение от hoggy Посмотреть сообщение
но если бы данные-члены были открытыми,
тогда любой желающий мог бы залезть,
и как то их подкрутить.
и такой компонент вам уже ничего гарантировать не сможет.
Все эти формальные слова private, protected, public и налагаемые ими ограничения - фигня. По сути их можно читать как просто документацию от проектировщика класса. Очень часто, чтобы не чесать правое ухо левой пяткой, при модульном тестировании нужные private-члены делаются public-членами с соответствующим комментарием, что, мол, это только для тестовых целей.

Цитата Сообщение от hoggy Посмотреть сообщение
архитектура, которая состоит из компонентов,
которые никому ничего не гарантирует - подвережна многочисленным ошибкам.
плохо расширяется. хрупкая (плохо переносит изменения), и тп.
Ну "никому ничего" - это уже преувеличение. Компоненты всегда будут что-то гарантировать при выполнении определенных предусловий.
 
Текущее время: 13:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru