С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Создание игр в текстовом режиме - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите библиотеку GUI, реализующую графический интерфейс http://www.cyberforum.ru/cpp-beginners/thread1098407.html
Доброй ночи. Подскажите, пожалуйста, лёгкую и простую библиотеку реализующую графический интерфейс. Сам интерфейс примитивен - пара кнопок и диалоговых окон. Это всё, что мне нужно от библиотеки. ОС...
C++ Выведение на экран фигуры, которая изображает множество точек, которые удовлетворяют неравенству Исправьте, пожалуйста, ошибки. Задача. Выведение на экран фигуры, которая изображает множество точек, которые удовлетворяют неравенство: x^2+y^2<=2(abs(x)+abs(y)) #include <math.h> #include... http://www.cyberforum.ru/cpp-beginners/thread1098406.html
C++ Как разрешить ввод только чисел типа int?
Доброго времени суток. Подскажите, пожалуйста, как разрешить ввод только чисел типа int. Преподаватель очень любит заваливать на этом, введя например букву, там где нужно число. Очень важно, чтобы...
Некорректно работает вывод вещественных чисел в массиве C++
#include "stdafx.h" #include <conio.h> #include <stdio.h> void ReadArray(double a)
C++ Вывести информацию в виде таблицы http://www.cyberforum.ru/cpp-beginners/thread1098387.html
помогите, после введения данных , в конце программами должна выводится инф. в виде таблицы #include <stdio.h> #include <iostream> #include <stdlib.h> #include <time.h> #include <conio.h>...
C++ Добавить в конец программы строчку cout << "Your number is", не задев цикл Здравстуйте! Подскажите, пожалуйста, как добавить в конец программы cout << "Your number is" не задев цикл. #include <iostream> #include <cstdio> #include <conio.h> using namespace std; int... подробнее

Показать сообщение отдельно
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
23.02.2014, 08:24
Для такой простой задачи написать такой сложный класс - это, конечно, надо было постараться.
Не будем зарываться в реализацию, а посмотрим на класс с точки зрения пользователя.

По идее, должно быть достаточно посмотреть на интерфейс класса, чтобы стало ясно как его использовать. А что у нас в интерфейсе?
C++
1
2
    virtual void run() = 0;                         // Запуск статической системы меню
    virtual void run(ListMenu*) = 0;                // Запуск динамической системы меню
Два метода для какой-то статической системы и какой-то динамической. О чем это вообще?
Ок, второй метод я еще могу понять - передаем список пунктов, которые следует отобразить. А первый? Откуда он возьмет этот список? Интерфейс не дает ответов на эти вопросы.

А теперь главный фейл - метод run чисто виртуальный. Т.е. я, как пользователь, обязан каждый раз для каждого меню писать свой дочерний класс и каждый раз реализовывать логику выбора пункта и отрисовки меню? Вот уж чего мне точно хочется меньше всего. Скорее всего в большинстве случаев логика будет одна: выбрали пункт - вызвали его обработчик - отрисовали меню.
В данном случае эта логика уже реализована в дочернем классе, и тут возникает вопрос - это пример использования или этот класс является частью библиотеки?

Если это пример использования, то он отлично показывает насколько плох базовый класс - 120+ строк кода, да еще и с не пойми зачем появившейся рекурсией. В моей маленькой голове не укладывается зачем методу run() может потребоваться вызывать себя.

Если же этот класс предоставляется библиотекой, то не ясно на каких правах в нем захардкожены какие-то пункты меню. Мне могут понадобиться совсем другие.

Дальше смотреть смысла нет, ибо даже если я и решусь реализовывать метод run в своем классе меню, то мне придется смотреть в секцию protected и разбираться какой порядок вызова предполагают предоставляемые методы.

Еще класс навязывает свой способ отрисовки. У меня, например, нет заголовочного файла msoftcon.h (я так понимаю, функции для работы с псевдографикой объявлены в нем).

В общем, напишите для начала простое текстовое меню... Тут еще есть какие-то списки менюшек - не надо. Пусть будет один уровень.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.