
- •Оглавление
- •Всё остальное – стр. № 33.
- •Цель работы
- •Основные сведения
- •Варианты заданий
- •В следующих вариантах рекомендуется создавать 2 класса и объекты или указатели на один из них включать в другой (агрегация классов)
- •Контрольные вопросы
- •Цель работы
- •Основные сведения
- •Варианты заданий
- •Контрольные вопросы
- •Цель работы.
- •Основные сведения
- •Варианты заданий
- •Контрольные вопросы
- •Цель работы.
- •Основные сведения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Классы и объекты в с# Цель работы
- •Основные сведения
- •Контрольные вопросы
- •Требования к отчетам
- •Литература
- •Приложения
- •1.Создание консольного приложения
Определить класс «Дата», в котором производится ввод календарной даты, определение соответствующего дате дня недели, прибавления к дате целой константы и т.п. операции.
Определить класс », в котором производятся операции над обыкновенными дробями (сравнение, сложение, умножение, деление, сокращение).
Определить класс римских цифр. Реализовать алгоритм перевода из десятичной системы и обратно и операции сложения и вычитания.
Определить класс “Точка на шаровой поверхности”, объекты которого задаются в полярной системе координат (широта, долгота, радиус-вектор). Реализовать операцию определения длины линии на поверхности шара между двумя точками.
Определить класс прямоугольников со сторонами, параллельными осям координат. Операции: перемещение, изменение размеров, построение прямоугольника, являющегося пересечением двух других.
Определить класс многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов, с операциями вычисления значения многочлена для заданного аргумента, сложения и вычитания многочленов.
Определить класс «Множество» c методами: добавление элементов, пересечение и объединение множеств. Множество реализовать на основе массива в динамической памяти или списка. Определить функцию ввода элементов с проверкой вводимых данных .
Определить класс вещественных матриц с методами, реализующими сложение и вычитание матриц, транспонирования, вычисления детерминанта. Воспользоваться массивами, создающимися с помощью оператора new.
Написать класс для работы с С-строкой ( завершающим символом строки является '\0'). Поля класcа: указатель на char – хранит адрес динамически выделенной памяти для размещения символов строки, значение типа int для хранения длины строки в байтах. Конструкторы: без параметров, копирования, создающий строку заданной длины. Методы: получение длины строки, очистка строки, сравнение и выделение подстроки, соединения 2 – х строк (перегрузить операцию +). Не использовать соответствующие библиотечные функции.
Реализовать на основе списка класс «Стек» с операциями инициализации, добавления и извлечения элементов согласно соответствующей дисциплине обслуживания.
Реализовать на основе списка класс «Очередь» с операциями инициализации, добавления и извлечения элементов согласно соответствующей дисциплине обслуживания.
Описать класс «Предметный указатель». Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, изменяется от одного до десяти. Предусмотреть возможность формирования указателя с клавиатуры, вывода указателя, вывода номеров страниц для заданного слова, удаления элемента из указателя.
Определить класс « Аэропорт», полями которого являются взлетно-посадочная полоса (ВПП), самолет и пассажирский терминал. Реализовать методы, осуществляющую следующую последовательность действий: а) ВПП занята самолетом, собирающимся взлетать, в терминале находятся пассажиры этого рейса; б) пассажиры перемещаются в самолет, терминал освобождается; в) самолет взлетает, ВПП освобождается.
В следующих вариантах рекомендуется создавать 2 класса и объекты или указатели на один из них включать в другой (агрегация классов)
Определить классы «Автостоянка» и «Автомобиль». Для каждого автомобиля во втором классе описывают госномер, марку, цвет и признак присутствия на стоянке. В первый класс вводится массив автомобилей, которые могут присутствовать на стоянке. Определить в первом классе методы заезда автомобиля на стоянку, его выезда, подтверждения присутствия автомобиля на стоянке по госномеру, вывода списка присутствующих и уехавших автомобилей.
Определить классы «Карта» и «Колода карт». Поля первого – масть и достоинство. Второй содержит массив объектов первого и методы инициализации, раздачи карт на заданное число игроков равными порциями, перемешивание колоды.
Определить классы «Автобусный маршрут» и «Автобус». Во втором задаются госномер, вместимость автобуса и признаки полный /пустой, неподвижен/двигается. Методы этого класса: заполнение автобуса пассажирами, освобождение его, переход к движению, остановка. Объект этого класса вводится в первый класс; наряду с ним в этом классе определяется массив названий остановок конкретного маршрута. В классе необходимо реализовать следующую последовательность действий: заполнение автобуса, перемещение его от одной остановки к другой, освобождение.
Определить классы «Книга» и «Библиотека». Поля книги: ФИО автора(ов), название, год издания, издательcтво. Библиотека содержит массив книг, размер которого является параметром. Массив инициализируется 10-ю реальными книгами. Предусмотреть возможность поиска книги по какому-либо признаку (например, по автору или по году издания), сортировки книг по разным полям. Разработать метод добавления книг в библиотеку с увеличением размера массива.
Определить классы «Студент» и «Студенческая группа». Поля первого: ФИО, дата рождения, адрес, учится/отчислен. Группа содержит массив студентов, размер которого является параметром. Предусмотреть возможность поиска студента по какому-либо признаку, сортировки по разным полям, изменения значения поля учится/отчислен, выдачи списка учащихся и отчисленных студентов.
Контрольные вопросы
1. Для чего служит конструктор ? Может ли в классе быть несколько конструкторов? Чем должны отличаться различные конструкторы одного и того же класса?
2. Для чего служит деструктор класса? Имеет ли деструктор параметры? В каком случае в тело деструктора включается оператор delete?
3. Какие сообщения и в какой последовательности будут выведены на монитор?
class Alpha {
public:
int x, y;
Alpha(){cout<<"Constructor #1"<<endl;}
Alpha(int _m){cout<<"Constructor #2"<<endl; x=y=_m; }
~Alpha(){cout<<"Destructor "<<endl;}
};
void main()
{
Alpha a1;
a1.x=1;
Alpha *a2;
a2=new Alpha;
Alpha a3[2];
Alpha a4(4);
Alpha a5=a1;
Alpha a6(a1);
cout<<a5.x<<endl<<a6.x<<endl;
}
Определен следующий класс.
class Alhpa { public: int abc; };
Запишите обращения к компоненте abc с использованием точки и стрелки.
5. Каким образом компилятор отличает вызов стандартной операции от вызова перегруженной? Вспомните язык С и его операции <<, >> и запишите результат второго выражения
int a=4;
cout<<(a<<3);
6. Найдите ошибку в следующем фрагменте программы:
class X{
/*…*/
public:
friend void print();
/*…*/
};
void X::print(){cout<</*….*/}
Лабораторная работа 2. Наследование классов в С++