heap.heap

## Class RealHeap

- java.lang.Object
- - heap.heap.RealHeap

- All Implemented Interfaces:
    Heap

      class RealHeap
      extends java.lang.Object
      implements Heap

  Implementace haldy polem.

  Užití: Ve svém programu deklarujte proměnné typu HeapArray.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private HeapCallBack` | `callBack` objekt, který zpracuje zpětné volání pro každý prvek při procházení haldy
    `private int` | `count` aktuální počet prvků v haldě
    `private SearchableElement` | `left` proměnná použitá v metodách isGoingToLeft () a get ()
    `private SearchableElement` | `right` proměnná použitá v metodách isGoingToLeft () a get ()
    `private int` | `size` kapacita haldy
    `private HeapTree` | `store` zapouzdřený haldový strom, úložiště pro haldu

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RealHeap(HeapTreeFactory aTreeFactory, int heapSize)` Vyrobí instanci třídy HeapArray.
    `RealHeap(ShallowHeapTreeFactory aShallowFactory, SortableSequence base)` Vyrobí instanci třídy HeapArray.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `backtrack(java.lang.Object parentNodeView)` Pomocná funkce zpětného prohledávání.
    `SearchableElement` | `get()` Vyjme nejmenší prvek z haldy.
    `int` | `getCount()` Zjistí počet prvků v haldě.
    `int` | `getOperationCounter()` Provozní měření.
    `boolean` | `isEmpty()` Zjistí, zda je halda prázdná.
    `boolean` | `isFull()` Zjistí, zda je halda plná.
    `private boolean` | `isGoingToLeft()` Pomocná funkce.
    `void` | `put(SearchableElement elem)` Zařadí nový prvek do haldy.
    `void` | `search(HeapCallBack aCallBack)` Systematicky prochází haldu vrchol po vrcholu.

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

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

- - ### Field Detail

    - #### store

          private HeapTree store

      zapouzdřený haldový strom, úložiště pro haldu

    - #### count

          private int count

      aktuální počet prvků v haldě

    - #### size

          private int size

      kapacita haldy

    - #### callBack

          private HeapCallBack callBack

      objekt, který zpracuje zpětné volání pro každý prvek při procházení haldy

    - #### left

          private SearchableElement left

      proměnná použitá v metodách isGoingToLeft () a get ()

    - #### right

          private SearchableElement right

      proměnná použitá v metodách isGoingToLeft () a get ()

  - ### Constructor Detail

    - #### RealHeap

          public RealHeap(HeapTreeFactory aTreeFactory,
                          int heapSize)

      Vyrobí instanci třídy HeapArray.

      Popis: inicializuje atributy instance.

      Užití: zejména k inicializaci proměnných typu HeapArray.

      Parameters:
        `aTreeFactory` - továrna na stromy
        `heapSize` - kapacita haldy

    - #### RealHeap

          public RealHeap(ShallowHeapTreeFactory aShallowFactory,
                          SortableSequence base)

      Vyrobí instanci třídy HeapArray. Jako úložiště se použije mělký strom.

      Popis: inicializuje atributy instance.

      Užití: zejména k inicializaci proměnných typu HeapArray.

      Parameters:
        `aShallowFactory` - továrna na mělké stromy
        `base` - posloupnost, nad kterou se vybuduje halda

  - ### Method Detail

    - #### put

          public void put(SearchableElement elem)

      Zařadí nový prvek do haldy.

      Popis: Prohledává haldu od posledního listu ke kořenu, dokud ve stromě nachází uzly větší než nový uzel. Přitom přesouvá větší uzly shora dolů, aby uvolnil správné místo pro nový uzel. Rodič uzlu má vždy asi tak poloviční index:

                            0
                       1          2
                     3   4     5     6
                    7 8 9 10 11 12 13 14

      atd.

      Užití: Typ parametru se řídí deklarací typu HeapElement

      Specified by:
        `put` in interface `Heap`
      Parameters:
        `elem` - prvek, který má být zařazen do haldy

    - #### isGoingToLeft

          private boolean isGoingToLeft()

      Pomocná funkce. Volá se z metody get ().
      Returns:
        true, když volný prvek patří vlevo, jinak false

    - #### get

          public SearchableElement get()

      Vyjme nejmenší prvek z haldy.

      Popis: Vyjme prvek z kořene haldy. Pak prochází strom a postupně přesouvá prvky nahoru.

      Užití: Typ parametru se řídí deklarací typu HeapElement

      Specified by:
        `get` in interface `Heap`
      Returns:
        nejmenší prvek z haldy

    - #### isEmpty

          public boolean isEmpty()

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

    - #### isFull

          public boolean isFull()

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

    - #### getOperationCounter

          public int getOperationCounter()

      Description copied from interface: `Heap`
      Provozní měření.
      Specified by:
        `getOperationCounter` in interface `Heap`
      Returns:
        počet významných operací

    - #### getCount

          public int getCount()

      Description copied from interface: `Heap`
      Zjistí počet prvků v haldě.
      Specified by:
        `getCount` in interface `Heap`
      Returns:
        počet prvků v haldě

    - #### backtrack

          private void backtrack(java.lang.Object parentNodeView)

      Pomocná funkce zpětného prohledávání. Používá se v metodě search.
      Parameters:
        `parentNodeView` - null nebo

    - #### search

          public void search(HeapCallBack aCallBack)

      Description copied from interface: `Heap`
      Systematicky prochází haldu vrchol po vrcholu. V každém vrcholu je uložen prvek, který se zpracuje metodou callback.ProcessCurrentElement (). Objekt callback je parametrem metody search.
      Specified by:
        `search` in interface `Heap`
      Parameters:
        `aCallBack` - objekt, který zpracuje každý prvek haldy