Seminář 9 (Úkoly)

Úkol č. 1

Naprogramujte třídu MyQueue<T> reprezentující frontu. Tato třída bude hodnoty ve frontě uchovávat v poli pevné velikosti, kdy tato velikost bude určena v konstruktoru třídy.

Třída bude mít minimálně dvě metody:

  • void add(T item), která vloží prvek na konec fronty,
  • T remove(), která vrátí prvek z čela fronty.

V případě, že nebude možné prvek do fronty vložit nebo z ní odebrat, metoda skončí výjimkou.

Úkol č. 2

Uvažujme rozhraní a výčtový typ.

public interface Prioritizable {
    Priority getPriority();
}

public enum Priority {
    LOW, NORMAL, HIGH
}

Vytvořte generickou třídu MyPriorityQueue, do které bude možné vkládat objekty mající rozhraní Prioritizable. Tato fronta bude schopná pro každou prioritu pojmout předem dané množství hodnot, které bude určeno parametrem konstruktoru.

Třída MyPriorityQueue bude mít stejné metody jako třída MyQueue a avšak nejdříve bude vracet hodnot s prioritou HIGH, následně NORMAL a nakonec s prioritou LOW.

Vytvořte třídu Task představující nějaký úkol, která implementuje rozhraní Prioritizable. A třídu MyPriorityQueue vyzkoušejte. Vymyslete si další vhodnou třídu, kterou budete moci pro zkoušení použít.

Úkol č. 3

Napište statickou generickou metodu locate(list, item), která bude mít jeden argument typu MyList a druhý argument, který bude odpovídat prvkům tohoto seznamu. Metoda vrátí seznam typu MyList obsahující indexy (celá čísla), kde se tento prvek nachází.

Úkol č. 4

Napište statickou generickou metodu selectLowerNumbers(list, item), která bude mít jeden argument typu MyList obsahující čísla a druhý argument bude číslo stejného typu jako jsou hodnoty v daném seznamu. Metoda vrátí seznam typu MyList obsahující pouze hodnoty, které jsou menší než zadaná hodnota.


Last update on 19. 9. 2025 01:14
Powered by Schemik.

© Petr Krajča, 2010, 2012
petr.krajca (at) upol.cz