"Aplikacja bankowa" kilka pytań

0

Link do repo:
https://github.com/dmt1337x/BankingApp

  1. Mam problem z przesyłaniem danych. Mianowice Przy wpłacie/wypłacie wszystko działa, pokazuje poprawnie saldo, przy "zalogowaniu" także wyświetla poprawnie, natomiast po wyjściu do menu głównego i wyświetleniu klientów (showClient) pokazuje stan pierwotny. Po ponownym logowaniu dalej jest okej. Podejrzewam że jest to spowodowane tym że raz przekazuję przez accounts, a innym razem accountsData. Tylko nie wiem jak to naprawić.
  2. System logowania - tutaj chciałbym to jakoś zautomatyzować jeśli byłoby więcej "klientów" żebym do każdego nie musiał na sztywno robić ifa. Da się to zrobić bez bazy danych? po prostu wpisuje ID i PIN i powinno dopasować. Pętla z tablicami? Tylko nie za bardzo wiem jak to wykonać.
  3. Cały kod - czy nie jest to trochę zagmatwane? Chciałem żeby wszystko było uporządkowane w klasach, a wyszło sami widzicie jak. Wydaje mi się że za dużo odwołań do metod przez obiekty etc. Jakieś wskazówki jak zrobić żeby było to bardziej jasne i przejrzyste. Czy taki styl pisania jest ok?

Nie szukam gotowych rozwiązań tylko naprowadzenia.
Podejrzewam, że te pytania są banalne tylko że im więcej nad tym siedzę tym mniej wiem :D I potrzebuję kilku wskazówek.
Dzięki! :)

Edit:
Łapanie wyjątków i dopracowanie szczegółów będzie później, na razie chcę żeby cały schemat działał jak należy.

2

Chyba trochę za wcześnie na takie aplikacje. Na początek sugeruję nauczyć się Javy - jak działają pola, metody, kolekcje oraz zacząć posługiwać się debuggerem. Będzie łatwiej. Na tym etapie nauki wskazówki odnośnie wzorców projektowych, separacji modelu od widoku niewiele wniosą.

Odpowiadając na pytania:
Ad. 1) Użyj debuggera
Ad. 2) Naucz się używać kolekcji w Javie
Ad. 3) Taki styl pisania nie jest ok, do stanu obiektu dobieramy się przez metody. Odnośnie zagmatwania - może nieświadomie, ale wygląda na zalążek wzorca stanu - na każdym etapie procesu dostępne są inne metody - zamysł jest ok, realizacja wymaga dużych poprawek (np. oddzielenie klas odpowiedzialnych za stan aplikacji od klas odpowiedzialnych za interakcję z użytkownikiem -> wzorzec MVC).

0

Nie chce cię martwic, ale ten kod nie ma absolutnie żadnego sensu. X razy tworzysz osobne instancje tych AccountData więc jak w jednym miejscu coś zmieniasz, to w innym tego nie widać, bo masz tam zupełnie inne obiekty. Robisz coś takiego:

void fun1(){
    int x = 1;
}
void fun2(){
    int x = 2;
}

i wierzysz że nagle wołając fun2 wszędzie w kodzie gdzie masz zmienną x jego wartość ustawi sie na 2.

0

W trakcie pisania zauważyłem, że sam się pogubiłem w tym co piszę. Napisałem podobną apkę w dużo prostszy sposób i było okej. Więc zabrałem się za bardziej złożoną i trochę bardziej skomplikowaną jak dla mnie i zacząłem się w tym gubić. Myślałem, że może robię jakiś mały błąd i to mi się sypie ale w takim razie problem jest dużo głębiej.

@Charles_Ray:
3. Taki był zamysł, ale w trakcie pisania coś mi się wysypywało i próbowałem zrobić to w inny sposób i zaczął mi się robić bałagan.

@Shalom: Nie, nie. Wiem, że tak nie jest. Sam już nie wiem co chciałem tutaj osiągnąć...

Czyli mam się brać za coś prostszego... Nudzi mnie już pisanie tych samych linijek i szukałem jakiejś inspiracji z którą zejdzie mi torchę dlużej niz godzine. Javy uczę sie 2 tyg więc to dopiero początki. Dzięki za feedback :)

1

Klikaj sobie zadania z https://adventofcode.com/2021/events są całkiem fajną opcją do nauki nowego języka.

0

Nie lubię się poddawać.
Nowe repo
https://github.com/dmt1337x/Banking2

Popatrzyłem na jedną i drugą wersje...hmmm przepaść.
Nie wpadłem żeby zrobić to w Array.
Początek zanim sobie w głowie to poukładałem nie miałem pojęcia jak zacząć ale potem poszło szybko.
Wszystko działa, wartości są zapisywane i przechowywane.

Pytania:

  1. Logowanie - ma nie być wejścia w Operacje bez zalogowania. Mam pustkę w głowie. Jakieś nakierowanie w jaki sposób to zrobic? Może całkowicie zmienić zamysł tego logowania?
  2. Styl kodu - tak już chyba jest lepiej. Jakiś feedback?

Jakieś wskazówki co można poprawić odnośnie mojego toku myślenia i tego jak pisze?

2
  1. Musisz mieć jakiś ogolnodostepny rejestr, mówiący, kto jest aktualnie zalogowany.
  2. Jest mniej kodu, to na plus, ale dalej wszystko jest pomieszane - np. jakieś printy w setClient. Poczytaj o podstawach strukturyzacji kodu i podzialu odpowiedzialnosci, np. MVC. Kolejna sprawa - brak testów.

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