МУ_ДЗ_2014 (Методические указания к лабораторным работам)

2018-01-11СтудИзба

Описание файла

Файл "МУ_ДЗ_2014" внутри архива находится в папке "Методические указания к лабораторным работам". Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.

Онлайн просмотр документа "МУ_ДЗ_2014"

Текст из документа "МУ_ДЗ_2014"

284


Московский государственный технический университет им. Н.Э.Баумана

_________________________________________________________________

Большаков С.А. , к.т.н., доц. Каф. ИУ5

Методические указания для выполнения ДЗ/КЛР

по дисциплине Программирование на основе классов и шаблонов кафедры ИУ5

Москва - 2014

________________________________________________________________

ОГЛАВЛЕНИЕ

1. Введение 3

2. Цель и задачи КЛР/ДЗ 4

3. Классы, наследование и перегрузка операций 6

4. Методические пояснения к темам ДЗ 62

5. Обязательные требования к ПО КЛР/ДЗ 75

6. Требования к документации КЛР/ДЗ 82

7. Порядок выполнения КЛР/ДЗ 86

8. Варианты КЛР/ДЗ 93

9. Программная документация на КЛР/ДЗ 98

10. Вопросы для самопроверки 131

11. Литература для ДЗ 133

Приложение 1 Образцы документов 134

Техническое задание 135

Описание применения 140

Техническое описание 146

Программа и методика испытаний 159

Руководство системного программиста 176

Руководство пользователя 181

Описание тестового примера 197

Приложение 2 Титульный лист 225

Приложение 3 Образцы программ 227

Пример программ для ДЗ/КЛР (массив и список) 228

Модуль - DZ.H (для массивов и списков) 228

Модуль - DZ_Class.H (для массивов и списков) 228

Модуль - DZ_LIB.H (для массивов) 230

Модуль - DZ_Array.cpp (для массивов) 241

Модуль - DZ_LIB.H (для списков) 255

Модуль - DZ_List.cpp (для списков) 266

1 Введение

Данные методические указания предназначены для студентов кафедры ИУ5 обучающихся во 2-м семестре и изучающих дисциплину “Программирование на основе классов и шаблонов”. Для выполнения комплексной лабораторной работы (КЛР) или домашнего задания (ДЗ) по курсу необходим определенный набор базовых знаний и умений, но, к сожалению, не все студенты ими обладают. Я надеюсь, что для большинства студентов в этот материал не будет содержать много новых сведений по курсу: основные знания они должны быть получены на лекциях и при самостоятельной проработке литературы. С другой стороны я надеюсь, что для части студентов данная информация будет, несомненно, полезна и они с успехом будут использовать данный материал для выполнения и защиты лабораторных работ и домашнего задания по дисциплине.

В данных методических указаниях рассмотрены основные теоретические вопросы, необходимые студентам для выполнения задания, шаги выполнения задания, рассмотрен пример выполнения задания и требования к заданию. Кроме этого, рассмотрены требования к документации для выполнения задания и даны примеры ее оформления.

2 Цель и задачи КЛР/ДЗ

Целями КЛР (домашнего задания) является: освоение технологии объектно-ориентированного проектирования программного обеспечения; самостоятельная разработка системы классов; получение навыков работы с системами программирования, ориентированными на объектный подход, в частности с системой программирования на языке С++. Получение навыков разработки и оформления технической документации для программ ориентированных на объекты. Домашнее задание выполняется студентами в учебные часы самостоятельной работы (17 академических часов) и цикла специальных лабораторных работ (ЛР12 – ЛР15). Методические указания по ЛР КЛР размещены на сайте дисциплины.

Темы заданий

Каждый студент выполняет КЛР (домашнее задание) индивидуально (варианты тем заданий представлены в отдельном файле). Кроме этого для каждой из групп предъявляются специальные требования. Студенту назначается тема задания в соответствии с вариантом по журналу группы. Сильные студенты могут выполнить домашние задания с учетом дополнительных требований. Варианты заданий студентов и варианты групп представлены на сайте в отдельном файле. По договоренности с преподавателем вариант может быть изменен на любой, соответствующий тематике задания, но не входящий в список вариантов групп (утвердить новую тему можно не позднее 4-й недели текущего семестра). Эту тему можно выбрать из списка тем с дополнительными требованиями или придумать самому. Степень сложности таких новых тем должен соответствовать степени сложности тем с дополнительными требованиями.

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

3 Классы, наследование и перегрузка операций

В объектно-ориентированном программировании центральное место занимает понятие класса. Классы служат своеобразным эталоном (шаблоном) для создания объектов. Объекты являются основными конструктивными элементами (“строительными блоками”), из которых строиться программа.

4 Класс и его составляющие

Класс это новый тип данных, который объявлен пользователем. Класс описывает новое понятие предметной области для программирования задач на основе объектов. Класс включает описания переменных класса (“членов-данных класса”) и методов класса (“членов функций класса”). Члены-данные класса копируются в каждом новом объекте и составляют его сущность. Методы класса (функции) описаны один раз и служат для работы с членами-данными класса. Иногда говорят, что методы класса определяют поведение объектов.

Формально описание класса имеет вид (здесь приводиться упрощенное описание):

class <имя класса >: <список базовых классов> {

< тело класса>

};

Таким образом, описание класса состоит из заголовка описания и тела класса. Более детально формальное описание класса выглядит так:

class <имя класса > <список базовых классов> {

public:

< описания членов класса>

private:

< описания членов класса>

protected:

< описания членов класса>

< повторение предыдущих описаний в любом порядке>

};

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

<список базовых классов> ::= <пусто> | :<[ private | public | protected ] базовый класс> … [ , <[ private | public | protected ] базовый класс> ] …

5 Члены-данные класса

Члены-данные класса(свойства объектов класса) – это любые описание переменных за исключением описания переменных класса, описываемого в данном случае (однако, можно описывать указатели и ссылки на типы этого класса). Например, класс, содержащий только данные:

class Student {

public:

char Name[14]; // Фамилия студента

int kurs; // Курс обучения

bool pol; // true - women, false – men

private:

float Stipen; // Размер стипендии

};

6 Методы класса

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

class Student {

public:

char Name[14]; // Фамилия студента

int GetKurs();

void Print(){ // Метод описан в теле класса

cout<< "Фамилия: " << Name <<endl;

cout<< "Курс: " << kurs <<endl; };

private:

int kurs; // Курс обучения

};

// Внешнее описание метода класса

int Student::GetKurs(){ return kurs;};

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

7 Описание объектов класса

После описания классов мы можем производить описания объектов данного класса наравне с описаниями стандартных типов. Объект - это переменная данного типа класса (экземпляр класса). Можно описывать массивы объектов, указатели и ссылки на объекты. Примеры описания объектов и массивов:

Student Petrov; // Описание объекта типа Student

Student Group22[30]; // Описание массива объектов типа Student в 30 элементов

Student * pStud; // Описание указателя на тип Student

Student & rStud = Petrov; // Описание ссылки на тип Student и инициализация

pStud = new Student; // Динамическое создание объекта типа Student

8 Конструкторы объектов

Для создания объектов класса используются специальные методы, которые называются конструкторами. Эти методы используются для вычисления начальных значений членов данных объекта, выделения дополнительной динамической памяти под данные объекта и других действий. Все конструкторы возвращают по-умолчанию тип ссылка на объект (Student &), поэтому в их описаниях и прототипах тип возврата не задается. Название функции конструктора совпадает с именем класса. Конструкторов может быть много, но они должны отличаться числом и типами параметров (перегрузка функций). По умолчанию в каждом класса существует конструктор без параметров. Он не содержит операторов. Если такой конструктор описан явно, то используется пользовательский конструктор. Примеры описания конструкторов:

class Student {

public:

Student(){ kurs = 1; Stipen = 1500.0f; pol = true;};

Student(int k, float s){ kurs = k; Stipen = s; };

Student(int k, float s, bool p){ kurs = k; Stipen = s; pol = p;};

…};

Конструкторы целесообразно размещать в области public, так как только в этом случае доступно внешнее описание объектов. Примеры описаний с параметрами:

Student Petrov; // Описание объекта типа Student без параметров

Student Ivaniv(2 , 2000.0f); // Описание объекта типа Student с двумя параметрами

Student Sidorov(5, 3000.0f, true); // Описание объекта типа Student с тремя параметрами

Student * pS = new Student (5, 3000.0f, true); // Динамический вызов конструктора

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

9 Деструкторы объектов

При удалении объектов также могут быть использованы специальные методы класса. Они называются деструкторами. В деструкторе параметров не задается, поэтому можно объявить только один деструктор. По умолчанию предусмотрен деструктор, который удаляет объект и используется в том случае, когда явно деструктор не объявлен. В деструкторе может освобождаться память, выделенная динамически, или производиться другие действия, связанные с удалением данного объекта (например, изменяться счетчики объектов данного типа). Название функции деструктора также совпадает с именем класса, но ему предшествует специальный знак тильда (“~”). Пример описания деструктора:

class Student {

public:

~Student(){ GlobalCount--;};

…};

Если объект создан динамически, то выполняется вызов деструктора явно при выполнении операции delete. Пример:

Student * pS = new Student (5, 3000.0f, true); // Динамический вызов конструктора

delete pS;

В других случаях (при явном описании объекта), деструкторы объектов вызываются при выходе из блока (составного оператора) в котором эти объекты описаны. Можно считать, что они вызываются при прохождении закрывающей скобки блока (“}”). Деструкторы глобальных объектов вызываются после завершения функции main, а конструкторы вызываются до ее начала!

10 Работа с данными и методами объектов вне класса

Доступ к данным класса в методах класса выполняется непосредственно, то есть мы можем использовать имена переменных без дополнительной ссылки на объект. Вне класса для доступа нужно использовать имя объекта (либо ссылка) или указатель на объект. Рассмотрим примеры для класса Student, описанного выше:

Student Sidorov(5, 3000.0f, true); // Описание объекта типа Student с тремя параметрами

Student * pS = new Student (5, 3000.0f, true); // Указатель на динамический объект

Student & rS = *new Student (5, 3000.0f, true); // Ссылка на динамический объект

Student Group22[30]; // Описание массива объектов типа Student в 30 элементов

cout << "Name: " << Sidorov.Name << endl; //Квалицированная ссылка

cout << "Name: " << pS->Name << endl; // Указатель

cout << "Name: " << rS.Name << endl; // Динамическая ссылка

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5136
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее