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

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

Войти
Регистрация
Восстановить пароль
 
Inferiym
1 / 7 / 3
Регистрация: 20.12.2011
Сообщений: 58
#1

Отношения между классами - C++

14.05.2014, 00:17. Просмотров 226. Ответов 0
Метки нет (Все метки)

соотношение между классами - "HAS-A" и "IS-A".
У меня есть класс "самолет". По шаблону этого класса я создал объект "Cамолет1" который рандомно летает по окну программы.
Также у меня есть класс парашютист. Их н штук.создаютса динамически. Мне нужно организовать так, чтобы некоторые парашютисты принадлежали самолете, а некоторые нет.

Хотя я покажу пример кода, мой вопрос чисто теоретический! Как можно сделать чтобы парашютист принадлежал самолете? Ну никак не могу себе представить, чтобы парашютист был классом потомком самолета ... Или тут надо сделать тип данных парашютист атрибутом класса самолет?

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include "StdAfx.h"             //Кількість обєктів 
class skydiver
    {
    private:
        int n;                  //Номер
        POINT poz;              //Координати позиції
        POINT v;                //Вектор руху (для таймера)
        char he_is[20];         //Ім'я
        bool select;            //Індекатор виділення
    public:
        //Конструктор з параметрами
        skydiver (char *_he_is,int x,int y,int xv,int yv)
        {
            strcpy(this->he_is,_he_is);
            poz.x=x;
            poz.y=y;
            v.x=xv;
            v.y=yv;
            select=false;
        }
        skydiver()
        {   
            char *_he_is="Новий";
            strcpy(this->he_is,_he_is);
            poz.x=(400+rand () % 600);
            poz.y=(280+rand () % 50);
            v.x=-3;
            v.y=3;
            select=false;
        }
        
        //Методи надання даних
        char* getname()         {return this->he_is;}
        bool sel()              {return this->select;}
        //Mетод інверсії виділення
        void selnow()           {if (select==0) select=1; else select=0;}
        //Відміна виділення
        void selfalse()         {select=0;}
        //Методи переміщення
        void left() {poz.x-=3;}
        void right(){poz.x+=3;}
        void up()   {poz.y-=3;}
        void down() {poz.y+=3;}
        void graw() {poz.x+=3;poz.y+=rand () % 4; }
        //Метод який визначає чи знаходиться курсор на обєкті
        bool inme (int x,int y)
        {
            if ((x>=poz.x)&&(x<=poz.x+100)&&(y>=poz.y)&&(y<=poz.y+150)) return true;
            else return false;
        }
        //Метод зображення обєкту
        void draw(HDC hdc,HBITMAP jetpack1,HBITMAP jetpack2,
            HBITMAP _jetpack1,HBITMAP _jetpack2,HBITMAP skydiver_new,bool a,bool r_or_l)
        {
        HDC hdcMem=CreateCompatibleDC(hdc);
        // Виділення парашутиста проявляється у тому що у нього з'являється реактивний ранець
        // це цілком виправдовує той факт, що парашутис отримує можливість керувати траекторією
        // і навіть летіти в гору.
        HPEN delpen=CreatePen(PS_SOLID,1,RGB(255,255,255));
        HBRUSH delbrush = CreateSolidBrush (RGB(255,255,255));
        (HPEN)SelectObject(hdc,delpen);
        (HBRUSH)SelectObject(hdc,delbrush);
        Rectangle(hdc,poz.x-4,poz.y-30,poz.x+108,poz.y+154);        //Очищення зайвого
        
        TextOutA(hdc,poz.x+10,poz.y-22,LPCSTR(this->getname()),strlen(this->getname()));
        if (select){
            if(r_or_l)
                if (a){
                SelectObject(hdcMem,jetpack1);
                BitBlt(hdc,poz.x,poz.y+1,100,150,hdcMem,0,0,SRCCOPY);
                }   
                else{
                SelectObject(hdcMem,jetpack2);
                BitBlt(hdc,poz.x,poz.y-1,100,150,hdcMem,0,0,SRCCOPY);
                }               
        else
                if (a){
                SelectObject(hdcMem,_jetpack1);
                BitBlt(hdc,poz.x,poz.y+1,100,150,hdcMem,0,0,SRCCOPY);
                }   
                else{
                SelectObject(hdcMem,_jetpack2);
                BitBlt(hdc,poz.x,poz.y-1,100,150,hdcMem,0,0,SRCCOPY);
                }
        TextOutA(hdc,poz.x,poz.y,LPCSTR("(Виділений)"),11);
        }
        else{   
        SelectObject(hdcMem,skydiver_new);
        BitBlt(hdc,poz.x,poz.y+1,100,150,hdcMem,0,0,SRCCOPY);       
        }
        DeleteDC(hdcMem);
        };
        
    };
class plans
{
    private:
        POINT p;        //Позиція
        POINT v;        //Вектор
        int z;          //Цетр
    public:
        plans(int x,int y)
        {p.x=x;p.y=y;};
        void herez(int _z){z=_z;};
        void draw(HDC hdc,HBITMAP plane)
        {
        int dop=0;                      //Випадкові переміщення в межах даної області
        if (p.y>-80)
                {p.y+=rand () % 8-4;}
        else    
                {p.y+=4;}
        if (p.x>z-50)
                {p.x+=rand () % 8-4;}
        else    
                {p.x+=4;}
 
        HDC hdcnew=CreateCompatibleDC(hdc);
        SelectObject(hdcnew,plane);
        BitBlt(hdc,z+p.x,p.y,1030,460,hdcnew,0,0,SRCCOPY);
        TextOutA(hdc,z+p.x+900,p.y+300,LPCSTR("Літак"),5);
        DeleteDC(hdcnew);
        };
};
 
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 00:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отношения между классами (C++):

Отношения между классами и объектами - C++
Для каждого индивидуального варианта необходимо создать консольную программу на С++, реализующую отношение ассоциации (агрегации или...

OOP (все принципы ООП и основные отношения между классами) - C++
Здравствуйте, помогите пожалуйста. Стоит задача показать все принципы ООП и основные отношения между класами. Сильно не ругайтесь, только...

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

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

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

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

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

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

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

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

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


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

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

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