pytanie o projektowanie programu
Ostatnio zmodyfikowano 2011-01-27 17:12
dmx81 Temat założony przez niniejszego użytkownika |
pytanie o projektowanie programu » 2011-01-26 23:00:57 witam, zastanawiam sie, jak najlepiej ulozyc projekt :
chce napisac pewien program, ktory bedzie mial rozbudowane menu, kazda z opcji menu przeniesie nas w podmenu z nowymi opcjami. zachowanie menu i podmenu mniej wiecej sobie juz rozpisalem. chcialem teraz to jakos ladniej poukladac, porozdzielac na mniejsze fragmenty kod i moje pytanie:
1. czy dla zbiorow funkcji tworzyc nowe klasy (np Menu_Wyswietlania, Menu_Edycji itd) no i wtedy bede musial tworzyc obiekt takiej klasy? ew. tworzyc te funkcje statycznymi i przez operator zasiegu sie do nich dostane?
2. porozpisywac na pliki te funkcje - dla kazdej grupy inny plik (para naglowek + .cpp), pozniej naglowki dolaczac (a pozniej jak ich uzywac, przez extern przed main? czy poprostu dolaczyc naglowek i nazwe wpisac)
3. jak wyzej, ale zamykac w przestrzeniach nazw
4. inaczej?
jak radzicie, jak najlepiej, zeby mialo rece i nogi i bylo poprawnie?(inaczej niz mam teraz, czyli do klasy podstawowej mam teraz wrzucone wszytskie funkcje i dziala poprawnie, ale wg mnie moznaby to jakos rozbic)
nr 3 juz dziala, przy definicji w pliku .cpp nie dalem operatora zasiegu dla przestrzeni nazw, w mainie mam przez extern (ale czy potrzebnie? z reszta zaraz sprawdze) tym czasem prosze o porady :)
czy poprawnym bedzie uzycie using namespace nazwa w pliku zrodlowym z definicjami funckji? |
|
malan |
» 2011-01-26 23:34:45 Jeżeli Ci to pomoże, to też jestem w trakcie tworzenia aplikacji okienkowej. Mam mniej więcej takie menu z "opcjami": == Adresy == *Wyświetl szczegóły *Dodaj nowy adres *Edytuj adres *Usuń adres ...
Do każdej "opcji" powyższego menu mam osobną klasę. Czyli odpowiednio: class ShowAddressDetailsDialog { }; class AddNewAddressDialog { }; class EditAddressDialog { };
class DeleteAddressDialog { };
W każdej klasie tworzę okno dialogowe, deklaruję eventy itp. Obiekty tych klas/dialogów mam zadeklarowane jako pola prywatne głównej klasy okna, a powołanie ich do życia wygląda mniej więcej tak: if( showAddressDetailsDlg == 0 ) { showAddressDetailsDlg = new ShowAddressDetailsDialog(...); showAddressDetailsDlg->init(); }
showAddressDetailsDlg->update(); showAddressDetailsDlg->showDialog() showAddressDetailsDlg->clear();
Aha, no i każdą klasę trzymam w osobnym plikach (*.cpp, *.hpp). |
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2011-01-26 23:51:28 ale oczywiscie kazda z tych klas wspolpracuje z obiektami innych klas - tzn z danymi przechowywanymi, jak np adres. Powiedzmy bedziesz edytowal zapisany adres w obiekcie jednej klasy funckja innej klasy - robisz to przez zaprzyjaznione funkcje?
|
|
malan |
» 2011-01-26 23:55:14 Żadnej przyjaźni. W konstruktorze przesyłam obiekt klasy Database , który zarządza bazą danych. class Address { };
class Database { private: std::vector < Address > addresses; }
Database * database = new Database;
if( showAddressDetailsDlg == 0 ) { showAddressDetailsDlg = new ShowAddressDetailsDialog( database ); showAddressDetailsDlg->init(); }
|
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2011-01-27 17:12:03 nieco rozwine pytanie, mam juz mniej wiecej ulozona architekture programu, zastanawiam sie nad czym i prosze o w miare jasne wyjasnienie: czego lepiej uzyc - wskaznika na obiekt (a za pomoca tego obiektu uzyjemy jego metody) czy lepiej bezposrednio wskaznika funkcji (metody innej klasy) ktora chcemy uzyc Drugie rozwiazanie wydaje sie bardziej precyzyjne, ale czy jest duza roznica? tzn jakie sa zalety i wady jednej i drugiej metody class Rzecz { };
class PudloNaRzeczy { vector < Rzecz *> wektor; void dodaj(); void usun(); void sortuj(); };
class Cos { string opcja; };
class Menu { vector < Cos *> wektor void dodaj_opcje() void wyswietl(); }
mniej wiecej zarysowo o cos takiego mi chodzi - bedzie to poprawnie? czy raczej blednie... |
|
« 1 » |