TDD_I_07: Jablka a hrušky

$5 + 10 CHF = $10 je-li kurz 2:1

$5 * 2 = $10

Převést položku mnozstvi na soukromou

Vedlejší účinky třídy Dolar?

Zaokrouhlování peněz?

Metoda equals()

Metoda hashCode()

Rovnost s null

Rovnost objektů

5 CHF * 2 = 10 CHF

Dolar / Frank duplicita

Společná metoda equals()

Společné násobení

Porovnání franků a dolarů

Jako blesk z čistého nebe nás na konci šesté kapitoly zasáhla myšlenka: co se asi stane porovnáme-li franky a dolary? Zodpovědně jsme proměnili naši dotěrnou myšlenku na položku na našem seznamu úkolů, ale nelze se ji jen tak zbavit. Tak co se sakra stane?

	public void testRovnosti() {
		assertTrue(new Dolar(5).equals(new Dolar(5)));
		assertFalse(new Dolar(5).equals(new Dolar(6)));
		assertTrue(new Frank(5).equals(new Frank(5)));
		assertFalse(new Frank(5).equals(new Frank(6)));
		assertFalse(new Frank(5).equals(new Dolar(5)));
	}

Pokazí se to. Dolary jsou franky. Než švýcaští obchodníci vyskočí vzrušením, pokusme se kód opravit. Kód pro porovnání musí zajistit, že se neporovnávají dolary a franky. Můžeme to udělat hned teď porovnáním třídy dvou objektů - dva objekty Penize se rovnají pouze tehdy, jestliže jsou stjené jejich třídy i množství.

Penize

	public boolean equals(Object object) {
		Penize penize = (Penize)object;
		return mnozstvi == penize.mnozstvi && getClass().equals(penize.getClass());
	}

Použití tříd v modelovém kódu tímto způsobem trošku smrdí. Rádi bychom použili kritérium, které dává smysl v prostředí financí a ne v prostředí objektů Javy. Ale v této chvíli nemáme nic takového jako je měna a ani není důvod nějakou měnu zavádět, takže nám to pro tuhle chvíli bude stačit.

$5 + 10 CHF = $10 je-li kurz 2:1

$5 * 2 = $10

Převést položku mnozstvi na soukromou

Vedlejší účinky třídy Dolar?

Zaokrouhlování peněz?

Metoda equals()

Metoda hashCode()

Rovnost s null

Rovnost objektů

5 CHF * 2 = 10 CHF

Dolar / Frank duplicita

Společná metoda equals()

Společné násobení

Porovnání franků a dolarů

Měna?

Teď se vážně musíme zbavit společného kódu metody krat(), abychom se dostali k výpočtům s několika měnami. Dříve než to však uděláme, zopakujme si, čeho jsme v této kapitole dosáhli:

Vývoj řízený testy, Kapitola 6 | Dr3dweRkZ | Vývoj řízený testy, Kapitola 8