КР_ООП 4семестр. Отчет на два задание. Задание 1. Выполнить задание согласно варианту. Продемонстрировать работу программы с помощью Windows Forms приложения
Скачать 86.5 Kb.
|
КОНТРОЛЬНАЯ РАБОТА ПО ОБЪЕКТНО-ОРИЕНТИРОВАННОМУ ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ C# Номер варианта выбираем по номеру в журнале. При совпадении вариантов обе работы не принимаются. Требования к отчету по контрольной работе (приложение 1). Оформляется один отчет на два задание. Задание №1. Выполнить задание согласно варианту. Продемонстрировать работу программы с помощью Windows Forms приложения. В заданиях требуется описать абстрактный базовый класс и производные от него, создать параметризованную коллекцию объектов производных классов. Обеспечить читабельный вывод значений полей классов на экран. Используя механизм виртуальных методов, продемонстрировать единообразную работу с элементами коллекции. Должна быть обработка исключительных ситуаций. Создать диаграмму классов. Вариант 1 Создать абстрактный класс File, инкапсулирующий в себе методы Open, Close, Seek, Read, Write, GetPosition и GetLength. Создать производные классы MyDataFile1 и MyDataFile2— файлы, содержащие в себе данные некоторого определенного типа MyData1 и MyData2, а также заголовки, облегчающие доступ к этим файлам. Создать класс Folder, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода списка имен и длин файлов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 2 Создать абстрактный класс Point (точка). На его основе создать классы ColoredPoint и Line. На основе класса Line создать класс ColoredLine и класс PolyLine (многоугольник). Все классы должны иметь виртуальные методы установки и получения значений всех координат, а также изменения цвета и получения текущего цвета. Создать класс Picture, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 3 Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, максимальная скорость, год выпуска и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля. Создать класс Garage, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 4 Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle (круг) и Trapezium (трапеция) с возможностью вычисления площади, центра тяжести и периметра. Создать класс Picture, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 5 Создать абстрактный класс Number c виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Integer и Real. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 6 Создать абстрактный класс Body. На его основе реализовать классы Parallelepiped (прямоугольный параллелепипед), Cone (конус) и Ball (шар) с возможностью вычисления площади поверхности и объема. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 7 Создать абстрактный класс Currency для работы с денежными суммами. Определить в нем методы перевода в рубли и вывода на экран. На его основе реализовать классы Dollar, Euro и Pound (фунт стерлингов) с возможностью пересчета в центы и пенсы соответственно. Создать класс Purse (кошелек), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода общей суммы, переведенной в рубли, и суммы по каждой из валют. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 8 Создать абстрактный класс Triangle (треугольник), задав в нем длину двух сторон, угол между ними, методы вычисления площади и периметра. На его основе создать классы, описывающие равносторонний, равнобедренный и прямоугольный треугольники со своими методами вычисления площади и периметра. Создать класс Picture, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и получения суммарной площади. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 9 Создать абстрактный класс Solution (решение) с виртуальными методами вычисления корней уравнения и вывода на экран. На его основе реализовать классы Linear (линейное уравнение) и Square (квадратное уравнение). Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 10 Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции y = f(x) в заданной точке х и вывода результата на экран. На его основе реализовать классы Ellipse, Hiperbola и Parabola. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 11 Создать абстрактный класс Triad (тройка) с виртуальными методами увеличения на 1. На его основе реализовать классы Date (дата) и Time (время). Создать класс Memories, содержащий параметризованную коллекцию пар (дата-время) объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и выборки самого раннего и самого позднего событий. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 12 Описать абстрактный класс Element (элемент логической схемы), задав в нем числовой идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND и OR — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение и сложение соответственно. Создать класс Sсheme (схема), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 13 Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND_NOT и OR_NOT — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение c отрицанием и сложение c отрицанием соответственно. Создать класс Sсheme (схема), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 14 Описать абстрактный класс Trigger (триггер), задав в нем идентификатор и двоичные значения на входах и выходах. На его основе реализовать классы RS и JK, представляющие собой триггеры соответствующего типа. Создать класс Register (регистр), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка, общего сброса и установки значений каждого триггера по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 15 Создать абстрактный класс Progression (прогрессия) с виртуальными методами вычисления заданного элемента и суммы прогрессии. На его основе реализовать классы Linear (арифметическая) и Exponential (геометрическая). Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех прогрессий. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 16 Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Fractional (дробное) и LongLong (длинное целое). В классе Fractional вещественное число представляется в виде двух целых, в которых хранятся целая и дробная часть числа соответственно. В классе LongLong длинное целое число хранится в двух целых полях в виде старшей и младшей части. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 17 Создать абстрактный класс Integer (целое) с символьным идентификатором, виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Decimal (десятичное) и Binary (двоичное). Число представить в виде массива цифр. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода значений и идентификаторов всех объектов списка и вывода общей суммы всех десятичных значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 18 Создать абстрактный класс Sorting (сортировка) с идентификатором последовательности, виртуальными методами сортировки, получения суммы и вывода на экран. На его основе реализовать классы Choice (метод выбора) и Quick (быстрая сортировка). Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода идентификаторов и сумм элементов каждого объекта списка, а также вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 19 Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Money (деньги) и Complex (комплексное число). В классе Money денежная сумма представляется в виде двух целых, в которых хранятся рубли и копейки соответственно. При выводе части числа снабжаются словами «руб.» и «коп.». В классе Complex предусмотреть при выводе символ мнимой части (i). Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Вариант 20 Создать абстрактный класс Worker с полями, задающими фамилию работника, фамилии руководителя и подчиненных и виртуальными методами вывода списка обязанностей и списка подчиненных на экран. На его основе реализовать классы Manager (руководитель проекта), Developer (разработчик) и Coder (младший программист). Создать класс Group (группа), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода всех объектов списка и выборки по фамилии с выводом всего дерева подчиненных. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Задание №2. Выполнить задание согласно варианту. Продемонстрировать работу программы с помощью Windows Forms приложения. В каждом варианте создается каталог и файлы. Все имена спросить у пользователя (используйте диалоговые окна). Допустимо использовать имя по умолчанию, если пользователь ничего не ввел. Для входной и выходной информации из файла предусмотреть различные компоненты (для сравнения). Предусмотреть обработку исключительных ситуаций. Создать объект определенного класса (по вариантам). Сохранить информацию об объекте в бинарный или текстовый файл, затем считать и восстановить в другой объект. Сохранить информацию об объекте используя сериализацию. Восстановить объект. Протестировать на подходящем примере. Вариант 1. Класс "Фотомодель". Поля – имя, возраст, вес, рост, цвет волос (перечисление). Создать метод, сохраняющий всю информацию в отдельный бинарный файл. Имя файла и каталог – параметры метода. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о конструкторах класса вместе с их Hash-кодами. Вариант 2. Класс "Арт-объект". Поля – название, автор, цена, вес, материал (перечисление). Создать метод, сохраняющий всю информацию в отдельный текстовый файл. Имя файла и каталог – параметры метода. Разработать статический метод для класса Program, который выводит всю информацию о переданном объекте (не прорабатывать массивы членов класса). Вариант 3. Класс "Город". Поля – название, дата основания, площадь, к-во жителей, страна (перечисление). Создать метод, переводящий всю информацию в строку. Сохранить объект, созданный в main, в текстовый файл, используя предыдущий метод. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о полях класса вместе с их Hash-кодами. Вариант 4. Класс "Книга". Поля – название, автор, издательство, год выпуска, жанр (перечисление). Создать метод, сохраняющий всю информацию в отдельный бинарный файл. Имя файла и каталог – параметры метода. Разработать статический метод для класса Program, который выводит информацию о переданном классе (не прорабатывать массивы членов класса). Вариант 5. Класс "Автомобиль". Поля – марка, модель, дата выпуска, объем двигателя, цвет (перечисление). Создать метод, сохраняющий всю информацию в отдельный текстовый файл. Имя файла и каталог – параметры метода. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о подключенных интерфейсах вместе с их Hash-кодами. Вариант 6. Класс "Супергерой". Поля – имя, пол, вес, рост, навык (перечисление). Создать метод, переводящий всю информацию в строку. Сохранить объект, созданный в main в текстовый файл, используя предыдущий метод. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о свойствах класса вместе с их Hash-кодами. Вариант 7. Класс "Овощи". Поля – название, категория (перечисление), сорт, цена, дата заготовки. Создать метод, сохраняющий всю информацию в отдельный бинарный файл. Имя файла и каталог – параметры метода. Разработать статический метод для класса Program, который запрашивает у пользователя имя класса и выводит всю информацию о нем (не прорабатывать массивы членов класса). Вариант 8. Класс "Гостиница". Поля – название, адрес, категория (перечисление), к-во звезд, цена за номер. Создать метод, сохраняющий всю информацию в отдельный текстовый файл. Имя файла и каталог – параметры метода. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о методах класса вместе с их Hash-кодами. Вариант 9. Класс "Космический объект". Поля – название, номер по каталогу, категория (перечисление), расстояние до объекта, размер. Создать метод, переводящий всю информацию в строку. Сохранить объект, созданный в main в текстовый файл, используя предыдущий метод. Для своего статического класса разработать метод, который на экран всю информацию о классе (не прорабатывать массивы членов класса). Вариант 10. Класс "Компьютерная игра". Поля – название, жанр (перечисление), популярность, вес, цена. Создать метод, переводящий всю информацию в строку. Сохранить объект, созданный в main в текстовый файл, используя предыдущий метод. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о методах класса вместе с их Hash-кодами. Список литературы. Шилдт, Герберт С# 4.0 Полное руководство. : Пер. с английского. М. – ООО «И.Д. Вильямс», 2011 – 1056 с. : ил. Уотсон, К. Visual С# 2010: полный курс.: Пер. с англ. - М.: ООО "И.Д. Вильяме", 2011. - 960 с. : ил. Троелсен, Эндрю. Язык программирования С# 2010 и платформа .NET 4.0, 5-е изд. : Пер. с англ. — М. : ООО "И.Д. Вильяме", 2011. — 1392 с. : ил. Приложение 1 ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА ПО КОНТРОЛЬНОЙ РАБОТЕ Отчет по контрольной работе сдается в бумажном виде после обязательной регистрации. Преподавателю отправляется в электроном виде. Имя файла отчета «Фамилия_Номер_группы_Номер_варианта». Пример: Иванов_4017412_15.docx Версия редактора Word не менее Word 2010. Общие требования к оформлению текста представлены ниже. Содержание отчета - титульный лист - содержание - задание - исходный код - скриншоты работы приложения - заключение - список использованной литературы Требования к разделам: Титульный лист должен обязательно содержать – фамилию, имя, отчество, номер группы, номер варианта. Исходный код, представленный в отчете, должен обязательно содержать комментарии к ключевым строкам программы (подписать классы, методы). Скриншоты работы приложения должны полностью раскрывать все функциональные возможности разработанного приложения. ОБЩИЕ ТРЕБОВАНИЯ ПО ОФОРМЛЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ Параметры страницы Формат листа – А4 (размер 210 × 290 мм). Перед набором текста настроить параметры Microsoft Word: поля – 20 мм; номер страницы ставится снизу, по центру; ориентация – книжная. Основной текст абзац: первая строка – отступ 1,25 мм, междустрочный интервал – «одинарный», выравнивание – «по ширине»; шрифт – Times New Roman, 14 пт; перенос слов – автоматический; выделять (жирным или курсивом) отдельные слова, словосочетания и предложения следует исходя из важности терминов. ТРЕБОВАНИЯ К ИСХОДНОМУ КОДУ ПРОГРАММ Программа должна быть разработана в Visual Studio 2010-2013 или в SharpDevelop версии 4.3.0 на языке программирования C#, версия .NET 4.0. Программа должна быть скомпилирована и иметь файл с расширением .exe для запуска приложения. Имя архива «Фамилия_Номер_группы_Номер_варианта» Пример: Иванов_25412_15.rar РАБОТЫ, ОФОРМЛЕННЫЕ С НАРУШЕНИЕМ ТРЕБОВАНИЙ, ПРИНЯТЫ НЕ БУДУТ. |