Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tiina
Сообщений: n/a
#1

Создание класса методом GetDescription () - C++

22.11.2011, 10:43. Просмотров 495. Ответов 0
Метки нет (Все метки)

Уважаемые форумчане,
Помогите девушке написать программу.
Условия:

У нас есть три вида транспортных средств: автомобили, тракторы и мопеды. У каждого типа есть свои номер (1=CAR, 2=TRACTOR, 3=MOPED, ...). Создать иерархию классов, в которой представлено каждое транспортное средство.

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

Создайте классам транспортных средств метод GetDescription (), который должен выдавать для каждого типа транспортного средства его характеристики и список частей.

Создайте класс в котором статическим методом можно создавать предварительно обозначенный тип транспортного средства. Класс следит шаблоном завода (Factory Pattern, Factory Method Pattern)

Пример класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ShapeFactory {
 public:
   static Shape *create(int type) {
    switch (type) {
      case CIRCLE:
        return new Circle;
 
      case TRIANGLE:
        return new Triangle;
 
      ...
 
      default:
        return NULL;
    }
  }
Подсказка: У каждого класса транспортных средств должен иметь общий базовый класс (Shape пример кода).

В стране, где транспортные средства производятся, имеется автомобильный налог. Создайте метод для расчета налога, если известно, что он состоит из платы "выбросов" и "дорожного налога":
а) каждый цилиндр должен нести 15 единиц загрязнения.
b) владельцы мопедов освобождаются от уплаты за "выбросы".
в) если у транспортного средства более чем на 2 колеса, то за каждое следующее колесо должны платить 7 единиц дорожного налога.
c) для тракторов дорожный налог в два раза больше.

В тестовой программе создать vector из 33 автомобилей и рассчитать общее налоговое бремя. Допустим, что при этом типы транспортных средств разные.

Классы разместить в модулях. В программе не должны быть "видемых" классов Car, Tractor, Engine и так далее. Иерархия классов в базовом классе (транспортное средство) должен быть виден. Создание модулей обязателен.

d) фабричный метод не должен возвращать НУЛЛ значение (как в примере класса ShapeFactory). Когда завод получает параметр неизвестного типа, кодировать дефектный ответ специальным классом, при котором методы не должны ничего делать (Null Pattern Object).
е) элементы автомобиля, чтобы быть "элегантной", то есть. Например, должно быть легко создать. 6-цилиндровый двигатель или трехколесные мопеды - или транспортные средства у которых плата "выбросов" и "дорожный налог" разные в зависимости от задачи.
f) обеспечить возможность в дополнение к отечественному производству автомобилей -Китайский завод. Китайский завод для получения налоговых скидок производят трехколесный трактор и двухцилиндровые автомобили.
h) при создании транспортного средства, необходимо сначала найти подходящий завод (отечественные заводы, китайские заводы), а затем каждый завод отвечает за создание корректного автомобиля. Используйте абстрактный шаблон завода (Factory Pattern, Factory Method Pattern).
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 10:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание класса методом GetDescription () (C++):

Вызов метода внутреннего класса методом внешнего класса - C++
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...

Создание класса-списка на основе кода со списком без класса - C++
Здравствуйте. Не могли бы вы показать, как оформить этот код в виде класса. Смысл задания: это засунуть в список большое число(здесь я...

Явное создание экземпляра класса и явная специализация шаблона класса - C++
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких случаях применять одно и другое?...

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?

Создание объекта класса с полем являющимся объектом другого класса - C++
Bill a; cin>>a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у Spiska(Bill A,int,string,int) ...

Построение описания класса, создание и уничтожение объектов этого класса - C++
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 10:43
Привет! Вот еще темы с ответами:

Возможно ли создание объекта шаблонного класса в функции этого класса? - C++
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами - C++
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.

Создание статической функции класса, которая принимает экземпляр этого же класса как объект - C++
Привет. Есть такой код class Model { public: Model(); Model(int verticesSize, int facesSize); ~Model(); static void...

создание объекта класса в методе этого же класса - C++
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это правильно и как это можно сделать (если это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru