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

Является ли правильным проектирование классов с методами у которых есть определённый порядок вызова - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В каких случаях нужно создавать динамические переменные, а в каких статические? http://www.cyberforum.ru/cpp-beginners/thread1233388.html
такой же вопрос и по массивам ! Объясните пожалуйста !
C++ Задача моделирования и управление движением Суть в том что, клетка находится изначально в любой клетке(например в верхней) и пользователь должен управлять ей (как я понял пользователь сначала выбирает направление по часовой или против, потом продолжать двигаться по кругу или свернуть). На каком ЯП будет написано не важно. Спасибо что помогли. http://www.cyberforum.ru/cpp-beginners/thread1233292.html
Архитектура больших программ C++
Здравствуйте! Пишу довольно большую и комлексную программу. Вопрос - как следует организовывать её внутреннюю структуру? На текущий момент у меня есть дюжина взаимодействующих между собой синглтонов (dataManager, filesManager, userInterfaceManager, inputManager, yetAnotherLongEnglishWordManager, etc), которые обновляет главный цикл. Однако я слышал много разной критики на паттерн singleton,...
C++ Как создать функцию, если тип возращаемого значения становится ясным в процессе работы функции
//класс одномерный массив template<typename T>class ARRAY1{ public: T*pointer; double size; ARRAY1(){ pointer=0;//пустой массив. size=0; } ARRAY1(double n){
C++ Что выбрать: пользовательский цикл или стандартный алгоритм с предикатом http://www.cyberforum.ru/cpp-beginners/thread1233243.html
Всем привет. Рассмотрим код (C++03, не C++11): #include <algorithm> #include <iostream> #include <iterator> #include <list> #include <map> #include <string>
C++ Ошибка при создании проекта, говорящая о том, что неверно установлен SQL Server При создании проекта высвечивается окно Нажимаю ок, создаю пишу исходный код и ошибки компилятор не подсвечивает вообще SQL server установлен Добавлено через 25 минут Решил проблемму переустановкой SQL server подробнее

Показать сообщение отдельно
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
24.07.2014, 19:37
В общем случае если класс предполагает определенный порядок вызова методов - это архитектурная ошибка.
С другой стороны, если класс представляет собой абстракцию вроде конечной точки для потока данных (файл, сокет, ...) то мне вполне очевидно, что нельзя получить данные если не удалось открыть поток.

Если хочется - можно, конечно, нагродить абстракций. Например, класс File умеет только открывать файл, закрывать его и получать какие-нибудь метаданные. Другой класс - Reader в конструкторе принимает объект типа File и, елси фай доступен для чтения, читатель создается. Иначе - в конструкторе бросается исключение. Нет читателя - невозмжоно вызвать методы типа Read.

Но это не гарантирует, что соединение с потоком не будет прервано, поэтому метод Read все еще может сообщать об ошибках. Поэтому гордить иерархию смысла не вижу.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru