Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ООП.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
712.7 Кб
Скачать

Лабораторная работа №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 = pNext;

}

Очереди

1

pHead

pTail

) Формирование

p

pTail →Next = p;

pTail = p;

2 ) Удаление

Next

Data

pHead

p

x

1)x = pHead→Data

2)p = pHead

3)pHead = pHead→Next

4)delete ( p )

ЗАДАНИЕ

Задание 1 написать процедуры и функции для работы со списком:

  1. Добавление элемента после к-ого элемента списка

  2. Удаление из списка к-ого элемента

  3. Подсчет числа элементов в списке

  4. Перемещение р-ого элемента списка после к-ого элемента

С помощью этих процедур и функций создать список следующим образом. Включать в список полные квадраты из одномерного массива целых чисел (типа byte). Удалить повторяющиеся элементы списка. Определить длину полученного списка.

Задание 2 написать программу, которая визуально демонстрирует работу стека и очереди. Длина стека и очереди ограничена 10 элементами.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Привести примеры программ, когда рационально использовать стек и очередь.

  2. Что уступает по скорости поиска элемента массив или список?

Лабораторная работа №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 точек. Нарисовать точки случайным образом случайным цветом на экране. Добавить методы движения точек:

  1. Прямолинейное движение с отражением от стенок экрана.

  2. Случайное движение с отражением.

Задание 2. Описание класса оформить в отдельном модуле. Сделать защиту полей класса (т.е. использование полей через методы).

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Привести примеры ситуаций, когда необходимо применять ограничение области видимости элементов класса.

  2. Какой режим доступа устанавливается по умолчанию?