Главная страница

ПК 2102. ПК(2102). П. Г. Колинько пользовательские контейнеры


Скачать 0.78 Mb.
НазваниеП. Г. Колинько пользовательские контейнеры
АнкорПК 2102
Дата28.11.2021
Размер0.78 Mb.
Формат файлаdocx
Имя файлаПК(2102).docx
ТипУчебно-методическое пособие
#284768
страница3 из 12
1   2   3   4   5   6   7   8   9   ...   12

1.2. Практикум по гл. 1


В табл. 1.1 собрана коллекция фигур, которыми можно дополнить рассмотренную прикладную программу для размещения на рис. 1.1.

Таблица 1.1

Коллекция дополнительных фигур


№ п/п

Наименование

Вид

Отражение

Поворот

1

Прямоугольник



Нет

Да

2

Квадрат



Нет

Нет

3

Ромб



Нет

Нет

4

Параллелограмм



Да

Да

5

Трапеция



Да

Да

6

Равносторонний

треугольник



Да

Да



7

Кружок



Нет

Нет

Продолжение табл. 1.1

№ п/п

Наименование

Вид

Отражение

Поворот


8

Полукруг



Да

Да

9

Прямоугольный

треугольник



Да

Да

10

Крест



Нет

Нет

11

Косой крест



Нет

Нет

12

Прямоугольник с крестом



Нет

Да

13

Квадрат с крестом



Нет

Нет

14

Ромб с крестом



Нет

Нет

15

Параллелограмм с крестом



Да

Да

16

Трапеция с крестом



Да

Да

17

Треугольник
с крестом



Да

Да


Продолжение табл. 1.1

№ п/п

Наименование

Вид

Отражение

Поворот

18

Кружок с крестом



Нет

Нет

19

Прямоугольный

треугольник
с крестом



Да

Да

20

Полукруг
с крестом



Да

Да

21

Прямоугольник

с косым крестом



Нет

Да

22

Квадрат

с косым крестом



Нет

Нет

23

Ромб

с косым крестом



Нет

Нет

24

Параллелограмм

с косым крестом



Да

Да

25

Трапеция

с косым крестом



Да

Да

26

Треугольник

с косым крестом



Да

Да

27

Кружок

с косым крестом



Нет

Нет


Окончание табл. 1.1

№ п/п

Наименование

Вид

Отражение

Поворот

28

Прямоугольный

треугольник

с косым крестом



Да

Да

29

Полукруг
с косым крестом



Да

Да


Для некоторых фигур возможны повороты на 90o вправо или влево или отражение относительно горизонтальной и/или вертикальной оси симметрии, причем для части из них имеются обе возможности. Некоторые фигуры строятся как составные из более простых. Эти идеи можно отобразить показанной на рис. 1.2 иерархией классов.




Рис. 1.2. Фрагмент возможной иерархии классов фигур


Таблица 1.2

Индивидуальные задания к гл. 1


№ вари-
анта

Фигура

Расположение

№ вари-
анта

Фигура

Расположение

1

11

1, 4, 5

26

25

7, 8, 14

2

15

1, 14

27

12

1, 10, 11

3

26

1, 13, 15

28

13

1, 7, 8, 12

4

7

10, 11, 12

29

2

4, 5, 9, 13, 15

5

8

2, 3, 7, 8

30

19

1, 7, 8

6

5

1, 4, 5

31

22

1, 2, 3, 14

7

4

2,3, 7, 8

32

21

1, 4, 5

8

9

1, 10, 11, 12

33

10

4, 5, 12

9

4

2, 3, 14

34

27

1, 7, 8, 14

10

15

7, 8, 12

35

3

2, 3, 7, 8

11

10

10, 11, 12

36

9

1, 4, 5, 12

12

25

4, 5, 9

37

29

4, 5, 6

13

6

1, 12, 13, 15

38

16

4, 5, 14

14

11

2, 3, 10, 11

39

8

1, 13, 15

15

28

1, 7, 8, 12

40

24

1, 2, 3, 14

16

17

6, 7, 8

41

16

2, 3, 9

17

12

2, 3, 7, 8

42

28

1, 13, 15

18

14

2, 3, 7, 8

43

22

1, 2, 3, 7, 8

19

18

1, 13, 15

44

7

2, 3, 12

20

13

7, 8, 12

45

18

10, 11, 14

21

24

2, 3, 12

46

3

2, 3, 6

22

19

2, 3, 14

47

17

9, 10, 11

23

14

7, 8, 14

48

5

1, 14

24

23

1, 4, 5

49

21

4, 5, 12

25

20

1, 7, 8

50

6

4, 5, 7, 8


Задание: доработать модуль shape.cpp, добавив в коллекцию еще одну фигуру, номер которой указан в табл. 1.2 в строке с вашим вариантом. Для этой фигуры нужно оп­ределить подходящее место в иерархии классов и написать недостающие функ­ции-члены. Конструктор копии и другие генерируемые компилятором функции-члены, использование которых не предполагается, рекомендуется сделать недоступными. Грамотная иерархия наследования позволит сократить количество необходимых функций-членов. Переопределять память, имеющуюся в базовом классе, вообще не следует, но можно изменить ее смысл, если наследуемые функции-члены это позволяют.

Разработанной фигурой нужно дополнить картинку в указанных в варианте позициях (рис. 1.3). Позиция 1 обозначает галстук или воротник, 2 и 3 — бакенбарды, 4 и 5 — уши, 6 — кокарду, 7 и 8 — рога, 9 — нос, 10 и 11 — глаза, 12 — эмблему на шляпе, 13 и 15 — перья, 14 — шишак. Возможно, некоторые из фигур нужно будет повернуть или отразить. Так, в позициях 2, 4, 7, 10 и 13 фигура должна быть повернута (или отражена) влево; 3, 5, 8, 11 и 15 — вправо; 14 — отражена вверх; 1 и 9 — вниз.





Рис. 1.3. Позиции
для присоединения
дополнительных фигур
Для фигур, назначенных в позиции 6, 9, 10, 11 и 12, допускается замена отношения между классами ЯВЛЯЕТСЯ отношением СОДЕР­ЖИТ (см. комментарии в определении класса myshape).

Для примыкания фигур должны использоваться их габаритные точки. Необходимо напи­сать аналоги функции up (поместить p над q), обеспечивающие примыкание очередной фигуры p с нужной стороны по отношению к уже размещенной q. Это должны быть обычные функции, а не функции-члены класса, чтобы их можно было применять для любых объектов. Категорически запрещается вычислять или подбирать координаты размещения фигуры вручную по готовой картинке и задавать их затем константами в функции move( ).

При проектировании класса фигуры, допускающей поворот и/или отражение, рекомендуется отделить информацию, необходимую для рисования фигуры с учетом ее ориентации, и информацию для вычисления положения точек привязки, не зависящих от ориентации.
1   2   3   4   5   6   7   8   9   ...   12


написать администратору сайта