Advertisement
Guest User

Untitled

a guest
Jul 15th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. class City
  6. {
  7.     int _lat, _lon;
  8.     std::string _name;
  9.  
  10. public:
  11.     City(std::string name, int latitude, int longitude)
  12.         : _name(name),
  13.           _lat(latitude),
  14.           _lon(longitude)
  15.     {
  16.     }
  17.    
  18.     std::string getName() const {
  19.         return _name;
  20.     }
  21.     std::pair<int,int> getCoords() const {
  22.         return std::make_pair(_lat, _lon);
  23.     }
  24. };
  25.  
  26. class Wheel {
  27.     int _r;
  28.  
  29. public:
  30.     Wheel(int radius) {
  31.         if (radius <= 0) {
  32.             throw new std::invalid_argument("radius");
  33.         }
  34.         _r = radius;
  35.     }
  36.  
  37.     int getRadius() const { return _r; }
  38. };
  39.  
  40. class Car; // Forward declaration
  41.  
  42. class Driver {
  43.  
  44.     std::string _name;
  45.     Car *_car;
  46.  
  47. public:
  48.     Driver(const std::string &name)
  49.         : _name(name)
  50.     {
  51.     }
  52.  
  53.         // Конструктор копирования
  54.         // Сгенерирован автоматически
  55.     // Driver(const Driver &other)
  56.     //     : _name(other.name),
  57.     //       _car(other.car)
  58.     // {
  59.     // }
  60.  
  61.     void getIntoTheCar(Car *car) {
  62.         _car = car;
  63.     }
  64.     void driveTo(City destination) {
  65.         if (_car) {
  66.             //...
  67.         }
  68.     }
  69. };
  70.  
  71. class Car {
  72.  
  73.     Driver _driver;
  74.     Wheel _wheels[4];
  75.  
  76. public:
  77.     Car(const std::string &driversName, int radiusLB, int radiusLF, int radiusRB, int radiusRF)
  78.         : _driver(driversName),
  79.           _wheels {radiusLB, radiusLF, radiusRB, radiusRF}
  80.     {
  81.         _driver->getIntoTheCar(this);
  82.     }
  83.  
  84.     Car(Driver *driver, int radiusLB, int radiusLF, int radiusRB, int radiusRF)
  85.         : _driver(driver), // default copy constructor called
  86.           _wheels {radiusLB, radiusLF, radiusRB, radiusRF}
  87.     {
  88.         _driver->getIntoTheCar(this);
  89.     }
  90.    
  91.     void moveTo(City city) {
  92.         _driver.driveTo(city);
  93.     }
  94. };
  95.  
  96. int main() {
  97.     const int STANDARD_WHEEL_SIZE = 15;
  98.     const int RACING_FRONT_WHEELS = 12;
  99.     const int RACING_BACK_WHEELS = 20;
  100.    
  101.     City vacationPlace("Nizhnie_Vasyki", 333, 345);
  102.     City racingRing("Monaco", 124, 32);
  103.    
  104.     Driver im("Vasilii Pupkins");
  105.  
  106.     Car myCar(Im,
  107.                 STANDARD_WHEEL_SIZE,
  108.                 STANDARD_WHEEL_SIZE,
  109.                 STANDARD_WHEEL_SIZE,
  110.                 STANDARD_WHEEL_SIZE);
  111.     myCar.moveTo(vacationPlace);
  112.  
  113.  
  114.     Car f1("Michael Schumacher",
  115.                 RACING_FRONT_WHEELS,
  116.                 RACING_BACK_WHEELS,
  117.                 RACING_FRONT_WHEELS,
  118.                 RACING_BACK_WHEELS);
  119.     f1.moveTo(racingRing);
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement