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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> представление сущностей классами, минимизация занимаемой памяти 
:(
    Опции темы
nmn
Дата 3.2.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



здравствуйте

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

набор одинаковых свойств изменяется  в процессе работы, так что сделать наследника класса и задать эти свойства статическими для класса не подходит

как это можно реализовать?
PM Skype   Вверх
ivashkanet
Дата 3.2.2010, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Нифига непонятно. Можно на примере?



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


Опытный
**


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

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



Цитата(ivashkanet @  3.2.2010,  12:29 Найти цитируемый пост)
Нифига непонятно. Можно на примере?

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

придумал, нужно сделать нормализацию как в базах данных

может еще есть варианты?

PM Skype   Вверх
KelTron
Дата 3.2.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(nmn @  3.2.2010,  11:57 Найти цитируемый пост)
как можно сделать так чтобы набор одинаковых свойств не повторялся в каждом экземпляре класса?

Статические данные класса не хранятся в каждом объекте, они существуют в единственном экземпляре, но обращение к ним возможно из любого объекта и вообще без создания какого-либо объекта.



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
nmn
Дата 3.2.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(KelTron @ 3.2.2010,  14:39)
Цитата(nmn @  3.2.2010,  11:57 Найти цитируемый пост)
как можно сделать так чтобы набор одинаковых свойств не повторялся в каждом экземпляре класса?

Статические данные класса не хранятся в каждом объекте, они существуют в единственном экземпляре, но обращение к ним возможно из любого объекта и вообще без создания какого-либо объекта.

проблема в том что у меня может быть только определенное количество таких классов и я не могу создавать их во время выполнения программы
PM Skype   Вверх
ivashkanet
Дата 3.2.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



nmn, елси честно понятнее не стало. Включаю телепатию.
Цитата(nmn @  3.2.2010,  13:36 Найти цитируемый пост)
придумал, нужно сделать нормализацию как в базах данных

В ООП это называется Агрегация.

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


Но прежде чем применять этот подход я предлагаю остановиться и подумать.
Агрегацию стоит применять только в том случае, если группа свойств образует группу логически (Адрес, Размер, ...). Объединять Адрес и Фамилию в один агрегат не стоит.
Приспособленец довольно сложен в плане реализации и значительно ухудшает понятность кода. В простых случаях лучше использовать подход реализованных в классе Color через статичесткие свойства: Color.Red, Color.Blue, ...


СУВ, ivashkanet

Добавлено через 1 минуту и 4 секунды
Цитата(nmn @  3.2.2010,  14:51 Найти цитируемый пост)
проблема в том что у меня может быть только определенное количество таких классов и я не могу создавать их во время выполнения программы 

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

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


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

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


 




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


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

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