Konwerter systemow liczbowych - jak zaprojektować?

0

Cześć.

W ramach nauki chcę napisać konwerter liczb (np. z binarnego na dziesiętny itp). Wymyśliłem takie wymagania:

  • interfejs graficzny:
    * użytkownik wybiera z jakiego systemu na jaki konwertuje (menu rozwijane)
    * użytkownik wprowadza liczbę (textbox), naciska przycisk, a wynik wyświetla się w drugim textboxie
  • początkowo dostępne bin -> dec oraz dec -> bin
  • rozbudowa o kolejne opcje (np. hex -> bin itp.)

Tu pojawia się moje pytanie. Jak to wszystko zaprojektować. Czy dla każdej konwersji robić oddzielną klasę (np. Bin2Dec, Dec2Bin itp.)? Zrobiłbym jakiś interfejs i podczas rozbudowywania o nowe opcje nowe klasy musiałyby ten interfejs implementować.
Tylko w takim wypadku w zależności od wyboru użytkownika tworzony byłby jeden obiekt i on wykonywałby całą pracę. To może klasa statyczna? Albo singleton (chociaż czy to nie będzie przerost formy nad treścią)?
A może ogólna klasa Logic, która będzie miała odpowiednie metody. I w zależności od wyboru użytkownika z tej metody będzie korzystać. Tutaj jednak istnieje ryzyko, że za sprawą dalszej rozbudowy kod klasy znacznie się wydłuży.
Będę wdzięczny za porady. Zakodzić to zakodzę, ale najgorzej u mnie z rozplanowywaniem.
PS chciałbym napisać to w C# (WPF)

0

Dzięki, przeglądałem tamten temat, ale tam program ma być pisany w C. Natomiast ja chciałbym rozwiązać to podejściem obiektowym.

0

I pewnie myślisz że obiektowy ma być bardziej skomplikowany w użyciu?

0

Wręcz przeciwnie - chciałem żeby był jak najbardziej przejrzysty stąd myślałem o podzieleniu programu na jakieś moduły.
Edit: W C orłem nie jestem, ale z tego co widzę w tamtym temacie to wszystkie możliwe konwersje można załatwić jedną funkcją? W takim razie faktycznie chyba nie ma sensu jakoś mocno rozbudowywać programu? Powinienem wymyślić pewnie inny projekt. :(

1

Prościej niż: sysconv(sysin,sysout,in,out)
Może być tylko: string out=sys.conv(sysin,sysout,in);
Ewentualnie: sys s=new sys(sysin,sysout); if(s.check(in)) string out=s.conv(in);

0

No tak czyli generalnie jedna klasa jeden obiekt i 1-2 metody starczą. Ewidentnie wybrałem sobie za prosty projekt. Tak czy inaczej dzięki.

2

Jak uczysz się WPF to może spróbuj podejść do tego od razu według MVVM?
Zamieściłem w załączniku taki mały przykład na konwerter.

Coś więcej o MVVM:

Generalnie programując w WPF zaleca się korzystanie w MVVM.

PS: tak... są tam magic stringi wiem :-) Ich usunięcie z OnPropertyChanged jest zależne od frameworka więc zostawiłem.

0

algorytm Hornera(Schemat Hornera).

0

Dzięki wielkie za pomoc zaraz zacznę czytać o MVVM :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1