
//
// To jest przykładowy kod z podrozdziału 9.4.3 „Ukrywanie szczegółów” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <iostream>

using namespace std;

//------------------------------------------------------------------------------

// Prosty typ Date (kontrola dostępu).
class Date {
    int y, m, d;                      // Rok, miesiąc, dzień
public:
    Date(int y, int m, int d);        // Sprawdza poprawność daty i wykonuje inicjację.
    void add_day(int n);              // Zwiększa Date o n dni.
    int month() { return m; }
    int day()   { return d; }
    int year()  { return y; }
};

//------------------------------------------------------------------------------

Date::Date(int y, int m, int d) : y(y), m(m), d(d) {}

//------------------------------------------------------------------------------

int main()
{
    Date birthday(1970, 12, 30);      // ok
    //birthday.m = 14;                // Błąd: składowa Date::m jest prywatna.
    cout << birthday.month() << endl; // Sposób na dostęp do m.
}

//------------------------------------------------------------------------------
