Реферат: Проектирование классов в шутку и всерьез

const virtual Цвет Быть( ВременаГода& ) = 0;

// получение времени года, зная Цвет

const virtual ВременаГода Быть( Цвет) = 0;

};

class ТЕлочка

: public TObject,

public ТФигурный,

public ТЦветной

{

public:

constvirtualФигура Быть( ВременаГода& );

const virtual ВременаГода Быть( Цвет);

const ТЛес Родиться();

const ТЛес Рости();

ТЕлочка(); // конструктор вызывается, когда елочка родится

~ТЕлочка();

// деструктор вызывается не тогда, когда елочку срубят,

// а тогда, когда после Нового Года выбросят на помойку

// и бедный дворник должен будет ее сжечь, поскольку

// елки в контейнеры грузить нельзя ;)

};

// получили две функции Быть с одинаковым аргументом.

// подобные проблемы следует решать по правилам применяемого

// языка. В нашем случае придется поменять

// имена функций на менее читабельные.

В примере я хотел сначала писать на Object Pascal. Мысленно разговаривая с читателем, услышал шум и топот ног и выкрики с мест - "А почему не С++?". Подумал и согласился - пусть будет на C++. Конечно же, приведенная метода не есть абсолют. Как говорится, если победишь в бою с нарушением устава - молодец, творчески мыслишь, отбрасывая устаревшие догмы. Если проиграл соблюдая устав - негодяй, который не смог постичь вековые истины. Если данная метода кому поможет - то-то я порадуюсь... Мне лично иногда помогает, особенно когда голова уже ничего не соображает и приходится действовать на автопилоте. Или когда приходится разбираться в исходниках и отгадывать - что же автор хотел сказать. Осуществлять своего рода модный ныне реинжиниринг. Что интересно, потом на свежую голову просмотришь что понаписал и удивляешься своей прозорливости и вообще тому, что это работает.

К-во Просмотров: 405
Бесплатно скачать Реферат: Проектирование классов в шутку и всерьез