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

Поиск:

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



У меня есть класс  class1- он отображает интерфейс,  у него есть поле class2 - там хранятся информационные поля - текст, цвет и.п.
class1 - является и API классом.

class3 - хочет использовать class1.

class3 хочет изменить цвет поля ЦВЕТ у classa2. 
class1 возращает своё поле class2, class3 записывает нужный параметр и все хорошо, но class1 тоже должен применить и отобразить этот параметр.
Код

class1
{
private class2 obj;


public class2 Get()
{
   return obj;
}
}
class2
{
private Color color;
private string name;
Color {set get};
Name {set get};
}


class3
{
class1 a;
a.Get().Color = Colors.Red;
}



вообще на каком этапе переписать что бы class1 отображал уже измененые параметры
PM MAIL   Вверх
Экскалупатор
Дата 28.11.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



если у тебя класс2 это поле класс1, то класс3 не должен получать к нему доступ. т.е. класс1 должен реализовать доступ к полю класс2.цвет через какой то свой метод, соответственно в таком случае оба класса будут извещены об изменении цвета в класс2, и будут отображать все что нужно
PM MAIL ICQ   Вверх
Heinzz
Дата 28.11.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне так нравится:
Код

    class Program
    {
        static void Main(string[] args)
        {
            class1 a;

            a.obj.color = Colors.Red;

        }
    }

    class class1
    {
        public class2 obj {get;set;}

        public class2 Get()
        {
            return obj;
        }
    }

    class class2
    {
        private string name;
        public Color color {get;set;}
        string Name {set; get;}
    }


Это сообщение отредактировал(а) Heinzz - 28.11.2009, 22:06


--------------------
user posted image
PM MAIL   Вверх
Экскалупатор
Дата 28.11.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



Heinzz, тоже вариант

Добавлено @ 22:12
но в любом случае первый класс не должен возвращать второй, он должен просто предоставить методы доступа к полям второго класса, но не показывать что это поля второго класса.

Это сообщение отредактировал(а) Экскалупатор - 29.11.2009, 12:38
PM MAIL ICQ   Вверх
DenWPF
Дата 29.11.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



Heinzz, не могу понять чем он отличается от моего примера??
вообщем я подумал буду делать в классе1 так:
Color SetColor(Color a)
{
     obj.Color = a;
     Show()// вот эта функция мне нужна очень.
}

и так для каждого свойства 

сойдет?=)


PM MAIL   Вверх
Экскалупатор
Дата 29.11.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



вариант Heinzz, от твоего мало чем отличается.
плохо в твоем примере то что ты возвращал третьему классу ссылку на класс2.
Код

public class2 Get()
{
   return obj;
}


так делать не правильно, да и как ты сам написал, класс1 ничего не знает об изменениях в класс2.

такой вариант как
Код

Color SetColor(Color a)
{
     obj.Color = a;
     Show()// вот эта функция мне нужна очень.
}


в принципе наверное покатит, класс1 будет всегда уведомлен об изменениях в класс2, потому что сам их делает. и при этом реализация скрывается от класс3, т.е. он не знает о существовании класс2.

Это сообщение отредактировал(а) Экскалупатор - 29.11.2009, 12:48
PM MAIL ICQ   Вверх
DenWPF
Дата 29.11.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



будем надеятся заказчику это подойдет. спасибо.
если что продожу тут.

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



DenWPF, хм, а почему ты думаешь что заказчику это может не подойти? а если он завтра захочет убрать класс2 вовсе и все сделать через что нибудь другое? это тебе придется изменить класс1, и изменить все места в класс3(и где еще у тебя встречается) где было взаимодействие с класс2, а если сделать как я тебе предлагаю, то придется изменить только класс1. но это конечно детали...
PM MAIL ICQ   Вверх
DenWPF
Дата 29.11.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



класс2 его интересовать не должен, то что в нутри это моё.
а вот класс3 это будет его класс. класс1 - это АПИ.
PM MAIL   Вверх
Экскалупатор
Дата 29.11.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



Цитата

класс2 его интересовать не должен, то что в нутри это моё.
а вот класс3 это будет его класс. класс1 - это АПИ. 


ну так совершенно верно, я тебе про это же и говорю, ты должен скрыть существование класс2, за методами класс1. заказчик про него может даже не узнать...
PM MAIL ICQ   Вверх
Heinzz
Дата 29.11.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DenWPF @  29.11.2009,  10:32 Найти цитируемый пост)
Heinzz, не могу понять чем он отличается от моего примера??


работает


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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