Реферат: Проектирование классов в шутку и всерьез
#include ...
class TЛес : public TObject {};
enum ЕВремяГода { зима, лето};
class ТВремяГода : public TObject
{
public:
const ЕВремяГода GetВремяГода()
{ return ВремяГода};
{};
};
// здесь есть два варианта и второй в том, чтобы объявить
// время года как typedef ЕВремяГода ТВремяГода;
// какой вариант выбрать - дело вкуса.
// я выбрал первый потому, что он позволяет запретить
// изменение времени года для созданного объекта.
typedef vector <ТВремяГода> ВременаГода;
enum Фигура { никакая, стройная};
enum Цвет { никакой, зеленый};
class TФигурный
{
public:
// получение фигуры, зная времена года
const virtual Фигура Быть( ВременаГода& ) = 0;
// получение времени года, зная фигуру
const virtual ВременаГода Быть( Фигура) = 0;
};
class TЦветной
{
public: