Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
#1

Реализация отношений между объектами

07.02.2014, 13:23. Просмотров 769. Ответов 14
Метки нет (Все метки)

Здравствуйте.
Есть задумка организовать класс или что-то в этом роде между объектами в программе, который бы отражал их взаимные отношения. Поясню на примере.
Есть А и В. Нужно указать их отношения, что А больше В.
Как это реализовать?
Чтобы существовал некоторый класс(?), который указывал бы отношения между определёнными объектами.
И выглядело бы это в программе примерно так:
"отношение"(А,В)=больше;
или
А"отношение"В=больше;
Как это реализовать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 13:23
Ответы с готовыми решениями:

Реализация отношений между классами is-a, has-a, uses-a в С++
Где можно найти информацию по отношениям между объектами классов is-a, has-a,...

Реализация метода отношений случайных нормальных величин
Доброго времени суток, подскажите пожалуйста что значит "метод отношений...

Реализация stl-ной queue с объектами своего класса, вылетает программа
не могу разобраться, в чем проблема. необходимо реализовать очередь и...

Сообщения между объектами
Уважаемые господа! Я недавно начал читать литературу по Smalltalk. Так вот,...

Отношения между классами и объектами
Для каждого индивидуального варианта необходимо создать консольную программу...

14
egor2116
571 / 375 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
07.02.2014, 13:58 #2
Как это реализовать ?
А так не подойдет ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 
class A
{
      private:
              int data;
      public:
             A(int dat) : data(dat){}
             int getData(){ return data; }             
};
 
class B
{
      private:
              int data;
      public:
             B(int dat) : data(dat){}
             int getData(){ return data; }             
};
 
int main()
{
  A a(5);
  B b(10);
  
  if(a.getData() > b.getData())
     std::cout << " a > b";
  else
     std::cout << " a <= b";
  
  system("PAUSE");
  return 0;
}
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 14:15  [ТС] #3
egor2116, Нет, это совсем не то. Нужно ввести понятие "отношение" между объектами.
Оно должно хранится в отдельной переменной соответствующей определённому "отношению" между А и В.
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 26.12.2012
Сообщений: 382
07.02.2014, 14:20 #4
sergey.shuvalov, Чтобы объекты можно было сравнивать - они должны иметь некую общую сущность. Логично было бы выделить её в базовый класс, в нем реализовать методы сравнения(или перегрузить соответствующие операторы), а уже от него унасладовать ваши два класса.
0
egor2116
571 / 375 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
07.02.2014, 14:26 #5
Наверное как то так или я не понимаю что вам надо и главное зачем ?
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
class Base
{
      private:
                int data;
      public:
             Base(int dat) : data(dat){}
             int getData(){ return data; }
             virtual ~Base(){}
};
 
class A : Base
{
      public:
             A(int dat) : Base(dat){}           
};
 
class B : Base
{
      public:
             B(int dat) : Base(dat){}           
};
 
class Compare
{
    public:
           static bool compare(Base * a, Base * b)
           {
              return  a->getData() < b->getData();
           }
};
 
int main()
{
    A * a = new A(5);
    B * b = new B(10);
  if( Compare::compare((Base *)a, (Base *)b))
     std::cout << " a < b " << std::endl;
  else
     std::cout << " a >= b " << std::endl;
  
  system("PAUSE");
  return 0;
}
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 14:48  [ТС] #6
Поясню.
Обычно условие в программе ограничивается, ну например x=7;
Хочется расширить варианты условий.
"отношение"y(А,В)=z;
Вот каким образом это сделать - вот в чём вопрос.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
07.02.2014, 14:56 #7
АБК(абстрактный базовый класс) в помощь, и 2 производных класса от него, пишешь метод в котором по какому-либо критерию(принадлежащему абк) сраниваешь, будет потом "методСравнения"(типАБК*, типАБК*){if ()... return true;} к примеру так.

Добавлено через 26 секунд
если я правльно понял желание автора ...
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 14:57  [ТС] #8
Поясню.
Обычно условие в программе ограничивается, ну например x=7;
Хочется расширить варианты условий.
"отношение"y(А,В)=z;
Вот каким образом это сделать - вот в чём вопрос.
Причём отношение может быть любым. Например "отношение" - вкуса.
тогда вкус(А,В)=слаще
то есть А слаще В.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
07.02.2014, 15:19 #9
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Обычно условие в программе ограничивается, ну например x=7;
учитесь норм выражать мысли.
C++
1
2
3
4
5
6
7
8
string getMoreSugar(abstractBaseClass& A, abstractBaseClass& B)
{
string str="A слаще";
if (A.sugar()>B.sugar()) // скажем 2 метода возвращают содержание сахара.
return str;
else
string str="B слаще";
}
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 15:31  [ТС] #10
dzrkot, Увы, совсем не то. Тяжело понять мой вопрос? Тогда не пытайтесь дать неправильный ответ. Смысл решения, если условие не понято? Если не понятно, то задавайте наводящие вопросы и старайтесь при этом писать без ошибок, чтобы в свою очередь быть понятым.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
07.02.2014, 15:41 #11
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
dzrkot, Увы, совсем не то. Тяжело понять мой вопрос? Тогда не пытайтесь дать неправильный ответ. Смысл решения, если условие не понято? Если не понятно, то задавайте наводящие вопросы и старайтесь при этом писать без ошибок, чтобы в свою очередь быть понятым.
мб вы сформулируете по человечески свой вопрос? Наверное если вам никто ещё не дал правильный ответ, то вы не в состоянии выразить свою мысль нормально, особенно х=7 меня убило.

Добавлено через 2 минуты
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
И выглядело бы это в программе примерно так:
"отношение"(А,В)=больше;
или
А"отношение"В=больше;
как вы себе это представляете, это синтаксически не правльно, т.к. написана чушь
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 15:46  [ТС] #12
dzrkot, прикидываетесь или на самом деле?
Речь идёт о концепции, которую хотелось бы выразить через существующий синтаксис C++.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
07.02.2014, 15:57 #13
класс у которого метод отношение(a,b); устанавливает какую-то свою абстрактную "иерархию" между этими классами ... ?
0
sergey.shuvalov
-5 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 269
07.02.2014, 16:06  [ТС] #14
между какими этими?
0
dzrkot
07.02.2014, 16:38     Реализация отношений между объектами
  #15

Не по теме:

Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
между какими этими?
ясно, досвидания.

0
07.02.2014, 16:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 16:38
Привет! Вот еще темы с ответами:

Типы связей между объектами
Какие существуют типы связей между объектами и их смысл? Пыталась гуглить, но...

Сравнение между объектами разных классов
Всем привет, Есть 4 разных класса, в мэине мне нужно их сравнить. ...

Взаимодействие между объектами единой иерархии классов
Здравствуйте. У меня есть некоторый базовый класс window, который создает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru