DZ_2KYRS (Готовое ДЗ неизвестного варианта (1))

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

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

Файл "DZ_2KYRS" внутри архива находится в следующих папках: Готовое ДЗ неизвестного варианта (1), [ООП - ДЗ] хрень. Документ из архива "Готовое ДЗ неизвестного варианта (1)", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.

Онлайн просмотр документа "DZ_2KYRS"

Текст из документа "DZ_2KYRS"

6

ООП – Большаков С.А. 2009/2010 2-й курс

Методические указания к выполнению комплексной лабораторной работы (КЛР) ПО КУРСУ

"Объектно-ориентированное программирование"

2-й курс 3 семестр.

  1. Цель КЛР (домашнего задания):

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

  1. Темы заданий

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

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

(Пример. Предположим тема задания следующая - разработать систему классов для описания строений/домов улиц и класса улиц. Предусмотреть операции: добавления строений, переименования улиц, сноса строений, печати списка домов, добавления строений и т.д.

  1. В нашем случае, на первом этапе мы должны выделить следующие понятия: дома/строения и улицы, как упорядоченной совокупности домов.

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

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

  4. Поведение дома – набор методов, возможно, будет содержать следующие действия: создание дома, разрушение дома, чтение параметров, изменение номера дома и название, установка число проживающих, изменение этажности – перестройка дома, распечатка дома и т.д.

  5. Поведение улицы – набор методов, возможно, будет содержать следующие действия: создание улицы, удаление улицы, добавление дома на улицу, удаление дома с улицы, новая нумерация домов на улице, распечатка домов улицы, изменение названия улицы, чтение параметров улицы, объединение двух улиц, деление улиц на две и т.д.

  6. Уже сейчас, можно придумать название для классов этих объектов: дом House, а улица – Street. Так как это описание на языке, то мы должны давать названия латиницей.

)

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

(Пример. В нашем случае материальный объект – дом/строение. Контейнерный объект улица, как совокупность домов. На первом этапе необходимо очень внимательно на понятийном уровне продумать смысл каждого свойства и каждого действия над выделенными типами объектов. Кроме того, как опытные разработчика, уже сейчас Вы должны "догадываться" во что в программе будут выливаться выделенные свойства и методы. К примеру:

  1. Номер дома – целочисленная переменная (int HouseNumber), а операции по изменению номера дома и чтению этих параметров (SetHouseNumber и GetHouseNumber). И т.д. Придуманные обозначения желательно поместить в таблицу, в которой будут перечислены понятия/методы, их названия и типы.

  2. Название улицы – символьный массив (char NameStreet[30]) или указатель на имя (char * pNameStreet). Для добавления дома на улицу придумаем метод (AddHouse), а для удаления дома с улицы (DeleteHouse). И т.д. Придуманные обозначения желательно поместить в таблицу, в которой будут перечислены понятия/методы, их названия и типы.

)

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

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

)

На втором этапе необходимо запрограммировать классы на языке С++ (все используют систему программирования BC++ 3.1). Отладить программы описания классов (обязательно использование отладчика), разработав для этого тестовый, демонстрационный пример, который иллюстрирует работу всех методов всех разработанных классов, а также использование всех свойств/атрибутов объектов всех разработанных классов.

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

  • использование языковых средств четвертого поколения ( 4GL) для разработки классов ( типа SAL SQLWindows GUPTA ).

Перечень вариантов заданий представлен в файле приложении к методическим указаниям КЛР (в отдельном файле). В качестве прототипов для выбора тематики КЛР можно рассматривать любые классы современных систем программирования СИ++( BCPP, MVC, DELPHI и других), однако все классы при выполнении домашнего задания разрабатываются самостоятельно: запрещено наследование новых классов от стандартных классов систем программирования.

Замечание : В некоторых темах предметом разработки могут быть новые классы или система классов, которые сходны со стандартными. В этом случае имена и назначение свойств и методов классов должны быть уникальными и они должны быть придуманы студентами самостоятельно. Контроль структуры класса, свойств и методов и их названий выполняет преподаватель. Если при именовании классов и разработке их содержания обнаружено совпадения со стандартными классами, то домашнее задание к защите не допускается.

2. Требования к выполнению домашнему заданию

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

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

(Пример. Два класса дом и улица уже есть. Третий класс может быть определен как абстрактный класс для строений или улиц, для того чтобы иметь возможность развития классов: строения могут быть не только жилыми домами, но и магазинами, учреждениями и т.д.

)

  1. Для классов объектов явно определяются и разрабатываются: конструкторы (не менее двух для каждого класса) и деструктор (для каждого класса);

(Пример. Конструкторы могут с первоначальным заданием параметров или нет, например, с заданием названия улицы и т.д.

)

  1. В каждом классе помимо конструкторов и деструкторов должно быть определено не менее пяти методов (функций членов класса) и не менее пяти свойств (данных класса);

