Warning
This page is located in archive.

Reversi III

  • Reversi
    • diskuse problémů prvního odevzdání
  • Java tutoriálek
  • Testík
  • Hádanka

Reversi

  • Individuální kontrola hráčů

Java tutoriálek

V této části jsme pro vás sromáždili informace, o kterých si myslíme, že by se vám mohly hodit.

Komparátory a další užitečné konstrukce v Javě

Interface
  • Java nepodporuje vícenásobnou dědičnost (jedna třída nemůže mít více než jednoho rodiče) → místo toho rozhraní (interface)
  • Interface může definovat pouze abstraktní metody (bez těla) nebo konstanty (od Javy 8 přibyly tzv. defaultní metody).
  • Třída může implementovat (pomocí klíčového slova implements) i více rozhraní.
  • Třída musí implementovat všechny metody, jejichž hlavičky jsou v rozhraní.

Příklad

  • Abstraktní třída vs. Interface
Interface Abstraktní třída
Dědičnost Lze implementovat více než jedno interface Třída může rozšiřovat pouze jednu abstract třídu
Implementace metod Žádné metody nemohou být implementovány (od Javy 8 mohou!) Lze implementovat těla metod neoznačených jako abstract
Proměnné Lze definovat pouze static final konstanty Lze definovat jak konstanty tak členské proměnné
Použití Většinou definuje spíše vlastnosti třídy než rozšíření vlastností jiné třídy. Např. Comparable, Iterable, Runnable Definuje příslušnost třídy k super třídě, rozšiřuje její vlastnosti. Např. ListLinkedList, PlayerMyPlayer
Vybrané metody třídy Collections

V třídě Collections se nacházejí užitečné statické metody pro páci s třídami typu Set, List, Map a třídami od nich odvozenými.

  • void copy(List<? super T> dest, List<? extends T> src)
    • zkopíruje všechny prvky ze seznamu src (typu T nebo odvozených od T) do seznamu dest (typu T nebo nadtřídy T)

příklad

  • T max(Collection<? extends T> coll)
    • vrátí maximální prvek ze seznamu. Uvažuje přirozené řazení (tj. buď podle abecedy nebo velikosti)
  • T max(Collection<? extends T> coll, Comparator<? super T> comp)
    • vrátí maximální prvek ze seznamu, kde pořadí prvků je definováno třídou Comparator
  • void reverse(List<?> list)
    • obrátí pořadí prvků v listu
  • void sort(List<T> list)
    • seřadí prvky listu vzestupně podle přirozeného řazení (tj. buď podle abecedy nebo s rostoucí velikostí)
  • void sort(List<T> list, Comparator<? super T> c)
    • seřadí prvky listu podle pořadí definovaného třídou Comparator
Comparator a Comparable interface

Pro porovnávání dvou prvků a zároveň i definici jejich pořadí v seznamech lze v Javě použít dva přístupy.

  • Comparable objekt je schopen porovnat sám sebe s jiným objektem. Takovýto objekt musí implementovat Comparable interface. Konkrétně musí definovat metodu int compareTo(Object obj) - ta porovná daný objekt s objektem obj a vrátí <0, 0 nebo >0 podle toho, jetli je daný objekt menší, roven nebo větší než obj. Implmentací metody compareTo definujeme přirozené uspořádání objektů.
  • Comparator je objekt který umožňuje porovnat dva různé objekty. Při jeho implementaci je potřeba přepsat jedinou metodu - int compare(T o1, T o2) a to tak, že vrací <0, 0 nebo >0 podle toho, jestli objekt o1 je menší, roven nebo větší než objekt o2.

příklad třídy implementující Comparable

příklad Comparatoru

použití:

Ukázka na práci s datovými strukturami

Teď si některé z těchto věcí vyzkoušíte sami. Vaším úkolem bude napsat funkce vyhledávající a třídící automobily v jednoduché databázi. Stáhněte si připravený projekt, naimportujte si ho do Vašeho IDE a doplňte těla metod ve třídě CarsDatabase. Při implementaci se soustřeďte primárně na efektivitu při volání metod get…().

Programovací testík

Zadání na interních stránkách.

Hadanka

courses/a4b99rph/cviceni/program_po_tydnech/tyden_11.txt · Last modified: 2014/12/04 22:47 by peckama2