
- •Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Сибирский государственный университет телекоммуникаций и информатики»
- •Введение
- •Лабораторная работа №1 Создание и использование динамических массивов
- •Лабораторная работа №2 Использование динамических структур данных (список, стек, очередь)
- •Лабораторная работа №3 Принцип инкапсуляции. Описание объектного типа.
- •Лабораторная работа №4 Принцип наследования. Создание иерархии классов.
- •Прямоугольник эллипс ромб треугольник
- •Лабораторная работа №5 Принцип полиморфизма. Использование виртуальных методов.
- •Лабораторная работа №6 Использование динамических объектов.
- •Лабораторная работа №7 Разработка программы «Магазин».
- •Лабораторная работа №2
- •Рекомендации
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
Лабораторная работа №2 Использование динамических структур данных (список, стек, очередь)
ЦЕЛЬ РАБОТЫ: Изучить принципы работы со сложными структурами данных.
ОСНОВНЫЕ СВЕДЕНИЯ
Линейный список – последовательность однородных элементов линейно связанных между собой указателями. Существуют частные случаи списка:
Стек – элементы добавляются и удаляются с вершины головы списка LIFO.
Очередь – элементы добавляются в конец, а удаляются с начала списка FIFO.
Рассмотрим подробнее процесс работы со стеком. Пусть переменная pHead – указатель головы стека. Указатель Next содержит адрес следующего элемента стека.
1) Формирование
Next
Data
pHead
pHead
= New pLE
Null pHead →Next Null
Next
1)
p = New pLE
2)
p→Next = pHead
3) pHead = p
2
)
Удаление
Next
Data
pHead
p
x
1)x = pHead→Data
2)p = pHead
3)pHead = pHead→Next
4)delete ( p )
3) Просмотр
p = pHead
while (p! = Null){
… ;
p = p→Next;
}
Очереди
1
pHead
pTail
p
pTail →Next = p;
pTail = p;
2 ) Удаление
Next
Data
p
x
1)x = pHead→Data
2)p = pHead
3)pHead = pHead→Next
4)delete ( p )
ЗАДАНИЕ
Задание 1 написать процедуры и функции для работы со списком:
Добавление элемента после к-ого элемента списка
Удаление из списка к-ого элемента
Подсчет числа элементов в списке
Перемещение р-ого элемента списка после к-ого элемента
С помощью этих процедур и функций создать список следующим образом. Включать в список полные квадраты из одномерного массива целых чисел (типа byte). Удалить повторяющиеся элементы списка. Определить длину полученного списка.
Задание 2 написать программу, которая визуально демонстрирует работу стека и очереди. Длина стека и очереди ограничена 10 элементами.
КОНТРОЛЬНЫЕ ВОПРОСЫ
Привести примеры программ, когда рационально использовать стек и очередь.
Что уступает по скорости поиска элемента массив или список?
Лабораторная работа №3 Принцип инкапсуляции. Описание объектного типа.
ЦЕЛЬ РАБОТЫ: Изучить принципы работы со сложными структурами данных.
ОСНОВНЫЕ СВЕДЕНИЯ
Одним из важнейших механизмов объектно-ориентированного программирования является инкапсуляция ‑ языковая конструкция, способствующая объединению данных с методами (или другими функциями), обрабатывающими эти данные. Также к инкапсуляции относится механизм ограничения доступа к определённым компонентам объекта. Рассмотрим следующий пример.
class Animal {
public:
// данные и методы этого раздела будут открыты для всех
int coords[2];
void run();
private:
// данные и методы этого раздела будут открыты только для // методов данного класса.
int color;
void Kill();
};
В рассмотренном примере класс Animal инкапсулирует свойство color и метод Kill, предоставляя внешний интерфейс run и coords.
Модификаторы доступа используются для ограничения области видимости переменных. Существуют следующие модификаторы.
Модификатор доступа |
Область видимости элементов раздела |
||
Из внешних функций |
Из методов наследуемых классов |
Из методов самого класса |
|
public |
Да |
Да |
Да |
protected |
Нет |
Да |
Да |
private |
Нет |
Нет |
Да |
ЗАДАНИЕ
Задание 1.описать класс tpoint, инкапсулирующий основные свойства и методы точки на плоскости. Создать массив из 100 точек. Нарисовать точки случайным образом случайным цветом на экране. Добавить методы движения точек:
Прямолинейное движение с отражением от стенок экрана.
Случайное движение с отражением.
Задание 2. Описание класса оформить в отдельном модуле. Сделать защиту полей класса (т.е. использование полей через методы).
КОНТРОЛЬНЫЕ ВОПРОСЫ
Привести примеры ситуаций, когда необходимо применять ограничение области видимости элементов класса.
Какой режим доступа устанавливается по умолчанию?