Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_oop.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.25 Mб
Скачать

Комментарии

Комментарий 1. Четырехкомпонентный вектор является представлением трехмерной точки в памяти компьютера, причем первые три компоненты являются координатами x,y,z точки, а четвертая компонента равна 1:

Матрица 4х4 – матрица преобразования координат точки в пространстве. Любое движение (то есть преобразование пространства, сохраняющее расстояние между точками) в трехмерном пространстве, согласно теореме Шаля, может быть представлено в виде суперпозиции поворота и параллельного переноса, то есть последовательного выполнения поворота и параллельного переноса.

Перенос точки в пространстве осуществляется умножением матрицы на четырехкомпонентный вектор, где dx, dy, dz – расстояние переноса по каждой из осей.

Поворот точки относительно оси OZ на угол alpha осуществляется умножением на матрицу .

Поворот точки относительно оси OX на угол alpha осуществляется умножением на матрицу .

Масштабирование осуществляется умножением на матрицу , где kx, ky, kz – коэффициенты масштабирования по соответствующим осям.

В процессе манипуляции над вектором значение последней составляющей может измениться, поэтому после каждого изменения вектора необходимо производить его нормализацию.

Комментарий 2. Для варианта №5. Реализовать функцию шифрования можно очень простую, здесь от вас не требуется создавать мощные криптостойкие алгоритмы, а сделать простенький алгоритм шифрования. Один из вариантов реализации такого алгоритма:

  1. начальная инициализация

  2. пусть k – строка ключа, n = длина ключа, i=0

  3. процедура записи в файл

  4. пусть s = входная цепочка, m = длина входной цепочки

  5. пусть j=0

  6. пока j<m делаем

  7. запишем в файл k[i] xor s[j]

  8. i++, j++

  9. если i==n тогда пусть i=0

  10. конец пока

  11. конец процедуры

  12. процедура чтения из файла

  13. пусть s = выходная цепочка, m = длина выходной цепочки

  14. пусть j=0

  15. пока j<m делаем

  16. считаем из файла символ ch

  17. s[j] = k[i] xor ch

  18. i++, j++

  19. если i==n тогда пусть i=0

  20. конец пока

  21. конец процедуры

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

Контрольные вопросы.

Заполните пробелы:

  1. Если класс Alpha наследует свойства классу Beta, то класс Alpha называется __?__ классом, а класс Beta – __?__ классом.

  2. Наследование предполагает возможность __?__, что экономит время разработки и способствует использованию проверенного и высококачественного программного обеспечения.

  3. Объект __?__ класса можно рассматривать как объект соответствующего ему __?__ класса.

  4. Для преобразования типа указателя базового класса в тип производного класса, должно быть использовано __?__, потому что компилятор считает такую операцию опасной.

  5. Существуют три спецификатора доступа к элементу: __?__, __?__ и __?__. Какие функции они выполняют?

  6. При порождении класса от базового класса открытым наследованием открытые элементы базового класса становятся __?__ элементами производного класса, а защищенные элементы базового класса становятся __?__ элементами производного класса.

  7. При порождении класса от базового класса защищенным наследованием открытые элементы базового класса становятся __?__ элементами производного класса, а защищенные элементы базового класса становятся __?__ элементами производного класса.

  8. Отношение между классами "содержит" представляет __?__, а отношение "является" представляет __?__.

  9. Использование наследования и полиморфизма помогает исключить логику __?__.

Лабораторная работа 7

Классы библиотеки Qt: элементы виджета.

Цель работы: отработка умений и навыков использования библиотеки Qt для формирования элементов виджета.

Теория.

Классы интерфейса (см. лек. oop_lek7.pdf)

Задание.

  1. Создать пустой виджет с заголовком "MyWidget", который не перекрывается другими окнами;

  2. Скопировать файл /usr/local/share/wall в рабочую папку;

  3. Создать окно с красным фоном размером (x, y). В окне расположить рисунок с координатами (a, b), размером (c, d);

  4. Создать скрин-шот;

  5. Дополнить код программы возможностью изменения вида курсора при его движении над картинкой;

  6. Создать полосы прокрутки в окне виджета;

  7. Создать скрин-шот.

В отчете представить конечный код программы с подробными комментариями и скрин-шотами приложений.

Варианты

a

b

c

d

x

y

курсор

1.

10

10

100

100

300

300

UpArrowCursor

2.

15

15

150

150

300

300

CrossCursor

3.

20

20

200

200

300

300

WaitCursor

4.

10

15

100

150

300

300

IbeamCursor

5.

10

20

100

200

300

300

PointingHandCursor

6.

15

10

150

100

300

300

ForbiddenCursor

7.

15

20

150

200

300

300

WhatsThisCursor

8.

20

10

200

100

300

300

SizeVerCursor

9.

20

15

200

150

300

300

SizeHorCursor

10.

30

30

50

50

300

300

SizeAllCursor

11.

30

50

100

200

200

300

CrossCursor

12.

80

20

150

50

300

200

ForbiddenCursor

Комментарий.

Для создания компонента QLabel необходимо подключить соответствующую библиотеку. Элемент надписи можно создать так:

  1. QLabel lbl = new QLabel(“Hello”);

Для указания цвета компонента используют метод setStyleSheet

  1. lbl->setStyleSheet("background-color: red;"

"font: 14px 'Courier New';");

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]