Главная » C# » Введение в структурный код приложения обмена валют в Visual C# (Sharp)

0

Наше приложение создается на основе курса обмена, валютных единиц и вычислия с применением курса обмена и валютных единиц. Поэтому было бы логичным на первом шаге написать тестовый код, в котором совместно применяются все эти элементы. Например, как в следующем коде:

CurrencyTrader els = new CurrencyTraderО; els.ExchangeRate = 1.31;

double haveUSD = 100.0;

double getEUR = els.Convert(haveUSD); Console.WriteLine("Converted " + haveUSD + " USD to " + getEUR);

Данный код отличается тем, что на нем лежит вся ответственность за то, чтобы структуре были присвоены правильные данные. Чтобы прояснить это, посмотрите на этот же код, но с произвольными именами и значениями переменных  валют вместо логических идентификаторов:

CurrencyTrader els = new CurrencyTrader(); els.ExchangeRate = dddddedfasffsdf;  double ukfkisd = 100.0;

double didkfdbnfd = els.Convert(ukfkisd); Console.WriteLine("Converted " + ukfkisd + " USD to " + didkfdbnfd);

Данный код структурного, а не архитектурного типа. Структурный код требует интеллектуального программиста, т. е. программиста, который знает значение оельных элементов. С другой стороны, архитектурный код является более защенным от неквалифицированного использования и требует меньших знаний при работе с ним, т. к. многие из его частей инкапсулированы. С архитектурным кодом пользователь должен знать только, как использовать классы. Иными словами, структурный код требует знаний, как сложить два числа. А с архитектурным кодом все, что требуется знать, — это как ввести два числа в калькулятор и нажать кнои "плюс" и "равно". Можно утверждать,  что, не зная,  как выполняется операция сложения, и полагаясь на калькулятор для ее выполнения, мы не имеем никакой уверенности в том, что калькулятор выполнит эту задачу должным образом. Такое утверждение будет справедливо, и именно поэтому тесты являются важными для удостоверения правильности работы калькулятора.

Базовые классы

Первый тестовый структурный код в предыдущем разделе составлен правильно. Структурный код формирует основу компонента, который называется базовым классом. Базовый класс предоставляет определенную функциональность, которая может быть использована в других классах. В данном случае такой функционалостью является функциональность преобразования валютных единиц, которую мы намереваемся  использовать  как  в  модуле  коммерческого  валютного  маклера,  так и в модуле обменного пункта отеля. Базовые классы необходимо определять таким образом, чтобы выполнение идентичных операций было единообразным. Если бы не было базовых классов, то для повторного использования функциональности пришлось бы копировать и вставлять реализующий ее код.

Базовые классы имеют некоторые очень важные характеристики.

•    Разработчикам следует применять базовый класс, только если они понимают, какую работу данный класс выполняет. Для управления доступом применяется область видимости.

•    Базовые классы описывают свойства и методы. Для использования базового класса эти описания компонуются для выполнения вычислений. Например, чты выполнить преобразование валюты, необходимо вручную определить вютный курс и валютные единицы и выполнить метод преобразования. Пошагый ручной подход предоставляет разработчикам гибкость в работе.

•    Базовые классы необходимо всесторонне протестировать, т. к. предоставляемая ими функциональность будет использоваться повсеместно в разрабатываемом коде. Если базовые классы содержат ошибки, то велика вероятность ошибочно функционирования крупного фрагмента, применяющего данные классы.

ПРИМЕЧАНИЕ

Базовые классы являются общим концептом, который полностью понимают только разработчики.  Общий  концепт  называется  шаблоном  проекта.  В  процессе  использания шаблонов разработки создается терминология разработчиков, в которой такие слова, как фабрика, состояние и посетитель, обозначают конкретные концепции программирования, которые разработчики понимают без всяких объяснений. Я бы посоветовал вам узнать больше о шаблонах проекта. Хорошую коллекцию превоодных примеров кода  основных  шаблонов,  используемых  разработчиками,  можно найти на Web-странице Data & Object Factory (http://www.dofactory.com/Patterns/ Patterns.aspx).

В данном примере класс currencyTrader необходимо преобразовать в базовый класс, который могут использовать только опытные разработчики. Это требование порождено  необходимостью  предотвратить  использование  разрабатываемого кода в неправильном контексте.

Одним из способов предотвратить использование класса CurrencyTrader в неприльном  контексте будет объявление его как abstract. Ключевое слово abstract в объявлении класса указывает на то, что из этого класса нельзя создавать экземп-

ляры. К этому классу можно обращаться, но создавать его экземпляры нельзя. Пмотрим на  следующий код, в котором класс currencyTrader объявляется абсактным:

abstract class CurrencyTrader { }

Для создания экземпляра класса, объявленного с помощью ключевого слова abstract, применяется механизм, называющийся наследованием (inheritance). С тои зрения разработчика, идеей в основе объявления класса абстрактным является создание логики многократного использования для применения в других классах.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии