|
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
|
||||||||||||||||||||||||||
Класс домов и класс улиц для учета поступлений квартплаты. Массив26.04.2013, 00:28. Показов 2823. Ответов 9
Метки нет (Все метки)
Задание:
вырезано Файл StdAfx.h Кликните здесь для просмотра всего текста
Файл Home.h Кликните здесь для просмотра всего текста
Файл Home.cpp Кликните здесь для просмотра всего текста
Файл Street.h Кликните здесь для просмотра всего текста
Файл Street.cpp Кликните здесь для просмотра всего текста
Основная проблема - это массив. Растолкуйте плиз что надо добавить и переделать.. Добавлено через 1 час 30 минут Задание: Кликните здесь для просмотра всего текста
Вариант выбирается следующим образом: получить оста-ток от деления № студента по списку в электронном универси-тете на число вариантов, если остаток равен нулю, то берется последний вариант, если остаток не равен нулю, то это есть номер варианта. Первым шагом в выполнении ДЗ должно быть осмысление поставленной задачи, и, в частности, выделение новых типов объектов, для которых нужно разработать обоб-щенные описания объектов в виде классов на языке СИ++. Нужно определить свойства объектов каждого класса и его поведение. Другими словами, необходимо первоначально выделить основные данные для объектов класса и перечень методов/функций, которые эти данные изменяют. На первом этапе это делается на абстрактном уровне. Для начала проектирования является важным определение, так называемой, пред-метной области. Под предметной областью понимается совокупность понятий, объектов реального мира, их свойств, а также что с этими объектами можно делать в программе и делается в жизни. Для одной и той же системы классов может быть выделено много раз-личных предметных областей, которые, в конечном счете, зависят от решаемой (постав-ленной) задачи автоматизации. Поэтому первым шагом нужно задать одну или несколь-ко предметных областей, для которых будет разрабатываться система классов. Пример. Будем рассматривать для пояснения пример разработки системы классов улиц и классов домов, которые могут располагаться на конкретных улицах. Возможны следующие задачи, для которых разрабатывается такая система классов: контролирова-ние оплаты жителями коммунальных услуг, проведение выборов, ремонт строений на улице и самой улицы, ведение паспортного учета жителей (или прописки), оценка числа жителей на улице для планирования социальных услуг, построение карт города с ули-цами (детализация по домам), оценка движения автомобилей по улице и т.д. Из этого перечня задач видно, что от выбора конкретной задачи существенно зависят свойства будущих объектов и набор операций (методов), которые над этими объектами преду-сматриваются. Определим, для примера, предметную область так: учет числа жителей на улице и оценка необходимости ремонта строений улицы. Далее для каждого объекта предметной области, на содержательном уровне, нужно более детально задать перечень свойств (данных) и возможных операций над этими свойствами. Пример. Например, свойства для дома: номер дома, этажность дома, число жите-лей в доме, признак ремонта, тип строения и т.д. Операции для дома: установка числа жителей, изменение типа дома, установка или сброс признака необходимости ремонта дома. Для улицы можно выделить свойства: название улицы, тип улицы, число домов на улице, число жителей, признаки ремонта улицы и т.д. Далее целесообразно проанализировать предметную область и поставленную зада-чу и определить необходимость дополнительных классов для реализации. Эти классы могут быть технологическими (вспомогательными) и содержательными. Технологиче-ские классы могут быть выделены, например, для реализации контейнеров элементных объектов (списки, массивы, множества и т.д.) и для выполнения других функций реше-ния задачи. Эти классы не имеют явных аналогов в предметной области и выделяются на основе опыта программиста. Дополнительные содержательные классы могут потре-боваться для комплексного решения задачи. Например, Для нашего случая это могут быть: класс городов (при построении карт), класс планов ремонта улиц (в ремонтной задаче), классы бюджетов оплаты жилья (для контроля оплаты квартир) и т.д. Более важным является определение перечня возможных операций над объектами. Не всегда удается сразу определить его полностью: он наращивается и видоизменяется в процессе проектирования и реализации программной системы. Пример. Предположим тема задания следующая - разработать систему классов для описания объектов строений/домов улиц (элементные объекты) и объектов типа улица, содержащих в себе элементные объекты (дома). Улица - это контейнерный объект. Зада-чи, для которых разрабатывается система классов, заданы выше. Для домов целесообраз-но выделить свойства создания дома (построение), удаления дома (снос дома), изменения свойств дома (установка признаков необходимости ремонта, числа жителей и т.д.). Для улиц возможные операции: добавление и удаление домов, переименование улицы, по-верка признака ремонта улицы и домов на улице. Предположим, что нужно предусмот-реть операции для контейнерного объекта: добавления строений, переименования улиц, сноса строений, печати списка домов, добавления строений и т.д. Более детально это расшифровано ниже, включая и раскрытие понятий предметной области: 1. В нашем случае, на первом этапе мы должны выделить следующие понятия: дома/строения и улицы, как упорядоченной совокупности домов. 2. Понятие дома - объекта, возможно, будет обладать следующими свойствами: номер дома, этажность дома, число жителей дома, расположение на левой или правой стороне улицы, название дома, характеристика строения и т.д. 3. Понятие улицы – объекта, возможно, будет содержать следующие свойства: название улицы, перечень домов улицы, число проживающих на улице, число домов, район расположения, город улицы и т.д. 4. Поведение дома – набор методов, возможно, будет содержать следующие дей-ствия: создание дома, разрушение дома, чтение параметров, изменение номера дома и название, установка число проживающих, изменение этажности – пере-стройка дома, распечатка дома и т.д. 5. Поведение улицы – набор методов, возможно, будет содержать следующие дей-ствия: создание улицы, удаление улицы, добавление дома на улицу, удаление дома с улицы, новая нумерация домов на улице, распечатка домов улицы, из-менение названия улицы, чтение параметров улицы, объединение двух улиц, деление улиц на две и т.д. 6. Уже сейчас, можно придумать название для классов этих объектов: дом Home, а улица – Street. Так как это описание классов на языке программирования, то мы должны давать названия латиницей. Лучше эти названия дать осмысленно. 7. В качестве технологических классов можно выделить классы: список (List). Пример. В нашем случае материальный объект – дом/строение. Контейнерный объ-ект улица, как совокупность домов. На первом этапе необходимо очень внимательно на понятийном уровне продумать смысл каждого свойства и каждого действия над выде-ленными типами объектов. Ниже приведены некоторые свойства классов с описание содержания: 1. Номер дома порядковый – целочисленная переменная (int HomeNumber), а операции по изменению номера дома и чтению этих параметров (SetHome-Number и GetHomeNumber) и т.д. Придуманные обозначения желательно по-местить в таблицу, в которой будут перечислены все понятия их свойства и ме-тоды работы с данными объекта, их названия и типы. 2. Номер дома символьный – символьная переменная (char *Home_Number), по-требуется, так как дома часто имеют различные индексы в номере (Например: “Дом 5а-стр.2”). 3. Название улицы – символьный массив (char NameStreet[30]) или указатель на имя (char * pNameStreet). Для добавления дома на улицу придумаем метод (AddHome), а для удаления дома с улицы (DeleteHome). И т.д. Придуманные обозначения желательно поместить в таблицу, в которой будут перечислены понятия/методы, их названия и типы. Реализация контейнерных классов В каждом задании на ДЗ требуется создать минимум один контейнерный класс. Контейнерные классы – это такие классы, на основе которых создаются объекты, вклю-чающие в себя другие объекты (отношение накопления). Контейнерные классы могут быть упорядоченными (массивы и списки) и неупорядоченными (множества). Для реа-лизации контейнерных классов студенты могут выбрать один из подходов: • Использование стандартных (библиотечных) классов типа список или массив, а соб-ственный контейнерный класс наследовать от них. • Создание собственных списков в контейнерном классе задания (например, в классе улиц) и реализация в них всех операций над списками. Менее универсальный вари-ант. • Создание собственных отдельных классов типа список и массив, с дальнейшим наследованием контейнерных классов задания от них. Более универсальный вари-ант. Некоторые особенности выполнения ДЗ При выполнении задания должны быть учтены следующие требования. В этом разделе даются также методические указания для реализации задания. 1. Для классов объектов явно определяются и разрабатываются: конструкторы (не ме-нее двух для каждого класса) и деструкторы (для каждого класса); Пример. Конструкторы могут с первоначальным заданием параметров или нет, напри-мер, с заданием названия улицы и т.д. 2. В каждом классе помимо конструкторов и деструкторов должны быть определены не менее четырех методов (функций членов класса) и не менее четырех свойств (дан-ных класса); Пример. Методы для улиц могут быть такими: добавление дома, удаление дома, распе-чатки домов улицы, нумерация домов, сложение улиц, деление улиц и т.д. Например, деление улицы на две может интерпретироваться так: первые N домов переносятся на "улицу Горького", а остальные на "Тверскую". Т.е., другими словами, из одного объекта мы получаем два других объекта с определенными свойствами. Разрабатывая такую опе-рацию нужно продумать вопросы: где создаются новые объекты, как они заполняться, уничтожается ли исходный объект и т.д. 3. Один из разрабатываемых классов должен быть контейнерного типа (массив, спи-сок, множество и т.д.), в нем должны быть определены операции добавления, удале-ния и распечатки из контейнера. Пример. В контейнерном классе улица предусматриваются операции добавления домов, их удаления, печати всех домов улицы и т.д. 4. В одном классе по выбору, в зависимости от варианта, определяется как минимум одна перегружаемая операция (обязательная операция, обозначенная знаком "+" ). Пример. В нашем случае лучше определить операцию сложения двух улиц или опера-цию добавления дома на улицу. В первом случае это может выглядеть так: Оператор присваивания -Street3 = Street1+ Street2; а во втором просто выражение присваивания – Street1+Home1;. 5. Должен быть разработан, описан в отчете и представлен демонстрационный (тесто-вый) пример, иллюстрирующий работу всех составляющих разработанной системы классов (свойств и методов/функций членов), который является основой для сдачи домашнего задания; Пример. В демонстрационном примере должны быть показано использование всех клас-сов, на основе определения объектов и работу всех методов этих классов. Например, для классов улиц: создание улиц статическое и динамическое через операцию new, уничто-жение улиц через операцию delete, добавление домов на улицу, их удаление, распечатку домов, слияние улиц и т.д. 6. Описания классов должны быть вынесены в отдельные файлы (*.h). При этом необ-ходимо исключить повторное включение описаний в исходный текст. Пример. Например, с помощью переменных этапа компиляции (define __STREET_H): #if !defined( __STREET_H ) …… Основной текст файла #endif // 7. Обязательным является перегрузка операции вывода (<<) в стандартный поток COUT для предметного класса.
0
|
||||||||||||||||||||||||||
| 26.04.2013, 00:28 | |
|
Ответы с готовыми решениями:
9
Класс для учета стоунов и фунтов Класс: Разработать абстрактный класс класс Point для задания координаты... Класс Bill для учета стоимости разговоров |
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||
| 26.04.2013, 13:15 | ||
|
Надо добавить класс -- список. Вложить список строений в класс улицу.
0
|
||
|
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
|
|
| 26.04.2013, 13:31 [ТС] | |
|
lemegeton, нет, у меня массив
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||||||||||||||||
| 26.04.2013, 18:41 | ||||||||||||||||||
|
Какие еще отличия? Добавлено через 2 часа 36 минут Вы печально забили отвечать на мой вопрос, но не постеснялись написать в личку. Ну, разделять классы на заголовок и тело вы умеете сами, поэтому я этого делать не буду. Мне лень.Именовать методы, классы и свойства как в методичке мне тоже лень, да и никто на это смотреть не будет. Давайте есть слона по-частям. Первый класс, сущность "здание" у вас есть. Я взял на себя смелость его немного переписать "под себя", чтобы проще было. Вывод тоже заточен "под меня", можете исправить как вам нравится. Кликните здесь для просмотра всего текста
Едем дальше по методичке. Если вам нужен более "навороченый" контейнер, позволяющий хранить что угодно, можно взять стандартный std::vector или любой понравившийся велосипед с форума. Значит сущность на основе массива, хранящая здания (и только здания). Кликните здесь для просмотра всего текста
Добавлено через 3 минуты Теперь самая мякота. Композитный класс улицы, включающий в себя сущность-список домов. Тоже сразу со вспомогательной функцией и оператором вывода на экран. В общем-то обычный класс, у которого есть объект buildings, класса, описанного выше. Методы "контейнера" класс улицы подменяет своими, осмысленными. Кликните здесь для просмотра всего текста
0
|
||||||||||||||||||
|
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
|
|
| 26.04.2013, 18:43 [ТС] | |
|
lemegeton, спасибо! Надеюсь, что понял
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 26.04.2013, 18:44 | |
|
Всё? Дальше не надо? С операторами самостоятельно? )
0
|
|
|
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
|
||||||
| 26.04.2013, 19:11 [ТС] | ||||||
|
lemegeton, если будут проблемы, то обращусь.
И можете объяснить, как работает этот класс? Кликните здесь для просмотра всего текста
0
|
||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 26.04.2013, 19:18 | |
|
Это класс. Он ничего не делает без контекста. Он только что-то хранит. Конкретно -- другие объекты и методы работы с ними.
Переформулируйте, пожалуйста, вопрос.
0
|
|
|
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
|
||||||
| 26.04.2013, 19:21 [ТС] | ||||||
|
Кликните здесь для просмотра всего текста
Я не понял, как работает эта функция и почему в методах агрегатах используются циклы
0
|
||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||
| 27.04.2013, 00:49 | |||
![]() В этих методах агрегируется информация по всем вложенным объектам контейнера. Поэтому и циклы.
0
|
|||
| 27.04.2013, 00:49 | |
|
Помогаю со студенческими работами здесь
10
Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? Создать Класс Coins (монеты). Класс сохраняет массив из 3 монет ... Класс: Создать класс, объектом которого будет являться двумерный массив размерностью n x m. Реализовать класс ModelWindow, добавив поле для курсора, используя для представления поля класс Cursor
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|