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.

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.