Tančíky se pohybují po terénu, střílejí po tančíkách ostatních hráčů. Občas z nebe spadne bonus box s nějakým vylepšením (zhoršením) - bonusem. Viditelné objekty se vykreslují, musí mít nějaký grafický a kolizní model.
Navrhněte UML class diagram!
Jaké máme objekty?
Naprogramujte rozhraní tříd z diagramu.
Jak dostanete známku z tohohle předmětu - předpokládejte, že se nějak dohodne cvičící, vyučující, podívají se do databáze, co jste přes rok dělali a případně zapíší známku do SISu.
Navrhněte UML sequence diagram!
Jaké máme objekty?
Nezapomenout na popis celého díla:
public
interface List<E> extends Collection<E> {
/* ... */
/**
* Returns the element at the specified position in this list.
*
* @param index index of element to return
* @return the element at the specified position in this list.
* @throws IndexOutOfBoundsException if the index is out of range
* (<tt>index < 0 || index >= size()</tt>).
*/
E get(int index);
/* ... */
}
V Javě se na dokumentaci rozhraní používá nástroj JavaDoc. Programátor zapíše dokumentaci do speciálně označených a formátovaných komentářů, které JavaDoc projde a sestaví z nich dokumentaci v HTML.
Výhodou tohoto přístupu je, že dokumentace je pohromadě s kódem a hrozí tedy menší riziko jejího zastarání (kód bude aktualizován, ale dokumentace ne). Na druhou stranu, dokumentace zabírá v kódu dost místa a ztěžuje tak navigaci. Tento problém dnes naštěstí vcelku uspokojivě řeší různá vývojová prostředí.
Dokumentace v JavaDocu trpí značnou mírou byrokracie – např. kromě popisu metody je potřeba popsat zvlášť i její parametry, návratovou hodnotu a vyhazované výjimky, což udělá ze stručného neformálního komentáře na tři řádky poměrně dlouhý kus textu s redundancemi (zde např. popis metody a její návratové hodnoty). Pokud bychom popis některých prvků vynechali, objeví se ve vygenerované dokumentaci prázdné místo, což není moc pěkné. Příliš vhodné není ani použití HTML pro text komentáře, což vede k nutnosti escapování.
Byrokracie při psaní dokumentace vede k tomu, že psaní dokumentace je otravná činnost a programátoři ji tedy často nevykonávají, nejsou-li k tomu nuceni. Neformální komentáře by přitom možná napsali. Opět zde částečně pomáhají vývojová prostředí, která umí připravit šablonu dokumentačních komentářů.
public
interface List<E>: Collection<E> {
/* ... */
/// <summary>
/// Returns the element at the specified position in this list.
/// </summary>
///
/// <param name="index">index of element to return</param>
/// <returns>
/// the element at the specified position in this list.
/// </returns>
/// <exceptions name="ArgumentOutOfRangeException">
/// if the index is out of range
/// (<c>index < 0 || index >= size()</c>)
/// </exceptions>
E get(int index);
/* ... */
}
class List
# ...
# Returns the element at the specified position in this list.
# The position must be nonnegative and less than size of this
# list, otherwise +IndexError+ is thrown.
def get(index)
# ...
end
# ...
end
Ruby pro dokumentaci používá nástroj rdoc, v principu podobný JavaDocu, ale místo HTML a @-tagů používá jednoduchou wiki-like syntaxi. Dokumentaci umí vygenerovat v HTML a několika dalších formátech.
class List:
# ...
def get(index):
"""Returns the element at the specified position in this list.
The position must be nonnegative and less than size of this
list, otherwise IndexError is thrown."""
# ...
# ...
V Pythonu je dokumentace integrována přímo do jazyka – je-li
první výraz uvnitř třídy či metody řetězec, je považován za
dokumentační komentář. Dá se k němu dokonce přistupovat v runtime
pomocí atributu __doc__
.
Je hezky vidět, že stejně jako v kódu, i v dokumentaci mají statické jazyky sklon k byrokracii a dynamické naopak k jisté neformálnosti.