Dżisas, pomyśleć sam chwilę nie możesz...?
Co ma okienko? Oczywiście jakiś wymiar. Co jeszcze? Pasek z tytułem, przyciskami, itd. Co można zrobić? Ano zmienić rozmiar, przesunąć, zamknąć oraz otworzyć, ukryć, pokazać, itd.
Co do klas: jakaś zapewne klasa bazowa np. Okno, z niej OknoDialogowe, OknoInformacyjne, itp. To nie jest trudne zadanie skoro musisz tylko abstrakcję okien zaprojektować bez martwienia się o wykonanie tego :)
Bo z drugiej strony można jeszcze zagłębić się w obsługę okien, a wtedy to przesyłanie komunikatów, jakiś model działania (Document/View albo Model-View-Controller).
Dobrym rzeczywistym przykładem takich systemów okienkowych są wszelkie biblioteki wieloplatformowe (które obsługują cross-platform GUI), np. wxWidgets, w której mamy hierarchię: wxObject -> wxEvtHandler -> wxWindow -- --> wxDialog, wxControl, wxPanel, itd.