Форум программистов, компьютерный форум CyberForum.ru

Простой пример класса - C++

Восстановить пароль Регистрация
 
bekabot
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 61
23.01.2014, 16:49     Простой пример класса #1
Листинг 6.8. Объявление классов точки и прямоугольника
Кликните здесь для просмотра всего текста
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
// Начало файла Rect.hpp
#include <iostream.h>
 class Point // хранит координаты x,y
{
// нет конструктора, используется конструктор по умолчанию
public:
void SetX(int x) { itsX = x; >
void SetY(int у) { itsY = у; }
int GetX() const < return itsX;}
int GetY() const { return itsY;}
private:
int itsX;
int itsY;
}; // конец объявления класса Point
 
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 SetBottorn (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;
};
/ конец файла Rect.hpp


Листинг 6.9. Содержимое файла RECT.cpp
Кликните здесь для просмотра всего текста
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
// Начало файла rect.cpp
#include "rect.hpp"
Rectangle::Rectangle(int top, int left, int bottom, int right)
{
itsTop = top;
itsLeft = left;
itsBottom = bottom;
itsRight = right;
 
itsUpperLeft.SetX(left);
itsUpperLeft.SetY(top);
 
itsUpperRight.SetXtright);
itsUpperRight.SetY(top);
 
itsLowerLeft.SetX(left);
itsLowerLeft.SetY(bottom);
 
itsLowerRight.SetX(right);
itsLowerRight.SetY(bottom);
}
 
// Вычисляем площадь прямоугольника, отыскивая его стороны
// определяем его длину и ширину, а затем перемножаем их
int Rectangle::GetArea() const
{
int Width = itsRignt - itsLeft;
int Height = itsTop - itsBottom;
return (Width >> Height);
}
 
int main()
{
//инициализируем локальную переменную Rectangle
Rectangle MyRectangle (100, 20, 50, 80 );
 
int Area = MyRectangle.GetArea();
 
cout << "Area: " << Area << "\n";
cout << "Upper Left X Coordinate:";
cout << MyRectangle.GetUpperLeft().GetX();
return 0;
}


1) Можете, пожалуйста, обьяснить строки 28-36. К примеру, как понять
C++
1
Point GetUpperLeft() const { return itsUpperLeft; }
Как функция может быть типа класса Point? GetUpperLeft() это объект класса или метод?

2) а что в этой строке происходит? itsUpperLeft как я понял обьект класса, значит эта строка присваивает значение одного объекта другому??
C++
1
void SetUpperLeft(Point Location) {itsUpperLeft = Location; }
3)Можете здесь уточнить, вызывается функция функции или что?
C++
1
cout << MyRectangle.GetUpperLeft().GetX();

4) Также хотел спросить одну вещь: к примеру где тут в программе вызывается функция SetX()? Я вижу, что она описывается, но вызывается только GetX()

Спасибо большое за Ваши ответы!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 16:49     Простой пример класса
Посмотрите здесь:

C++ простой пример паттерна (facade)
Простой пример перегрузки операции C++
Простой пример, немогу разобраться C++
Простой пример из книги C++
Пример простой службы виндовс C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
23.01.2014, 17:16     Простой пример класса #2
Цитата Сообщение от bekabot Посмотреть сообщение
Point GetUpperLeft() const { return itsUpperLeft; }
C++
1
2
Point p;
Point p2 = p.GetUpperLeft(); //т.е. это функция, вызываемая из объектов типа Point
Цитата Сообщение от bekabot Посмотреть сообщение
Как функция может быть типа класса Point?
Что значит 'типа'? Она возвращает объект типа Point;
Цитата Сообщение от bekabot Посмотреть сообщение
GetUpperLeft() это объект класса или метод?
Уже ответил.
Цитата Сообщение от bekabot Посмотреть сообщение
значит эта строка присваивает значение одного объекта другому??
Не все значения, а только часть, но думаешь в верном направлении....
Цитата Сообщение от bekabot Посмотреть сообщение
MyRectangle.GetUpperLeft().GetX();
GetUpperLeft() возвращает объект и от этого объекта уже вызывается функция
Эквивалентно:
C++
1
2
Point p = MyRectangle.GetUpperLeft();
cout << p.GetX();
Цитата Сообщение от bekabot Посмотреть сообщение
где тут в программе вызывается функция SetX()
ну раз ты не видишь, что она вызывается, значит, она и не вызывается)
bekabot
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 61
23.01.2014, 17:19  [ТС]     Простой пример класса #3
Что-то не правильно, ведь она описана в примере из книги, значит где-то вызывается??
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
23.01.2014, 19:46     Простой пример класса #4
ну, хочешь - вызови, делов то)

Добавлено через 1 минуту
У тебя кстати в 7 и 9й строчках скобки > и < стоят, неправильно это, ясное дело ( надо {}).
Yandex
Объявления
23.01.2014, 19:46     Простой пример класса
Ответ Создать тему
Опции темы

Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru