home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / EX07012.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  953 b   |  43 lines

  1. // ex07012.cpp
  2. // Conversions with proper data hiding
  3. #include <iostream.h>
  4.  
  5. // -------- Julian date class
  6. class Julian {
  7.     int da, yr;
  8. public:
  9.     Julian() {}
  10.     Julian(int d, int y) { da = d; yr = y;}
  11.     void display(){cout << '\n' << yr << '-' << da;}
  12.     // ------ member function to read and write a day
  13.     int& day() { return da; }
  14. };
  15.  
  16. // ------- date class
  17. class Date {
  18.     int mo, da, yr;
  19. public:
  20.     Date(int m, int d, int y) { mo = m; da = d; yr = y; }
  21.     operator Julian(); // conversion function
  22. };
  23.  
  24. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  25. // ---- member conversion function (Julian <- Date)
  26. Date::operator Julian()
  27. {
  28.     Julian jd(0, yr);
  29.     for (int i = 0; i < mo-1; i++)
  30.         jd.day() += dys[i];        // uses member function to
  31.     jd.day() += da;                // change da in Julian class
  32.     return jd;
  33. }
  34.  
  35. main()
  36. {
  37.     Date dt(11,17,89);
  38.     Julian jd;
  39.     // ------- convert Date to Julian via assignment
  40.     jd = dt;
  41.     jd.display();
  42. }
  43.