(Пример. Методы для улиц могут быть такими: добавление дома, удаление дома, распечатки домов улицы, нумерация домов, сложение улиц, деление улиц и т.д. Например, деление улицы на две может интерпретироваться так: первые N домов переносятся на "улицу Горького", а остальные на "Тверскую". Т.е., другими словами, из одного объекта мы получаем два других объекта с определенными свойствами. Разрабатывая такую операцию нужно продумать вопросы: где создаются новые объекты, как они заполняться, уничтожается ли исходный объект и т.д.

)

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

(Пример. Наследование, если это не определяются по-другому характером задачи желательно сделать от абстрактного класса.

)

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

(Пример. Чистые виртуальные функции задаются в абстрактном классе и переопределяются в производных классах. Например, функция печати объекта на cout.

)

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

(Пример. В контейнерном классе улица предусматриваются операции добавления домов, их удаления, печати всех домов улицы и т.д.

)

  1. В одном классе по выбору, в зависимости от варианта, определяется как минимум одна перегружаемая операция (обязательная операция, обозначенная знаком "+" ).

(Пример. В нашем случае лучше определить операцию сложения двух улиц или операцию добавления дома на улицу. В первом случае это может выглядеть так: @Street3= Street1+ Street2;", а во втором – "Street1+House1;".

)

  1. Должен быть разработан, описан в отчете и представлен демонстрационный (тестовый) пример, иллюстрирующий работу всех составляющих разработанной системы классов (свойств и методов/функций членов), который является основой для сдачи домашнего задания (в соответствии с ПИМ);

(Пример. В демонстрационном примере должны быть показано использование всех классов, на основе определения объектов и работу всех методов этих классов. Например, для классов улиц: создание улиц статическое и динамическое через операцию new, уничтожение улиц через операцию delete, добавление домов на улицу, их удаление, распечатку домов, слияние улиц и т.д.

)

  1. Описания классов должны быть вынесены в отдельные файлы (*.h или *.hpp). При этом необходимо исключить повторное включение описаний в исходный текст.

(Пример. Например, с помощью переменных этапа компиляции (define __STREET_H):

#if !defined( __STREET_H )

#include <Street.h>

#endif //

)

10. ВНИМАНИЕ: Контейнерные классы в домашнем задании должны быть реализованы на основе структур данных типа двунаправленные списки. Задания реализованные на основе массивов приниматься к защите не будут.

11. ВНИМАНИЕ: В домашнем задании должно быть продемонстрировано использование шаблонов (template).

3. Требования к документации по КЛР

Документация по КЛР выполняется студентом индивидуально и должна включать стандартный набор документации на программное изделие (состав и требования к документации соответствуют требованиям 6-го семестра, размещено на сайте):

  1. ТЗ на систему классов, в котором первыми пунктами в ТТ (Технические Требования – 5-й раздел ТЗ) должны стоять собственные требования к разрабатываемой системе классов.

  2. Описание применения системы классов, поясняющее, как и для чего может использоваться Ваша система классов. Возможно

  3. Подробное Техническое описание системы классов. Оно должно включать: диаграммы классов, подробное описание каждого класса. Описание классов должно быть сделано на понятийном уровне (в отдельном разделе) и на техническом уровне, желательно в виде таблиц. Обязательно, кроме подробного, вначале должно быть выделено краткое смысловое описание каждого класса – одной фразой. Например: "класс изображений служить для описания объектов – изображений на экране компьютера в форматах …".

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

  5. Руководство системного программиста должно определять действия системного программиста для установки (удаления) системы классов, проверки правильности установки, требуемые ресурсы для работы и т.д.

  6. Листинг программ системы классов (распечатка всех файлов, включая и заголовочные).

  7. Описание тестового примера (включает подробное описание тестового примера, включая и диаграмму объектов примера и особенности применения разработанных классов.)

  8. Листинг программ и результатов работы тестового примера

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

Замечание: Документы разрабатываются в соответствии с ГОСТ, должны содержать всю необходимую информацию, написаны ясно и конкретно, соответствовать основной цели написания каждого конкретного документа. Документы разрабатываются отдельно, каждый документ сопровождается титульным листом с обязательным указанием варианта, темы и исполнителя (NB – каждый все должен сделать самостоятельно!!!)

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

гр. ИУ5-31 – обязательным требованием является использование дополнительной, перегруженной операций. Операция выполняет удаление объектов для контейнерного класса (использовать знак "-" - минус). (Пример. Удаление дома с улицы).

гр. ИУ5-32 - обязательным является перегрузка операции ввода (>>) из стандартного потока CIN для предметного класса. (Пример. Класс домов).

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