ООП_ЛабРаб1

Методические указания к работам №1, №2 и №3

==============================================================================================================================================================================

Лабораторная работа №1

КЛАССЫ И ОБЪЕКТЫ. СВОЙСТВА И ИНДЕКСАТОРЫ

Авторы Бондарев В.М., Черепанова Ю.Ю., Ляпота В.

ВВЕДЕНИЕ

При наличии заданий на лабораторные работы разного уровня сложности следует решить только одну задачу максимально-возможного уровня сложности. При наличии варрантов выбор номера индивидуального задания студентами должен осуществляться в соответствии с последней цифрой номера студента в списке журнала группы.

Конечная оценка за лабораторную работу будет зависеть от качества выполнения программы и защиты лабораторной работы в целом. При защите студент должен ответить на поставленные вопросы по тематике работы и выполнить дополнительное задание за ограниченное время.

При выполнении лабораторной работы студенту предоставляется одна попытка защиты. При неудовлетворительном защите вторая попытка предоставляется на следующем занятии или на консультации.

Без потери баллов лабораторная работа может быть сдана на текущей лабораторной работе, или на следующей. В случае несоблюдения сроков сдачи начисляются штрафные баллы.

Для выполнения лабораторных работ требуется наличие:

- ОС Windows XP/7/8;

- платформа .Net Framework 4.0/4.5/5.0;

- среда визуального проектирования MS Visual Studio 2013/2012/2010.

1.1 Цель работи

Научиться создавать классы, использовать поля, методы, конструкторы, свойства, индексаторы.

1.2 Методические указания по организации самостоятельной работы студентов

Для подготовки к лабораторной работе необходимо повторить лекционный материал и ознакомиться с рекомендованной литературой. Следует обратить внимание на следующие вопросы: классы, члены класса, методы, параметры методов, конструкторы, деструкторы, свойства, индексаторы.

1.3 Порядок выполнения работы и методические указания по ее выполнению

Разработать класс, который должен содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства. Методы и свойства должны обеспечивать непротиворечивый, полный, минимальный и удобный интерфейс класса. Проверяйте допустимость значений параметров перед выполнением кода методов.

Задания для классов приведены в таблице 1.1.

Таблица 1.1 – Задания для индивидуального

На оценку «Удовлетворительно» решить задание 1, 2

На оценку «Хорошо» решить задание 3,4, хотя бы в одном классе переопределить любую операцию.

На оценку «Отлично» решить задание 4, 5, переопределить 3 операции в любом классе.

Во время защиты необходимо объяснить решение, ответить на вопросы (в том числе по теории). При защите на оценку «Хорошо» или «Отлично» может быть видано дополнительное практическое задание.

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

Отчет по всем лабораторным работам оформляется в виде каталога (имя каталога – номер группы, фамилия), в котором содержатся подкаталоги для каждой лабораторной работы. В каждом таком подкаталоге должно быть написано задание и решение выполненной работы. Решение может быть в виде полного проекта лабораторной работы или в виде документа (doc, txt), куда скопированы исходные тексты программ. Задание может быть в виде комментария в исходном тексте программы, или в отдельном документе, или в записано в начале текстового документа с решением.

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

РЕКОМЕНДОВАНА ЛІТЕРАТУРА

1 Бондарев, В.М. Объектно-ориентированное программирование на С# [Текст] : учеб. пособ. /В.М. Бондарев. – Х. : Компания СМИТ, 2009. – 224 с. - ISBN 978-966-2028-34-8

2 Шилдт Г. C# 4.0.: Полное руководство [Текст]: пер. с англ.- М.: Вильямс, 2011 - 1056 с. - ISBN 978-5-8459-1684-6

3 Троелсен, Э. Язык программирования C# 5.0 и платформа .NET 4.5, 6-е изд. [Текст]: пер. с англ.- М.: Вильямс, 2013 - 1312 с. - ISBN 978-5-8459-1814-7, 978-1-43-024233-8

4 Бондарєв В.М. Конспект лекцій з дисципліни "Основи програмування" [Текст]: учеб. пособ. / В.М. Бондарев.– Харків: ХНУРЕ, 2011 р. – 128 с.

