Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/58: Рейтинг темы: голосов - 58, средняя оценка - 4.53
15 / 15 / 6
Регистрация: 21.07.2011
Сообщений: 89
1

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

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

Author24 — интернет-сервис помощи студентам
Где можно найти информацию по отношениям между объектами классов is-a, has-a, uses-a и и их реализация средствами С++. В инете очень мало информации. Особенно о uses-a. Нашел слабенькое описание вопроса в книге Дж. Коплиена "Программирование на C++". Описано сложным языком, а по uses-a почти ничего .
Как это отношение можно реализовать? Или где это описано человеческим языком?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2012, 13:56
Ответы с готовыми решениями:

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

Реализация отношений one-to-many/many-to-one
Здравствуйте! Помогите пожалуйста реализовать отношение one-to-many/many-to-one К примеру есть...

Реализация отношений н-юродный брат на Турбо Прологе
В проге можно использовать только отношения родитель(parent) и женат/замужем (married). Нужно...

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

6
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
19.03.2012, 16:37 2
Цитата Сообщение от Konstantin_D Посмотреть сообщение
отношениям между объектами классов is-a, has-a, uses-a
А что это такое вообще?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.03.2012, 16:54 3
is-a - public наследование.
has-a - агрегирование (создается в классе).
use-a - агрегирование (приходят извне, доступны не только в классе).
3
15 / 15 / 6
Регистрация: 21.07.2011
Сообщений: 89
19.03.2012, 17:00  [ТС] 4
Меня такой ответ от эксперта С++ скорее порадовал, чем огорчил
Значит, эта фигня никому не нужна.
Это был вопрос из тестов по проверке знаний С++ на собеседовании.
В инете найти много не удалось, но:
отношение is-a - "является объектом типа" - при public наследовании объект производного класса является также и объектом базового класса и т.д.
отношение has-a - "имеет объект" - приватное наследование; создание класса, элемент которого являются объектами другого класса и т.п.
Информации мало. Особенно по "uses-a". Думаю, это вложенные классы, типа как узел в списке.
А нужно рассказать как эти отношения можно реализовать и какими средствами С++. Почему то не является этим и т.п.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
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/... c06449236e
2
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
19.03.2012, 17:25 6
Konstantin_D, я такой терминологии даже в UML не встречал Думал, что-то особенное, а оно оказывается проще некуда.
0
5 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 7
10.02.2013, 15:40 7
Тест расширили
Подскажите, пожалуйста, что за отношения такие get-a и ref-a?
0
10.02.2013, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2013, 15:40
Помогаю со студенческими работами здесь

Реализация отношений n-юродная тетя и внучка на ТуПролог (тот же турбо)
Вот, чтто у меня получилось, но я не понимаю сам принцип Кто будет Н-юродной тетей, и Н-юродной...

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

Нормализация отношений между таблицами БД
Некоторый объект содержит набор свойств и среди них массив значений. Какую нормальную форму...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru