===== Słownik =====
Przetransformuj program z poprzednich zajęć do postaci obiektowej.
Rozbij zadanie na 3 obiekty:
* Dictionary - reprezentuje słownik. Odpowiednie metody pozwalają utworzyć słownik z danych pobranych z pliku tekstowego lub ze strumienia wejściowego.
* Tree - reprezentuje drzewo przechowujące wyrazy. Dostarcza metodę dodającą wyraz (napis) do kolekcji wstawiając go w porządku alfabetycznym.
* Node - reprezentuje pojedynczy węzeł drzewa.
{{:zajecia:po_2013_1:dict.png?600|}}
Klasa **Dictionary** (slownik) zadeklarowana jest następująco:
class Dictionary
{
Tree t;
string getword(istream &i);
public:
Dictionary();
Dictionary(const char *filename);
void Read(istream &i);
void Print();
~Dictionary(){};
};
Klasa **Tree** (drzewo) zadeklarowana jest następująco:
class Tree
{
private:
Node *root;
Node *Add(Node *k,string word);
void Free(Node *k);
void Print(Node *k);
public:
Tree();
void Add(string word);
void Print();
~Tree();
};
Deklaracja struktury **Node** (element)
class Node
{
public:
int count;
string word;
Node *left;
Node *right;
Node();
Node(string _word);
void Print();
};
W klasie ''Node'' wszystkie pola są publiczne. W tym przypadku jest to wygodne, jednak łamie zasadę hermetyzacji.
Spróbuj poprawić program tak aby pola tej klasy (zwłaszcza pola ''left'' i ''right'') nie były publicznie dostępne.