Понятие базовых классов
Первый проверочный код, структурный, вполне правилен. Структурный код форми¬рует основу того, что называется базовым классом (base class). Базовый класс предо-: авляет некие функциональные возможности, которые будут многократно использованы другими классами. В данном случае функциональные возможности конвертации денежных единиц, которые нам понадобятся и для активного брокера, и для гостинич¬ного менялы. Вы определяете базовые классы так, чтобы получать однозначное поведе¬ние в ходе идентичных операций. Без базовых классов вы были бы вынуждены копиро¬вать и вставлять функции, чтобы многократно использовать их. Базовые классы имеют ряд очень важных характеристик.
• Код базового класса должны использовать только те разработчики, которые по¬нимают то, что пытается делать код базового класса. Для контроля доступа мы используем область видимости.
• Базовые классы описывают свойства и методы. Чтобы использовать базовый класс, собираются описания вычислений. Например, чтобы выполнить конвер¬тацию валют, необходимо определить курсы валют и денежные единицы, а затем выполнить метод конвертации. Этот ручной, поэтапный подход дает разработчи¬ку гибкость.
• Базовые классы нуждаются в серьезной проверке, поскольку их функции будет использовать весь ваш код. Если базовые классы с ошибками, то, вероятно, боль¬шая часть вашего кода будет иметь ошибки.
На заметку. Базовые классы относятся к общей концепции, называемой шаблонами проектирова¬ния (design pattern). Шаблоны проектирования позволяют разработчикам общаться друг с дру¬гом с помощью общих структур кода и терминологии . Например, для описания определенных концепций программирования шаблон проектирования мог бы использовать такие термины, как factory, state и visitor. В результате разработчики поймут их без лишних объяснений. Более подробная информация о шаблонах проектирования приведена на веб-сайте Data & Object Factory (http: //www.dofactory.com/Patterns/Patterns.aspx). На этом сайте имеются также превосходные примеры кода шаблонов, используемых разработчиками.
В нашем примере конвертации валют класс CurrencyTrader нужно преобразовать (это просто игра слов) в базовый класс, который применяется только хорошо осведом¬ленными разработчиками. Вы ведь хотите защитить свой исходный код от использова¬ния в неправильном контексте.
Один из способов предотвращения применения в неправильном контексте заключа¬ется в объявлении класса CurrencyTrader абстрактным. Ключевое слово abstract гово¬рит, что экземпляр данного класса нельзя создать. Вы можете ссылаться на этот класс. но вы не можете создать его экземпляр. Рассмотрим следующий код, который объявляет класс CurrencyTrader как абстрактный.
abstract class CurrencyTrader ( }
Использование ключевого слова abstract подразумевает, что некто должен создать класс, экземпляр которого может быть создан благодаря использованию механизма. называемого наследованием. С точки зрения разработчика, идея абстрактных классов заключается в том, чтобы внедрить (или унаследовать) логику многократного использо¬вания, содержащуюся в некоем другом классе.