Экстремальное программирование. Разработка через тестирование



Download 1,35 Mb.
Pdf ko'rish
bet34/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   30   31   32   33   34   35   36   37   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

five.plus(five)
;
Bank bank = new Bank();
Money reduced = bank.reduce(sum, "USD");
assertEquals(Money.dollar(10), reduced);
}
Раньше, если у нас имелась «под д ельная» реализация, д ля нас было
очевид ным, как можно вернуться назад и сформировать реальную
реализацию. Для этого д о статочно было заменить константы
переменными. Од нако в д анном случае пока не понимаю, как вернуться
назад . Поэтому, несмотря на некоторый риск, я решаю д вигаться вперед :
$5 + 1 °CHF = $10, если курс обмена 2:1
$5 + $5 = $10
Операция $5 + $5 возвращает объект Money
Прежд е всего, метод Money.plus() д олжен возвращать не про сто


объект Money, а реальное выражение (Expression), то есть сумму (Sum).
(Возможно, в буд ущем мы оптимизируем специальный случай сложения
д вух од инаковых валют, од нако это произойд ет позже.)
Итак, в результате сложения д вух объектов Money д олжен
получиться объект класса Sum:
public void testPlusReturnsSum() {
Money five = Money.dollar(5);
Expression result = five.plus(five);
Sum sum = (Sum) result;
assertEquals(five, sum.augend);
assertEquals(five, sum.addend);
}
(Вы когд а-нибуд ь слышали, что в английском языке первое
слагаемое обозначается термином 
augend
, а второе слагаемое –
термином 
addend
? Об этом не слышал д аже автор д о тех пор, пока не
приступил к написанию д анной книги.)
Только что написанный тест, скорее всего, проживет нед олго. Дело
в том, что он сильно связан с конкретной реализацией разрабатываемой
нами операции и мало связан с вид имым внешним повед ением этой
операции. Од нако, заставив его работать, мы окажемся на шаг ближе к
по ставленной цели. Чтобы скомпилировать тест, нам потребуется класс
Sum с д вумя полями: augend и addend:
Sum
class Sum {
Money augend;
Money addend;
}
В результате получаем исключение преобразования классов
(ClassCastException) – метод Money.plus() возвращает объект Money, но
не объект Sum:
Money
Expression plus(Money addend) {
return new Sum(this, addend);


}
Класс Sum д олжен иметь конструктор:

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish