Пример выполнения лабораторной работы

Задание 1

Организация программ с использованием классов

Цель задания

1. Изучение средств языка С++ для определения новых типов данных через механизм классов.

2. Получение навыков в написании программ с использованием классов.

Методические указания

Разработать программу, реализующую абстрактный тип данных, через механизм классов (для демонстрации использовать библиотеки graphics.h и conio.h).

А. Минимальное задание

1. Составить программу с использованием классов для реализации "бегущей" точки из левого верхнего угла экрана в нижний правый угол экрана по строкам. Цвет точки выбирается произвольно. Продемонстрировать работу двух конструкторов: обычного конструктора и конструктора по умолчанию. Сделать выводы.

2.Для классов: class Point {int x,y;

public:

Point (int a, int b) {x=a; y=b; };

…..

};

class Rect {Point lt, rb;

public:

Rect (Point a, Point b):lt(a), rb(b){ };

void draw(void);

};

доопределить соответствующие член-функции таким образом, чтобы, объявив в main-программе объект класса Rect, вызовом функции draw() можно было бы вычертить на экране прямоугольник с указанием заданных размеров с помощью псевдографических символов. Сделать выводы.

Символы псевдографики, требуемые для выполнения задания:

               
 
   
 
   
   
 
   
 
 

 


Требуемые библиотечные функции из conio.h: gotoxy(x,y) и putch(ch).

Б.Основное задание

– Выбрать объект. Объект выбирается согласно варианта.

– Спроектировать класс для программного представления таких объектов.

– Нарисовать его схему в нотации UML.

Варианты основного задания

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

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

3. Создайте класс, реализующий стек символов. Сделайте стек длиной 10символов. Члены класса: стек (массив символов), индекс вершины стека. Обязательны функции-члены класса дляинициализации стека (присваиваетиндексу нулевое значение), помещения значения в стек, выталкивания значения изстека. Продемонстрировать использование класса.

4. Создайте класс, с циклической очередью целых. Сделайте очередь длиной 100 целых. Члены класса: очередь (массив целых чисел), индекс вершины и индекс хвоста. Обязательны функции-члены классадля инициализации очереди (присваивает индексам нулевые значения), помещения значения в очередь, удаления значения из очереди. Продемонстрировать использование класса.

5. Создайте класс для имитации секундомера. Члены класса: переменные типа double для хранения начального и конечного значения времени. Обязательны функции- члены класса для инициализации секундомера (присваивает переменным нулевые значения), для запуска и остановки секундомера, для вывода на экран величины истекшего времени.

6. Определить класс эллипс, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, передвинуть эллипс, изменить радиусы эллипса.

7. Определить класс отрезок, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, передвинуть отрезок, вращать отрезок относительно его середины или описывать окружность одним его концом.

8. Определить класс треугольник, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, передвинуть треугольник, вращать треугольник относительно его вершины, изменить размеры треугольника.

9. Определить класс трапеция, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, закрасить, передвинуть, повернуть трапеции, изменить размеры трапеции.

10. Определить класс ромб, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь возможность пользоваться стандартными функциями рисования. Обязательны функции-члены класса: нарисовать, стереть, закрасить, передвинуть, повернуть ромб, изменить размеры ромба.

В. Дополнительное задание

Варианты ДОПОЛНИТЕЛЬНОГО задания

1. Вектор в трехмерном евклидовом пространстве задан своими полярными координатами. Обязательны функции - члены класса:

· ввод вектора;

· вывод вектора;

· функция, которая возвращает рабочий вектор в декартовых координатах.

Другие функции можно ввести по желанию. Описать класс и продемонстрировать его использование.

2. Угол на плоскости. Обязательные члены класса: величина угла в градусах; функции-члены для ввода и вывода величины угла, перевода величины угла в радианы, нахождения синуса угла. Описать класс и продемонстрировать его использование.

3. Комплексное число, задаваемое своей вещественной и мнимой частями (например, 5 + 3i задается парой ( 5, 3 ) ). Обязательны функции-члены класса для ввода и вывода числа, сложения, произведения двух чисел, а также возведения числа в целую степень. Описать класс и продемонстрировать его использование.

4. Комплексное число, задаваемое своим модулем и углом (например, число 10 * ( cos( p/6) + i * sin( p/6) ) задается парой ( 10, p/6 ) ). Обязательны функции-члены класса для ввода и вывода числа, сложения, произведения двух чисел, а также возведения числа в целую степень. Описать класс и продемонстрировать его использование.

5. Кольцевой буфер емкостью 1024 вещественных чисел. Доступ к элементам буфера – как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления и удаления элемента, определения количества свободного и занятого пространства в буфере. Описать класс и продемонстрировать его использование.

6. Стек вещественных чисел. Обязательны функции-члены класса для добавления и удаления элемента, проверке присутствия указанного элемента, вывода текущих элементов стека. Описать класс и продемонстрировать его использование.

7. Двунаправленный список. Обязательны функции-члены класса для добавления и удаления элемента, проверке присутствия указанного элемента, вывода текущих элементов списка. Описать класс и продемонстрировать его использование.

8. Кольцевой список. Обязательны функции-члены класса для добавления и удаления элемента, проверке присутствия указанного элемента, вывода текущих элементов списка. Описать класс и продемонстрировать его использование.

9. Бинарное дерево. Обязательны функции-члены класса для добавления и удаления элемента, проверке присутствия указанного элемента, вывода текущих элементов дерева. Описать класс и продемонстрировать его использование.

10. Точка на экране в текстовом (или графическом режиме). Должны быть предоставлены возможности:

· высветить точку в определенном месте экрана определенным цветом;

· определить, видима ли точка в данный момент;

· получить координаты точки после поворота отрезка, соединяющего эту точку с началом координат, на заданный угол.

Описать класс и продемонстрировать его использование.

Содержание отчета

  1. Титульный лист (один на все работы)
  2. Цель работы
  3. Постановка задачи (только та часть, которую Вы выполняли)
  4. UML-диаграмма классов
  5. Результаты выполнения программы
  6. Выводы (6 - 10 пунктов) (по каждой работе)
  7. Листинги программных модулей

Выводы НЕ ДОЛЖНЫ иметь вид:

"В ходе лабораторной работы усвоили цель лабораторной работы"

Также не следует переписывать в выводы теорию из книжек. Выводы – это краткое изложение того, что вы усвоили в ходе выполнения лабораторной работы. ВЫВОДЫ СОСТАВЛЯЮТСЯ К КАЖДОЙ ЛАБОРАТОРНОЙ РАБОТЕ!

Пример выполнения лабораторной работы

Постановка задачи

Создать класс, позволяющий работать со строкой символов. Набор данных, описывающий такой объект как символьная строка должен состоять:

Ø собственно строка;

Ø позиция на экране, начиная с которой будет выводиться строка;

Ø видео атрибуты символов (цвета текста и фона).

Функции необходимые для работы со строкой:

Ø ввод строки;

Ø установка координат для дальнейшего вывода строки;

Ø установка видео атрибутов символов;

Ø вывод строки в указанное место.

 

Структурная схема класса(представить в виде UML)

Член-данные   Класс String Член-функции
Собственно строка: str Позиция выдачи строки на экран: x, y Цвет текста и фона: attr Ввод строки: SetStr() Установка координат выдачи строки на экран: SetCoord() Установка цветов текста и фона: SetAttr() Вывод строки на экран: PrintStr()

 

Исходный текст программы

#include <conio.h>

#include <string.h>

class String {