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

Создать абстрактный класс Vehicle - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать класс для работы с одномерным массивом строк фиксированной длины. Обеспечить следующие возможности: http://www.cyberforum.ru/cpp-beginners/thread832108.html
Описать класс для работы с одномерным массивом строк фиксированной длины. Обеспечить следующие возможности: • задание произвольных целых границ индексов при создании объекта; • обращение к...
C++ Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть) Здравствуйте! Помогите пожалуйста разработать функцию, которая удаляет из стека первый отрицательный элемент, если такой есть. Если не сложно, то ещё учитывая что: "Для организации стека нужно... http://www.cyberforum.ru/cpp-beginners/thread832104.html
Массив целых чисел (Удалить все двузначные элементы,являющиеся простыми числами) C++
Удалить из массива целых чисел все двузначные элементы,являющиеся простыми числами .Найти среднее арифметическое элементов массива до и после удаления.Проверить,изменился ли максимальный элемент...
Не запускает задачу C++
В VS создал пустой проект win32, написал код #include <iostream> #include <vector> using namespace std; template <class T> void prepare_vector (vector <T>*v) { for (usingned i=o;...
C++ Определить функцию, находящую сумму элементов массива http://www.cyberforum.ru/cpp-beginners/thread832056.html
10. Определить функцию, находящую сумму элементов массива. Выполнить перегрузку функции для следующих типов параметров: 10.1. Одномерный массив типа int размерностью N. 10.2. Одномерный массив типа...
C++ Найти ошибку в части кода Доброго времени суток. В этой части кода не распознает If и then, выдает : If: идентификатор не найден; then: необъявленный идентификатор. Как задавать? void change(int a, int n, int m) { int... подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
09.04.2013, 09:21
Olivеr, почему у вас класс-родитель имеет все характеристики? Он же награждает ими те классы, которым они не нужны. Это некорректно.

Задача откровенно на декомпозицию и выявление общих характеристик объектов.
Реализаций бесконечное количество, предлагаю вот такую, с выделением двух дополнительных "интерфейсов".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
 
// "интерфейс", умеющий работать с координатами
class Placable {
 public:
  Placable() : latitude(0), longitude(0) {}
  Placable(double latitude, double longitude) : latitude(latitude),
    longitude(longitude) {}
  double getLatitude() const { return latitude; }
  double getLongitude() const { return longitude; }
  void setLatitude(double value) { latitude = value; }
  void setLongitude(double value) { longitude = value; }
 private:
  double latitude, longitude;
};
 
// "интерфейс" для работы с количеством мест
class PassengerTransporter {
 public:
  PassengerTransporter() : numberOfSeats(0) {}
  PassengerTransporter(int numberOfSeats)
    : numberOfSeats(numberOfSeats) {}
  int getNumberOfSeats() const { return numberOfSeats; }
  void setNumberOfSeats(int value) { numberOfSeats = value; }
 private:
  int numberOfSeats;
};
 
class Vehicle : public Placable {
 public:
  Vehicle() : Placable(), cost(0), speed(0), year(0) {}
  Vehicle(int cost, int speed, int year) : Placable(), cost(cost),
    speed(speed), year(year) {}
  int getCost() const { return cost; }
  int getSpeed() const { return speed; }
  int getYear() const { return year; }
  void setCost(int value) { cost = value; }
  void setSpeed(int value) { speed = value; }
  void setYear(int value) { year = value; }
 private:
  int cost;
  int speed;
  int year;
};
 
class Plain : public Vehicle, public PassengerTransporter {
 public:
  Plain() : Vehicle(), PassengerTransporter(), height(0) {}
  Plain(int cost, int speed, int year, int height)
    : Vehicle(cost, speed, year), PassengerTransporter(),
    height(height) {}
  int getHeight() const { return height; }
  void setHeight(int value) { height = value; }
 private:
  int height;
};
 
class Ship : public Vehicle, public PassengerTransporter {
 public:
  Ship() : Vehicle(), PassengerTransporter() {}
  Ship(int cost, int speed, int year, int homePort)
    : Vehicle(cost, speed, year), PassengerTransporter(),
    homePort(homePort) {}
  int getHomePort() const { return homePort; }
  void setHomePort(int value) { homePort = value; }
 private:
  int homePort;
};
 
class Car : public Vehicle {
  Car() : Vehicle() {}
  Car(int cost, int speed, int year) : Vehicle(cost, speed, year) {}
};
 
int main(int argc, char *argv[]) {
 
 
  std::cin.get();
  return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru