Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 4
1

Классы, содержащие данные других классов

11.02.2016, 11:39. Показов 571. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Извините за, возможно, нубовский вопрос, но я хочу разобраться, что происходит в примере ниже.

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
//Rect.hpp
#include <iostream.h>
using namespace std;
 
class Point
{
    public:
    void SetX(int x) {itsX = x;}
    void SetY(int y) {itsY = y;}
    int GetX() const {return itsX;}
    int GetY() const {return itsY;}
    
    private:
    int itsX;
    int itsY;
};
 
class Rectangle
{
    public:
    Rectangle(int top, int left, int bottom, int right);
    ~Rectangle(){}
    
    int GetTop() const {return itsTop;}
    int GetLeft() const {return itsLeft;}
    int GetBottom() const {return itsBottom;}
    int GetRight() const {return itsRight;}
    
    Point GetUpperLeft() const {return itsUpperLeft;}
    Point GetLowerLeft() const {return itsLowerLeft;}
    Point GetUpperRight() const {return itsUpperRight;}
    Point GetLowerRight() const {return itsLowerRight;}
    
    void SetUpperLeft(Point Location) {itsUpperLeft = Location;}
    void SetLowerLeft(Point Location) {itsLowerLeft = Location;}
    void SetUpperRight(Point Location) {itsUpperRight = Location;}
    void SetLowerRight(Point Location) {itsLowerRight = Location;}
    
    void SetTop(int top) {itsTop = top;}
    void SetLeft(int left) {itsLeft = left;}
    void SetBottom(int bottom) {itsBottom = bottom;}
    void SetRight(int right) {itsRight = right;}
    
    int GetArea() const;
    
    private:
    Point itsUpperLeft;
    Point itsUpperRight;
    Point itsLowerLeft;
    Point itsLowerRight;
    int itsTop;
    int itsLeft;
    int itsBottom;
    int itsRight;
};
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
//Rect.cpp
#include "Rect.hpp"
 
Rectangle::Rectangle(int top, int left, int bottom, int right)
{
    itsTop = top;
    itsLeft = left;
    itsRight = right;
    itsBottom = bottom;
    
    itsUpperLeft.SetX(left);
    itsUpperLeft.SetY(top);
    
    itsUpperRight.SetX(right);
    itsUpperRight.SetY(top);
    
    itsLowerLeft.SetX(left);
    itsLowerLeft.SetY(bottom);
    
    itsLowerRight.SetX(right);
    itsLowerRight.SetY(bottom);
}
 
int Rectangle::GetArea() const
{
    int Width = itsRight - itsLeft;
    int Height = itsTop - itsBottom;
    return (Width * Height);
}
 
int main()
{
    Rectangle MyRectangle(100, 20, 50, 80);
    
    int Area = MyRectangle.GetArea();
    cout << "Area: " << Area << "\n";
    cout << "Upper Left X Coordinate: ";
    cout << MyRectangle.GetUpperLeft().GetX();
    
    system("PAUSE");
    return 0;
}
Выше представлен пример из книги, по которой я учу C++.
Вопрос конкретно в следующем:
- Как в классе Rectangle используется класс Point?
- Меня интересует конкретно отмеченная область:
C++
1
2
3
4
5
6
7
8
9
Point GetUpperLeft() const {return itsUpperLeft;}
    Point GetLowerLeft() const {return itsLowerLeft;}
    Point GetUpperRight() const {return itsUpperRight;}
    Point GetLowerRight() const {return itsLowerRight;}
    
    void SetUpperLeft(Point Location) {itsUpperLeft = Location;}
    void SetLowerLeft(Point Location) {itsLowerLeft = Location;}
    void SetUpperRight(Point Location) {itsUpperRight = Location;}
    void SetLowerRight(Point Location) {itsLowerRight = Location;}
Прошу, пожалуйста, популярно объясните, кому не сложно)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2016, 11:39
Ответы с готовыми решениями:

Непонятна тема (Классы содержащие другие классы, как данные члены )
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class...

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

Преобразования объектов классов в объекты других классов
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары...

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

6
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,711
11.02.2016, 11:45 2
Rectangle содержит элементы типа Point
Цитата Сообщение от EthanOne Посмотреть сообщение
C++
1
2
3
4
5
private: 
  Point itsUpperLeft; 
  Point itsUpperRight; 
  Point itsLowerLeft; 
  Point itsLowerRight;
Соответственно, метод
C++
1
2
3
4
Point GetUpperLeft() const 
{
   return itsUpperLeft;
}
просто возвращает значение itsUpperLeft.
метод
C++
1
void SetUpperLeft(Point Location) {itsUpperLeft = Location;}
просто устанавливает значение itsUpperLeft.
и т.д.
2
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
11.02.2016, 11:49 3
EthanOne, ну есть класс: точка и класс четырехугольник в этом классе в качестве атрибутов используются обьекты класса точка...а приведенные вами "гет" и "сет" функции это просто определение и возврат позиции точки (верх лево верх право низ лево и низ право...)
0
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 4
11.02.2016, 12:01  [ТС] 4
Спасибо) Но еще уточню. Меня волнуют там два ключевых слова в классе Rectangle: Point Location.
Как это работает хочу разобраться. Что делает - я понял. Но как это работает - вот это не понятно Там, например, метод SetUpperLeft() вовсе не вызывается явно.
0
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
11.02.2016, 12:05 5
EthanOne, Point Location это просто название переменой типа точка

C++
1
void SetUpperLeft(Point что угодно!!!) {itsUpperLeft = что угодно!!!;}
1
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 4
11.02.2016, 12:13  [ТС] 6
ThePlague, спасибо!
А такое объявление переменной Point itsUpperLeft; в классе Rectangle означает, что переменная-член пренадлежит классу Point? И то же самое с методом Point GetUpperLeft() const {return itsUpperLeft;}
0
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
11.02.2016, 12:20 7
EthanOne, первое да! второе нет! просто функция возвращает значение типа точка!
2
11.02.2016, 12:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2016, 12:20
Помогаю со студенческими работами здесь

Класс содержащий элементы двух других классов
Задание у Страуструпа: При наличии определений struct S У меня что-то не получается так...

Почему RTTI работает только с иерархией классов, содержащие виртуальные функции?
Почему RTTI работает только с иерархией классов, содержащие виртуальные функции?

Классы, наследование классов
Есть задание: Создать класс прямоугольник, члены класса – длины сторон a и b. Предусмотреть в...

Классы, иерархия классов
а) Создать иерархию классов здание, административное здание и жилое здание. Определить конструктор...


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

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