Как организовать ввод для многих классов - PullRequest
0 голосов
/ 29 марта 2010

У меня есть один абстрактный класс и много дочерних классов. В дочерних классах участвуют от 2 до 20 участников, которые должны быть заполнены пользователем. Какой лучший способ сделать это с помощью ООП? Сделать форму для каждого дочернего класса? Или скрыть и показать много элементов ввода и меток? Есть ли лучший способ? Я использовал WPF и C #

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Ответ зависит от того, что на самом деле делает ваше приложение. Пользовательский интерфейс должен быть разработан с учетом потребностей пользователя, а не с базовой структурой данных. Пользователь, вероятно, не знает, каковы основные структуры данных, и, вероятно, ему все равно. Пользовательский интерфейс должен быть реализован так, чтобы пользователю было проще его использовать. (Это редко простая задача.)

Не очень хорошая практика тесно связывать пользовательский интерфейс с данными. Есть несколько архитектур, которые вы можете использовать, чтобы гарантировать, что пользовательский интерфейс и данные остаются разделенными: MVC, MVP, MVVM и т. Д.

http://en.wikipedia.org/wiki/Model-View-Controller

http://en.wikipedia.org/wiki/Model_View_Presenter

http://en.wikipedia.org/wiki/Model_View_ViewModel


Более конкретный ответ на ваш вопрос, используя одну из вышеперечисленных архитектур, вам, вероятно, понадобится «форма» (обычно называемая «представление») для каждого класса.

1 голос
/ 29 марта 2010

Все члены, которые являются общими для всех классов, должны быть помещены в абстрактный базовый класс.

Нам нужна дополнительная информация. Члены абсолютно разные / динамичные? Почему должны быть отдельные формы для каждого дочернего класса?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...