Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос по проектированию.


Автор: pablo 30.3.2005, 19:21

Дорогие коллеги вот такая проблема возникла и меня:

Появилась необходимость создания библиотеки потоков ввода вывода, т.е отделить форматированный ввод/вывод С++ от неформатированного подобно тому, как это сделанно в Яве.
Как лучше сформировать библиотеку ? smile

Т.е какую иерархию классов создавать, и какие методы описывать ? smile

Заранее спасибо.

Автор: Олег М 30.3.2005, 19:41
Цитата(pablo @ 30.3.2005, 20:21)
Появилась необходимость создания библиотеки потоков ввода вывода, т.е отделить форматированный ввод/вывод С++ от неформатированного подобно тому, как это сделанно в Яве.
А как сделано в яве, и почему ты решил, что в С++ форматированный ввод/вывод неотделён от неформатированного?

Автор: pablo 31.3.2005, 12:05
А потому что cin/cout выводят форматированно, например целые числа и т.п так и неформатированно байты.
В яве же для таких целей есть отдельные классы.

Автор: Hroft 31.3.2005, 12:12
Ну сделай по две оболочки над cin и cout - одна для форматированного, другая нет...

Автор: pablo 31.3.2005, 12:18
Проблема не в том как ето сделать, а как правильно спроетировать, т.е как правильно организовать библиотеку.
Какие классы создавать как базовые, какие как конкретные и порождённые от базовых, и какие методы в них делать виртуальными.
У меня есть парочка идей, но мне интересно ваше мнение.

Автор: Hroft 31.3.2005, 12:22
А какова в Яве иерархия? Может, как там сделать?
Может, например, в Бусте за тебя это сделано уже, не смотрел?

А лично мое мнение такое - какая еще иерархия, если ты будешь пользовать УЖЕ СОЗДАННЫЕ ОБЪЕКТЫ cin и cout? Или не будешь?

Автор: np9mi7 31.3.2005, 12:23
выкладывай идеи

Автор: Олег М 31.3.2005, 12:26
Цитата(pablo @ 31.3.2005, 13:18)
Проблема не в том как ето сделать, а как правильно спроетировать, т.е как правильно организовать библиотеку.
Какие классы создавать как базовые, какие как конкретные и порождённые от базовых, и какие методы в них делать виртуальными.
У меня есть парочка идей, но мне интересно ваше мнение.

Задача форматированного вывода - преобразовать входные значения в какй-то формат, например, в строку. Потом результат выводится через обычный неформатированный вывод. Непонятно, зачем нужен класс для форматированного вывода. Класс можно сделать один, с различными методами. Что, собственно говоря и сделано.
А у тебя какие идеи, интересно?

Автор: pablo 31.3.2005, 12:29
Нет не буду. Втом то и трабла, что надо своё сделать. smile
У меня идея вот какая:

Создать свой класс FormatedStream и NotFormatedStream порожденные от базового класс Stream
Создать и переопределить методы write i read и из классов FormatedStream и NotFormatedStream
породить по FileFormatedStream и FileNotFormatedStream, MemoryFormatedStream и MemoryNotFormatedStream.

Автор: np9mi7 31.3.2005, 13:49
да напиши ты кусок кода.... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)