Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по ООП, Класс с набором свойств 
:(
    Опции темы
Unforgiven
Дата 27.2.2013, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 27.1.2005

Репутация: нет
Всего: нет



Добрый вечер,

На данный момент не силен в ООП, и возникает вопрос в логике создания базовых классов в .NET конкретной программы.

Есть классы окон, отображающие информацию в DataGrid. Структура похожа, классы плодятся. Логично что надо выделить в базовый класс.
Они взаимодействуют с классами модификации БД. Там все просто. 3 метода:
Insert(DbRecord record)
Update(DbRecord record)
Delete(DbRecord record)

DbRecord в данном случае - класс для хранятся названия столбцов и значений.
Логично, что окна, наследуемые от базового класса и классы модификации БД, будут принимать на вход DbRecord 
(а точнее классы - наследники DbRecord).

Как сделать логично DbRecord?
В этом и суть вопроса. Пока есть только мысль в двух форматах:

Код

class DbRecord
{
    public DbRecord() {}    
    
    public    string    GetValue(string key) {}
    public    void    SetValue(string key, string value) {}
    
    private Dictionary<string, string> dic;
    
    private void    SetKeys() {}
}


или же что-то наподобие этого

Код

class DbRecord
{
    public DbRecord() {}    
    
    public    string    GetValue(string key) {}
    public    void    SetValue(string key, string value) {}
    
    public    string    Names    { get; set; }
    public    string    Values    { get; set; }
    
    private List<string> names;
    private List<string> values
    
    private void    SetKeys() {}
}


Что не нравится? Чтобы организовывать взаимодействие между классами, 
особенно если название колонки поменялось или что-то еще, тяжело становится уследить за ошибками

Хотелось бы услышать ваше мнение.

Спасибо.

PM MAIL   Вверх
AntonX
Дата 3.3.2013, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.2.2006
Где: РФ

Репутация: нет
Всего: -1



посмотри в сторону паттернов проектирования
вот хорошая ссылка http://citforum.ru/SE/project/pattern/ для старта.
Тебе нужен паттерн ActiveRecord/Repository + DataManager + MVC/MVVM/e.t.c

По вопросу делегирования полномочий посмотри в сторону использования композиции вместо наследования. Композиция в твоем случае даст лучший результат при менее запутанной архитектуре.

Перед началом еще почитай про "уровневую(слоистую) архитектуру" ПО
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.