МУ_ДЗ_2014 (1079920), страница 10

Файл №1079920 МУ_ДЗ_2014 (Методические указания к лабораторным работам) 10 страницаМУ_ДЗ_2014 (1079920) страница 102018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 10)

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

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

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

  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);

Характеристики

Тип файла
Документ
Размер
2,79 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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