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

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

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

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

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

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

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

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

Пример. Предположим тема задания следующая - разработать систему классов для описания объектов строений/домов улиц (элементные объекты) и объектов типа улица, содержащих в себе элементные объекты (дома). Улица - это контейнерный объект. Задачи, для которых разрабатывается система классов, заданы выше. Для домов целесообразно выделить свойства создания дома (построение), удаления дома (снос дома), изменения свойств дома (установка признаков необходимости ремонта, числа жителей и т.д.). Для улиц возможные операции: добавление и удаление домов, переименование улицы, поверка признака ремонта улицы и домов на улице. Предположим, что нужно предусмотреть операции для контейнерного объекта: добавления строений, переименования улиц, сноса строений, печати списка домов, добавления строений и т.д. Более детально это расшифровано ниже, включая и раскрытие понятий предметной области:

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

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

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

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

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

  6. Уже сейчас, можно придумать название для классов этих объектов: дом Home, а улица – Street ( Англоязычные названия используются для требований языков программирования. Они в переводе должны соответствовать содержанию объекта). Так как это описание классов на языке программирования, то мы должны давать названия латиницей. Лучше эти названия дать осмысленно.

  7. В качестве технологических классов можно выделить классы: список (List) и элемент списка (listElement) и базовые абстрактные классы (по заданию ДЗ).

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

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

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

  2. Номер дома символьный – символьная переменная (char *Home_Number), потребуется, так как дома часто имеют различные индексы в номере (Например: “Дом 5а-стр.2”).

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

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

Д
иаграмма классов в нашем случае может иметь следующий вид:

В ней представлены следующие стандартные классы: CObject , CObArray (по варианту группы). Собственные классы ДЗ: AbstrHome , Home, Street, AbstrStreet. Между классами показаны связи: сплошная стрелка – наследование (от базового к производному) и накопления пунктирная стрелка.

Таблицы с описанием классов домов могут выглядеть примерно так:

Класс домов - Home

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

Базовые классы класса Home: AbstrHome

Свойства класса Home

п/п

Содержание свойства

Тип данных и название

Примечание

Символьный номер дома

char *Home_Number;

Номер дома числовой

int iHome;

Число этажей в доме

int EtagCount;

Число жителей в доме

int MenCount ;

Тип дома

HomeType TypeHome ;

Требуется ли ремонт дома

BOOL HomeRemont ;

Число квартир в доме

int NumbApartament;

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

п/п

Содержание метода

Тип метода

Прототип метода

Примечание

Создание дома без параметров

конструктор (конст.)

Home();

Построение пустого дома

Создание дома по типу другого

конст.

Home( Home & H) ;

Построение

Создание дома по типу другого

конст.

Home( Home * pH);

Построение

Создание дома с симв. номером

конст.

Home(const char *HomName, const char *Number);

Построение

Создание дома с симв. И числовымномерами

конст.

Home(const char *HomName, const char *Number, int Numb) ;

Построение

Создание дома со всеми параметрами

конст.

Home(const char *HomName, const char *Number, int Numb, int Etag, int Men=0,HomeType Type = fast,int Apart=0)

Построение

Удаление дома

Деструктор

~Home()

Снос дома

Изменить имя дома

Метод

void setName(const char *HomName , const char *Number=NULL);

Получить имя дома

Метод

const char *getName();

Получить номер дома

Метод

const char *getNumb();

Получить числовой номер дома

Метод

int getNo();

Получить параметры дома

Метод

void getParam(int & iH, int & Etag ,int & Men ,HomeType & Type, int & Apart );

Установить параметры дома

Метод

void setParam(int iH, int Etag ,int Men ,HomeType Type, int Apart );

Установить все параметры дома

Метод

void setAllParam(const char *HomName , const char *Number, int iH, int Etag , int Men ,HomeType Type, int Apart , BOOL rem = false);

Оператор присваивания

Оператор =

Home operator =(Home & H );

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

Сложение двух домов

Оператор +

friend Home & operator +(Home & H1 , Home & H2);

Дружественная функция

Виртуальные методы класса Home

Получить тип класса

Виртуальный метод

virtual int classType();

Получить имя класса

Виртуальный метод

virtual char *className();

Распечатать параметры дома

Виртуальный метод

Virtual void printOn (ostream & out);

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