|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Выбор классов |
|
C/C++ - Выбор классов
|
Новый участник Сообщения: 16 |
Здравствуйте!
Моя проблема не связана с написанием кода. Мне нужен совет - какие классы нужно создать (предметная область - автомобилизм и грузоперевозки), дабы в будущем реализовать на них наследование (в т.ч. множественное), полиморфизм и т.п.(все возможные отношения) Ещё некие контейнерные классы. Почему спрашиваю, а не придумаю их сам. Дел в том, что ООП я почти вообще не знаю. Сейчас вот изучаю, а классы нужно придумать заранее, для диаграмм (требования курсовой). Но у меня есть опасения, что придумав какой-то класс, я не смогу на нём реализовать какое-то отношение (иерархия классов). Извините за путаность и неточность в высказываниях. Два класса даны: авто и грузовик. класс Vehicle, что содержит в себе такие элементы (точнее будет содержать): - поле «скорость» int Speed; - поле «вес» int Mass; - метод получение веса int GetMass(); - метод остановки void Stop(); (швидкість=0); - конструктор с параметрами Vehicle(int Speed, int Mass). от класса Vehicle наследуется класс Truck, что содержит в себе такие элементы: -поле «вместимость» int Capacity; -поле «вес груза» int Cargo; -конструктор с параметрами Truck(int Speed, int Mass, int Capacity); -метод «загрузить груз» int Load(int Mass); (если успешно, то возвращает 0, иначе -1); -метод «выгрузить груз» int UnLoad(); (возвращает вес груза и устанавливает его в 0). Для каждого из классов должна быть предусмотрена возможность подсчета количества объектов, существующих в текущий момент в программе. Заранее спасибо. надеюсь на помощь, т.к. диаграмму нужно сдать уже завтра ![]() С уважением. |
|
Отправлено: 08:23, 03-03-2011 |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать вы забыли написать зачем все это нужно, какая перед вами задача. Ибо классы пишутся под задачи. А так вдруг вам нужно будет посчитать количество шайб 12 размера у всех автомобилей только в двигателе а у вас в классе такой переменной нет. А вообще лучше как сделать - написать/нарисовать блок-схему программы и определиться, какие значения вам нужны,- вот их то и помещайте в классы, объявляйте еще гдето и т.п.
определиться с наследованием можно точно также - есть скажем класс-родитель машина у которой есть показатели скажем скорость движения, расход топлива, топлива в баке, количество дверей и т.д. далее думаете - а что вас интересует более детально. Ага - двигатель, пусть тогда это будет отдельный класс, который будет объявлен переменной в классе "машина", ну и в двигателе соответственно предусмотрено там обороты, объем движка и т.д. что интересует. Создадим класс-наследник "Лада-калина", родитель "машина" и добавим к нему функции ломаться, неработать габариты, переменные какиенить... так что тут мона извращаться пока фантазия не кончится. Определитесь что вам нужно и пишите под это классы. |
Отправлено: 18:01, 03-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Цитата Beyound:
Это задача по курсовому проекту(1 курс) и на примере классов нужно показать работоспособность классов и работу всех этих отношений. Формулировка более чем расплывчатая, понимаю.) Но в задании, увы, точно не сказано как это делать. А с учётом того что С++ я почти не знаю - я в растеряности. Всё это нужно пока всего лишь для UML-диаграмм, но потом то, что я там "нарисую" надо будет закодить. У меня есть опасения, что я не смогу это сделать - поэтому и прошу помощи. Так что блок-схема отпадает. А за быстрый совет спасибо ещё раз ![]() |
|
Отправлено: 19:38, 03-03-2011 | #3 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать В качестве контейнеров можно было бы использовать шаблоны из std, но если вам надо их реализовать самому, можно поступить так:
class ConteinerVehicle { private: Vehicle vehicles[MAX_COUNT]; int Count; public: int GetCount(); Vehicle GetVehicle(int i); void PutVehicle(Vehicle& data); } конечно можно объявить поля как public и работать с ними как с обычными переменными, но считается что лучше их скрыть и объявить методы для доступа к полям. Тем более что у вас курсовая работа) Теоретически вы можете помещать в этот контейнер и производные классы, правда как вы будете с ними работать?))) ![]() аналогично можно объявить контейнер для любого класса но лучше использовать шаблоны, вот пример: template<class T> class Conteiner { private: T items[MAX_COUNT]; int Count; public: int GetCount(); T GetItem(int i); void PutItem(T& data); } |
------- Отправлено: 10:11, 05-03-2011 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Наследование и иерархия классов | Wwe2012 | Программирование и базы данных | 4 | 08-02-2011 14:30 | |
C/C++ - Возникла непонятка с виртуальными методами классов | Oleg_SK | Программирование и базы данных | 5 | 12-06-2010 09:35 | |
C/C++ - Порядок построения классов | pva | Программирование и базы данных | 13 | 23-03-2009 14:36 | |
[решено] Разукрашивание сайтов по-своему, подменой CSS и Классов | hasherfrog | Вебмастеру | 16 | 20-10-2006 01:21 | |
Reverse ingineering классов (обратно UML-диаграмме) | djogik | Программирование и базы данных | 1 | 12-01-2005 21:29 |
|