Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++|UML] Отношения между объектами


Автор: Всемогущий 22.2.2007, 09:49
пожалуйста обьясните,
как обьекты одного и того же  класса
могут быть связаны между собой,
и кратность разная.........

Автор: seacat79 1.3.2007, 17:16
Например так:

Код

class Country 
{
     private:
          Country borders[3];
};


Автор: Всемогущий 1.3.2007, 17:38
а по русски?  smile 

Автор: Medved 1.3.2007, 17:51
изучайте паттерны.

Автор: Всемогущий 1.3.2007, 19:25
Этим и занимаюсь smile 

Автор: sergejzr 1.3.2007, 19:29
Внимание! Эта тема не соответствует правилам форума

Заголовок темы не отражает её суть, или несколько вопросов в одной теме.

Ознакомьтесь с правилами! http://forum.vingrad.ru/act-SR/f-27.html

Тема перенесена в Центр Помощи

Автор: Rockie 1.3.2007, 20:46
Всемогущий, а что это за учебник?

Medved и all, а какой именно паттерн здесь использовать? Мне тоже интересен ответ на вопрос..

Добавлено @ 20:51 
Паттерн "посредник"?


Автор: Всемогущий 1.3.2007, 20:52
Серия: Библиотека программиста
Авторы: Дж.Рамбо, М.Блаха
Название: UML 2.0 Обьектно-ориентированное моделирование и разработка 2-е издание
Издательство: Питер
Год выпуска :  2007
ISBN 5-469-00814-2

Автор: Rockie 1.3.2007, 21:49
Всемогущий, понятно, спасибо.

Вот, вроде сделал. Все страны наследуются от класса Country. Класс Boarders - хранит связи между странами. Метод - 
Код

void AddNeighbourCountry(Country*){}

в классе Boards объединяет соседствующие страны. Но при таком подходе получается, что "граница" знает о странах, а страны о своих границах не знают smile Вообщем подскажите как это правильно реализовать.
Код

class Country                  // страны, класс-родитель
{
};

class France: public Country   // класс страны Франция
{
};

class Italy: public Country    // класс страны Италия
{
};

class Boarders                 // класс "соседи" - кто с кем граничит
{
    public:
        // добавить соседа
        void AddNeighbourCountry(Country*){}
};

int main()
{
    Country* france = new France;
    Country* italy = new Italy;

    Boarders europe;

    europe.AddNeighbourCountry(france);
    europe.AddNeighbourCountry(italy);

    return 0;
}

Автор: Всемогущий 1.3.2007, 21:56
не дай бог скажут ,что два вопроса в одной теме


Цитата(Rockie @  1.3.2007,  23:49 Найти цитируемый пост)

Код

europe.AddNeighbourCountry(france);
europe.AddNeighbourCountry(italy);


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

Автор: Rockie 1.3.2007, 23:40
Цитата(Всемогущий @  1.3.2007,  21:56 Найти цитируемый пост)
не дай бог скажут ,что два вопроса в одной теме

Не скажут. Это вариант ответа и вопрос по той же теме.


Автор: Всемогущий 2.3.2007, 13:14
Цитата(Всемогущий @  22.2.2007,  11:49 Найти цитируемый пост)
как обьекты одного и того же  класса могут быть связаны между собой

так ни кто и не ответил .
получается что наражал отец клонов но у одного из троих две `руки` а у остальных одна!
Суть в том ,чтосудя по картинке :все братья должны быть одинаковыми т.к. родились от одного Country
но почему то различаются...


Автор: Exception 2.3.2007, 23:07
Rockie, если ты внимательно вглядишься в рисунок, заметишь, что France, Belgium - это не наследники, а объекты-экземпляры Country.

У класса Country есть свойство Borders. Судя по окончанию, это коллекция объектов Country. Отношение между классами - обычная ассоциация.

http://ru.wikipedia.org/wiki/Класс_(программирование)#Отношения_между_классами

Добавлено @ 23:09 
Я бы тебе нарисовал, да вот только меня смущает отсутствие стрелочек у ассоциаций на рисунке.

Автор: Rockie 3.3.2007, 19:18
Exception, спасибо! smile
В данном случае каждый класс содержит в себе коллекцию своих соседей? 

Цитата(Exception @  2.3.2007,  23:07 Найти цитируемый пост)
Я бы тебе нарисовал, да вот только меня смущает отсутствие стрелочек у ассоциаций на рисунке.

А, если есть время, можно пример на С++ или С#?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)