5 Майо Дж. Самоучитель Microsoft Visual Studio 2010 [Текст] / Дж. Майо.- СПб.: Питер, 2011 - 464 с. - ISBN 978-5-9775-0609-0

6 Албахари Д. C# 5.0. Справочник. Полное описание языка [Текст] / Д. Албахари, Б. Албахари. : пер. с англ.- М.: Вильямс, 2013 - 1008 с. - ISBN 978-5-8459-1819-2, 978-1-4493-2010-2

7 Буч Гради. Объектно-ориентированный анализ и проектирование с примерами приложений [Текст] / Г. Буч, Р. А. Максимчук, М. У. Энгл, Б. Дж. Янг, Дж. Коналлен, К. А. Хьюстон. : пер. с англ - Вильямс, 2008 г. – 720 с.

8 «Программирование на языке С#: разработка консольных приложений» авторов: Кудриной Е.В., Огневой М.В., Портенко М.С., (каталог «ThedevelopmentofconsoleapplicationsinCOgneva», для просмотра открыть файл index.htm в каталоге)

==============================================================================================================================================================================

Задание на лабораторную работу № 2 (методичка в процессе разработки)

Лабораторная работа №2

Разработать систему классов для геометрических фигур

    1. Определите систему классов:

(выбор варианта – остаток от деления номера по журналу на 7, при остатке 0 брать 7 вариант)

Вариант 1:

«Фигура», «Точка», «Окружность» «Круг закрашенный», «Эллипс», «Конус», «Усеченный конус»

Вариант 2.

«Фигура», «Точка» ( или «Отрезок»), «Треугольник», «Заштрихованный треугольник», «Правильный треугольник», «Прямоугольный треугольник», «Тетраэдр»

Вариант 3.

«Фигура», «Прямоугольник», «Квадрат», «Прямоугольный параллелепипед», «Куб», «Заштрихованный прямоугольник», «Пирамида четырехугольная».

Вариант 4

«Фигура», «Отрезок», «Параллелограмм», «Ромб», «Трапеция», «Параллелепипед», «Ромб закрашенный»

Вариант 5

«Фигура», «Точка», «Правильный многоугольник», «Многоугольник», «Многоугольник закрашенный», «Пирамида», «Призма»

Вариант 6

«Фигура», «Окружность», «Кольцо», «Кольцо закрашенное (или заштрихованное)», «Цилиндр», «Тор», «Сфера»

Вариант 7(0)

«Фигура», «Дуга», «Сектор», «Сегмент», «Круг», «Шар», «Шаровой слой»

Можно для удобства добавлять дополнительные классы, например: «Объемная фигура» и т.д.

_________

* на «тройку» достаточно первые четыре класса

    1. Определите в этих классах методы, которые:

• перемещают фигуру по плоскости (на заданное расстояние или в нужную позицию);

• масштабируют фигуру;

• вычисляют и возвращают площадь фигуры, периметр;

• возвращают строку символов, отражающую имя класса и состояние объекта (его основные характеристики);

• рисуют фигуру в консоли или на форме (для объемных фигур достаточно проекции, например, изометрической или диметрической);

• и т.п.

_________

* на «тройку» достаточно реализовать три метода

    1. Определите в ваших классах свойства и индексаторы (хотя бы в некоторых классах ).

    1. Классы должны быть связаны отношением наследования (там, где это имеет смысл)

Некоторые классы необходимо сделать абстрактными, а некоторые методы — виртуальными

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

Максимально исключите дублирование кода (поля, методы, реализация).

    1. Объявите класс «Изображение», имеющий свое положение на плоскости и размер, и владеющий коллекцией различных фигур.

Элементами коллекции имеет смысл сделать базовый полиморфный класс (таким образом, в одной коллекции можно будет сохранить все фигуры изображения)

    1. В классе «Изображение» определите методы:

• возвращающие суммарную площадь фигур, суммарный периметр;

• сдвигающий все фигуры внутри изображения;

• передвигающий изображение;

