sequence.dualstackqueue

## Class DualStackQueue

- java.lang.Object
- - sequence.dualstackqueue.DualStackQueue

- All Implemented Interfaces:
    CommonBase, BaseSequence, Queue

      class DualStackQueue
      extends java.lang.Object
      implements Queue

  Implementace fronty dvojicí zásobníků.

  Popis: Fronta je implememntována dvěma zásobníky. Na vrcholu předního zásobníku je hlava fronty. Na vrcholu zadního zásobníku je ocas fronty.

  Užití: instance této třídy lze používat v aplikacích.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `count` aktuální počet prvků v posloupnosti
    `private Stack` | `front` přední zásobník
    `private int` | `moveCounter` počítadlo provozního měření
    `private Stack` | `rear` zadní zásobník
    `private int` | `size` kapacita posloupnosti

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DualStackQueue(StackFactory factory, int aSize)` Vyrobí novou frontu implementovanou dvojicí zásobníků.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Element` | `get()` Vyjme první prvek z fronty.
    `int` | `getCount()` Vrátí počet prvků v posloupnosti.
    `Element` | `getElement()` Vrátí hodnotu běžného prvku.
    `int` | `getMoveCounter()` Provozní měření.
    `boolean` | `isEmpty()` Zjistí, zda je posloupnost prázdná.
    `boolean` | `isFull()` Zjistí, zda je posloupnost plná.
    `void` | `put(Element elem)` Vloží nový prvek na konec fronty.
    `void` | `resetMoveCounter()` Vynuluje provozní měření.
    `void` | `setElement(Element value)` Nastaví hodnotu běžného prvku.
    `private void` | `unbury()` Pomocná metoda.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### front

          private Stack front

      přední zásobník

    - #### rear

          private Stack rear

      zadní zásobník

    - #### count

          private int count

      aktuální počet prvků v posloupnosti

    - #### size

          private int size

      kapacita posloupnosti

    - #### moveCounter

          private int moveCounter

      počítadlo provozního měření

  - ### Constructor Detail

    - #### DualStackQueue

          public DualStackQueue(StackFactory factory,
                                int aSize)

      Vyrobí novou frontu implementovanou dvojicí zásobníků.
      Parameters:
        `factory` - továrna na zásobníky
        `aSize` - požadovaná kapacita fronty

  - ### Method Detail

    - #### unbury

          private void unbury()

      Pomocná metoda. Přesype obsah zadního zásobníku do předního.

    - #### setElement

          public void setElement(Element value)

      Nastaví hodnotu běžného prvku. Běžný prvek je hlava fronty.

      Vyžaduje: not isEmpty

      Specified by:
        `setElement` in interface `CommonBase`
      Parameters:
        `value` - nová hodnota hlavy fronty

    - #### getElement

          public Element getElement()

      Vrátí hodnotu běžného prvku. Běžný prvek je hlava fronty.

      Vyžaduje: not isEmpty

      Specified by:
        `getElement` in interface `CommonBase`
      Returns:
        hodnota z hlavy fronty

    - #### isEmpty

          public boolean isEmpty()

      Description copied from interface: `BaseSequence`
      Zjistí, zda je posloupnost prázdná.
      Specified by:
        `isEmpty` in interface `BaseSequence`
      Returns:
        true když je prázdná, jinak false

    - #### isFull

          public boolean isFull()

      Description copied from interface: `BaseSequence`
      Zjistí, zda je posloupnost plná.
      Specified by:
        `isFull` in interface `BaseSequence`
      Returns:
        true když je plná, jinak false

    - #### get

          public Element get()

      Description copied from interface: `Queue`
      Vyjme první prvek z fronty.

      Vyžaduje: not isEmpty

      Splní: not isFull

      Mění: vyjme prvek z fronty

      Specified by:
        `get` in interface `Queue`
      Returns:
        nejstarší prvek, který byl uložen do fronty

    - #### put

          public void put(Element elem)

      Description copied from interface: `Queue`
      Vloží nový prvek na konec fronty.

      Vyžaduje: not isFull

      Splní: not isEmpty

      Mění: přidá prvek do fronty

      Specified by:
        `put` in interface `Queue`
      Parameters:
        `elem` - prvek, který se má připojit na konec fronty

    - #### getCount

          public int getCount()

      Description copied from interface: `BaseSequence`
      Vrátí počet prvků v posloupnosti.
      Specified by:
        `getCount` in interface `BaseSequence`
      Returns:
        počet prvků v posloupnosti

    - #### getMoveCounter

          public int getMoveCounter()

      Description copied from interface: `CommonBase`
      Provozní měření.
      Specified by:
        `getMoveCounter` in interface `CommonBase`
      Returns:
        počet přesunů běžného prvku

    - #### resetMoveCounter

          public void resetMoveCounter()

      Description copied from interface: `CommonBase`
      Vynuluje provozní měření.
      Specified by:
        `resetMoveCounter` in interface `CommonBase`