Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.74
Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
#1

Реализация отношений между классами is-a, has-a, uses-a в С++ - C++

19.03.2012, 13:56. Просмотров 5977. Ответов 6
Метки нет (Все метки)

Где можно найти информацию по отношениям между объектами классов is-a, has-a, uses-a и и их реализация средствами С++. В инете очень мало информации. Особенно о uses-a. Нашел слабенькое описание вопроса в книге Дж. Коплиена "Программирование на C++". Описано сложным языком, а по uses-a почти ничего .
Как это отношение можно реализовать? Или где это описано человеческим языком?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация отношений между классами is-a, has-a, uses-a в С++ (C++):

Реализация отношений между объектами - C++
Здравствуйте. Есть задумка организовать класс или что-то в этом роде между объектами в программе, который бы отражал их взаимные...

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

Реализация одно-х списков классами - C++
Добрый день! Расскажите пожалуйста, как эту задачу можно написать с помощью классов. L – линейный однонаправленный список ...

Связь между 2 классами - C++
Есть 2 класса: Class A { private: B** arrayB;/нужно раньше объявить класс И ... }; A* Object

Взаимодействие между классами - C++
При попытке создать указатель на объект класса в public секции другого класса из которого будет обращение к его методу... Cook *cok ...

Взаимодействие между классами - C++
Суть проблемы такова: в одном файле classy.h объявлено несколько классов (classcontrol, class1, class2,class3). Необходимо сделать так,...

6
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.03.2012, 16:37 #2
Цитата Сообщение от Konstantin_D Посмотреть сообщение
отношениям между объектами классов is-a, has-a, uses-a
А что это такое вообще?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
19.03.2012, 16:54 #3
is-a - public наследование.
has-a - агрегирование (создается в классе).
use-a - агрегирование (приходят извне, доступны не только в классе).
2
Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
19.03.2012, 17:00  [ТС] #4
Меня такой ответ от эксперта С++ скорее порадовал, чем огорчил
Значит, эта фигня никому не нужна.
Это был вопрос из тестов по проверке знаний С++ на собеседовании.
В инете найти много не удалось, но:
отношение is-a - "является объектом типа" - при public наследовании объект производного класса является также и объектом базового класса и т.д.
отношение has-a - "имеет объект" - приватное наследование; создание класса, элемент которого являются объектами другого класса и т.п.
Информации мало. Особенно по "uses-a". Думаю, это вложенные классы, типа как узел в списке.
А нужно рассказать как эти отношения можно реализовать и какими средствами С++. Почему то не является этим и т.п.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
19.03.2012, 17:12 #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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <string>
 
// IS-A
 
class Person
{
public:
   Person(const std::string& nm):name(nm)
   {
   }
   const std::string getName() const
   {
      return name;
   }
private:
   std::string name;
};
 
class Derived : public Person
{
public:
   Derived(const std::string& nm, const std::string& tmp):
   Person(nm), temp(tmp)
   {
   }
   const std::string getTemp() const
   {
      return temp;
   }
private:
   std::string temp;
};
 
void test_is_a()
{
   Derived der("Vasya", "Temp");
   std::cout << der.getName() << " - " << der.getTemp() << std::endl;
}
 
// HAS-A
 
class Engine
{
public:
   const std::string getName() const
   {
      return "Engine";
   }
};
 
class Car
{
public:
   const std::string getEngineName() const
   {
      return eng.getName();
   }
private:
   Engine eng;
};
 
void test_has_a()
{
   Car car;
   std::cout << car.getEngineName() << std::endl;
}
 
// USES-A
 
class Pilot
{
public:
   const std::string getName() const
   {
      return "Pilot";
   }
};
 
class Plane
{
public:
   Plane(const Pilot& p):pil(p)
   {
   }
   const std::string getPilotName() const
   {
      return pil.getName();
   }
private:
   const Pilot& pil;
};
 
void test_uses_a()
{
   Pilot pil;
   Plane pl(pil);
   std::cout << pl.getPilotName() << std::endl;
}
 
int main()
{
   test_is_a();
   test_has_a();
   test_uses_a();
}
http://liveworkspace.org/code/1d2088d6f363f404c9d32dc06449236e
2
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.03.2012, 17:25 #6
Konstantin_D, я такой терминологии даже в UML не встречал Думал, что-то особенное, а оно оказывается проще некуда.
0
Lonkar
5 / 0 / 1
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 15:40 #7
Тест расширили
Подскажите, пожалуйста, что за отношения такие get-a и ref-a?
0
10.02.2013, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2013, 15:40
Привет! Вот еще темы с ответами:

Передача данных между классами - C++
Понимаю что это основы, но что-то я запутался... Есть основной класс программы MainWindow. Есть другой класс (назовем его MyClass). В...

Отличия между структурами и классами - C++
Объясните пожалуйста, в С++, получается, что структура отличается от класса только тем, что у нее по умолчанию все данные public? Т.е....

Передача данных между классами - C++
Здравствуйте! Программирую графику на C++ под DirectX9, если точнее то пытаюсь написать простой редактор 3D графики. есть класс...

Организация общения между классами - C++
Использую следующую конструкцию. Есть общий класс , назовем его ядро(Core) от него идут 2 след класса Graphics и Data. Задача следующая...


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

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

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