• масштабирующий изображения (изменяющий его размер вместе с фигурами с сохранением пропорций);

• возвращающий полное состояние изображения в виде строки;

• объединяющий два изображения;

• рисующий все фигуры в консоли или на форме;

• сохраняющий и загружающий изображения из файла;

• и т.п.

_________

* на «тройку» достаточно 3 методов, или может не быть класса «Изображение»

** На «пятерку» необходимо выполнить дополнительное задание повышенной сложности, выданное преподавателем во время защиты лабораторной работы.

Некоторые примеры заданий:

- проверка пересечения каждой фигуры с каждой (придумать разумный подход)

- подсчет общей площади, занимаемой фигурами (не просто сумма, а еще учет общих площадей, их нужно считать конечно только один раз)

- удобный редактор изображений, позволяющий добавлять, менять фигуры, сохранять изображение и прочее

- и т.п.

====================================================================

Задание на лабораторную работу № 3 (методичка в процессе разработки)

Лабораторная работа №3

Разработать приложение, конструирующее содержимое своего окна

Общие положения:

    • Приложение должно загружать данные о своем содержимом из текстового файла

    • Элементы управления желательно создавать динамически (но, в принципе, допускается разместить их на форме заранее)

      • Варианты заданий на оценку «удовлетворительно»:

        1. Первый

          1. • Во входном файле содержатся типы элементов управления и их заголовки

          2. • Положение элементов выбирается автоматически случайным образом.

          3. • Реализовать поддержку следующих элементов управления: Button, TextBox, CheckBox, RadioButton

          4. • Информация об элементах управления заносится в список ListBox

        2. Второй

          1. • Во входном файле содержатся типы элементов управления и их положение

          2. • Заголовок элементов управления соответствует их порядковому номеру.

          3. • Реализовать поддержку следующих элементов управления: Label, LinkedLabel, ComboBox, MaskedTextBox

          4. • Информация об элементах управления заносится в список CheckedListBox

        1. Третий

          1. • Во входном файле содержится одно число N — количество элементов управления

          2. • Разместить на форме N различных компонентов со случайной позицией и заголовком

          3. • Реализовать поддержку следующих элементов управления: MaskedTextBox, CheckBox, RadioButton, LinkedLabel

          4. • Информацию об элементах управления сохранить в файле

          5. Задание на оценку «хорошо»:

    1. Выбрать произвольную тематику приложения.

      1. Это может быть либо каркас-пустышка, либо реально работающее приложение.

      2. Примеры:

      3. • простенькое игровое приложение,

      4. • музыкальный проигрыватель,

      5. • записная книжка,

      6. • калькулятор,

      7. • небольшая база данных

      8. • и т.п.

    2. Разработать формат файла, отражающий параметры основных элементов управления приложения:

      1. • расположение и размеры,

      2. • заголовок (если необходимо),

      3. • шрифт и цвет,

      4. • дополнительные параметры оформления,

      5. • и прочее.

      6. Примеры существующих форматов:

      7. • обычный txt (каждая новая строка несет в себе некую информацию)

      8. • ini (больше подходит для сохранения параметров-настроек приложения)

      9. • yaml (очень удобный человекочитаемый формат файла)

      10. • dfm (специальный формат хранения форм в Delphi/C++Builder)

      11. • xml (позволяет удобно сохранять древовидные структуры данных)

      12. • двоичный (бинарный) файл

      13. • и т.п.

    1. Файл, содержащий в себе правила отображения/оформления приложения будем называть «скином» приложения (другие варианты названий: «обложка», «шкурка», «схема оформления», ...)

    2. Реализовать возможность загрузки файла «скина» и применение соответствующих параметров к вашему приложению (желательно «на лету»).

      1. Нужный скин можно выбирать как из некоего списка (должен автоматически формироваться на основании содержимого папки со скинами), так и с помощью диалогового окна открытия произвольного файла.

      2. Задание на оценку «отлично»:

    • Добавить в приложение на оценку «хорошо» отдельное приложение-редактор «скинов» для основного приложения

    • Более предпочтителен вариант с визуальным отображением и редактированием «скинов»