===== 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.