Вариант индивидуального задания выбирается по последней цифре зачетки.

Допускается использовать проекты с оконным интерфейсом или консольные приложения.

Разделы 1-5 выполняются последовательно.

Раздел 6 не связан с предыдущими.

Возможно выполнение только части заданий (влияет на оценку на экзамене).

Контрольная работа оформляется в MS Word. Для каждого задания должны быть представлены диаграммы классов, программный код и скриншоты результатов.

Раздел 1. Проектирование класса (2 балла).

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

Индивидуальные варианты.

Класс «Студент». Хранить информацию о номере группы, номере студента в группе, фамилия, имя, отчество, оценки по 5 предметам (названия предметов придумайте сами). Реализовать методы для определения среднего балла и для отображения всех полей класса. Класс «Автомобиль». Хранить информацию о марке и модели, объеме двигателя, максимальном объеме и наполненности бензобака, о текущей скорости и расходе топлива (л/100 км). Реализовать методы для определения максимального пробега на оставшемся топливе и для отображения всех полей класса. Класс «Аэропорт». Хранить информацию о названии аэропорта, количестве взлетных полос, времени, необходимом на взлет/посадку, количестве работающих диспетчеров, количестве самолетов, находящихся в состоянии взлет/посадка. Реализовать методы для определения к-ва самолетов, которые может еще принять аэропорт в течение часа и для отображения всех полей класса. Класс «Танкер». Хранить информацию о названии танкера, объеме танков (3 танка, у всех различные объемы), наполненности каждого танка, скорости заполнения танков (одна скорость для всех). Реализовать методы для определения времени, необходимого для полного заполнения танкера, и для отображения всех полей класса. Класс «Гостиница». Хранить информацию о названии гостиницы, количестве 1-местных и 2-местных номеров, количестве проживающих в каждом виде номера, стоимости каждого вида номера. Реализовать методы для определения выручки гостиницы за день и для отображения всех полей класса. Класс «Грузоперевозки». Хранить информацию о названии фирмы, количестве фур, грузоподъемности одной фуры, средней скорости перевозки груза, стоимости перевозки 1 тонны, массе перевезенных грузов. Реализовать методы для определения процентной выручки от максимально возможной и для отображения всех полей класса. Класс «Интернет-оператор». Хранить информацию о названии оператора, 2-тарифах (с фиксированной ставкой и почасовой), стоимости (для первого тарифа – за месяц, для второго – за час), числе абонентов для первого тарифа и суммарном к-ве часов для второго. Реализовать методы для определения выручки за месяц и для отображения всех полей класса. Класс «Магазин». Хранить информацию о названии магазина, суммарной выручке, количестве продавцов, средней зарплате, стоимости закупки, накладных расходах. Реализовать методы для определения премии (чистая прибыль за месяц/ к-во продавцов) и для отображения всех полей класса. Класс «Шоколад». Хранить информацию о названии и составе шоколада (какао-порошок, какао-масло, сахар, молоко на 100г). Рассчитать энергетическую ценность 100 г продукта, учитывая, что состав жиров соответственно 3%, 72%, 0%, 2%; белков – 15%, 10%, 0%, 22%; углеводов – 10%, 33%, 67%, 14%). При этом каждый грамм жиров содержит 9,3 ккал, белков 4,1 ккал, углеводов – 7,2 ккал). Класс «Зарплата». Хранить информацию о фамилии сотрудника, его должности, окладе, дополнительной ставке (от 0 до 0,5), общем стаже работы, к-ве часов почасовой оплаты, к-ве дней, оплаченных по больничному листу, к-ве рабочих дней в месяце). Зарплата рассчитывается следующим образом: полная ставка * оклад если стаж >10 лет +10%, если > 15 лет +20% почасовая – 200000 за час больничные оплачиваются фиксированно 100000 в день

Реализовать методы для определения зарплаты и для отображения всех полей класса.

НЕ нашли? Не то? Что вы ищете?

Раздел 2. Ассоциации классов (1 балл).


Доработать предыдущее задание, разработав еще несколько классов.

В каждом классе предусмотреть поля (2-4), свойства (2-4) и методы (1-2).

Между парами классов спроектировать отношения ­– композицию (1) и агрегацию (1).

Продемонстрировать работу классов.

Факультет – Кафедра – Студент. Автомобиль – Двигатель – Гараж. Аэропорт – Взлетная полоса – Самолет. Танкер – Танк – Порт. Гостиница – Номер – Клиент. Фирма – Фура – Грузоперевозка. Интернет-оператор – Тариф – Абонент. Магазин – Продавцы – Товарооборот. Кондитерская фабрика – Шоколад – Состав. Отдел – Сотрудник – Зарплата.

Раздел 3. Наследование классов (1 балл).


На основании предложенной предметной области спроектировать 2-3 класса, используя механизм наследования. Каждый класс имеет поля (protected), свойства и методы.

Спроектировать UML-диаграммы классов.

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

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

Создать класс, закрытый для наследования.

Пример наследования классов:

Пожалуйста, не наследуйте кафедру от студента и самолет от аэропорта (☺).

Наследник – это класс, имеющий те же компоненты, что и базовый + что-то еще (в полях, методах или свойствах).

Раздел 4. Проектирование интерфейсов (1 балл).


На основании предметной области одной из предыдущих работ спроектировать несколько (2-3) интерфейсов. Спроектировать классы (2) и структуру (1), базирующиеся на одном и на нескольких интерфейсах. В одном из классов использовать перечисление.

Интерфейс – это некий функционал, которым должны обладать различные классы, не обязательно связанные наследованием.

Например, Селедка – наследник класса Рыба. Она умеет плавать.

Утка – наследник класса Птица. Она умеет летать. Но плавать она также умеет.

Можно описать интерфейс Плавание. Он может включать, например поля – скорость, дальность, глубина и методы – плыть прямо, повернуть, нырнуть, утонуть.

Его смогут наследовать и рыбы, и некоторые птицы. Но реализация интерфейса у каждого класса будет своя.

Раздел 5. Проектирование событий (2 балла).


На основании предметной области одной из предыдущих работ спроектировать несколько (не менее 2) классов с событиями. Объявить несколько объектов каждого класса. Назначить различные обработчики событий различным объектам. Продемонстрировать работу классов.

Мы должны видеть, что разные объекты одного класса по-разному реагируют на события.

Раздел 6. Перегрузка функций, делегаты (2 балла).

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

Перегрузить для вашего класса:

    все математические операции (+ - * / ++ --), имеющие смысл для вашего класса; операции сравнения (< > != ==); операции true и false; операции приведения типов.

Спроектировать несколько методов (2-3) с одинаковой сигнатурой для вывода на экран объекта класса. Это не обязательно методы проектируемого класса (возможно – класса Program).

Для спроектированных методов описать делегат.

Описать структуру: объект класса, делегат (вывод структуры на экран).

Создать массив таких структур (5 элементов). Заполнить массив.

Вывести на экран все элементы массива (используя соответствующие делегаты).

Создать групповой делегат. Продемонстрировать его работу.

Индивидуальные задания:

1. Класс рациональных чисел – числа, представленные в виде несократимой дроби m/n (нахождение НОД)

2. Класс комплексных чисел (нахождение модуля)

3. Класс 3D векторов (нахождение длины вектора)

4. Класс одномерных массивов (нахождение среднего арифметического)

5. Класс квадратных уравнений (нахождение корня)

6. Класс квадратных матриц (нахождение детерминанта)

7. Класс Color – RGB (Перевод цвета в любую другую палитру) – демонстрировать получаемые цвета на форме.