Wpis z mikrobloga

#programowanie #java

uwaga amator here
zrobiłem 25% kursu javy u Tima Buchalki i zrobiłem sobie mały czelen, myślałem, że rozjebe w moment ale nie idzie mi, więc mam pytanka

co chciałem zrobić: program który będzie mi mówił za ile dni mam w aucie przegląd, za ile kilometrów wymiana świec, serwis podtlenku lpg itd.

moje wyobrażenie było takie, że zrobię oddzielną klasę dla każdej ze sprawdzanych rzeczy, czyli mam teraz klasę wymianaŚwiec, serwisLPG, następnyPrzegląd, a wszystkie z tych klas są "extends" klasy diagnoza - coś czuję że już tutaj gdzieś z------m przy samym założeniu xD
w każdej klasie porobiłem metody, które liczą mi to co chcę i to działa OK

w diagnoza konstruktor który każe podać tylko przebieg (inne dane potrzebne do kalkulacji jak np. data ostatniego przeglądu lub przebieg przy ostatnim serwisie są wpisane na sztywno w klasach i będą modyfikowane setterami)
poza tym w konstruktorze diagnoza chciałem po prostu wołać metody z poszczególnych klas, np.

w klasie diagnoza:

public class diagnoza {

private int przebieg;

gasCheck gaz = new gasCheck(przebieg);
swieceCheck swiece = new swieceCheck(przebieg);

public diagnoza(int przebieg) {
this.przebieg = przebieg;
gaz.showLpgCheck(przebieg);
swiece.swieceCheck(przebieg);

}

następne w main chciałem tylko robić coś w tym stylu:

diagnoza diagnoza = new diagnoza(104000);

i liczyłem na to, że wyprintuje mi wszystkie checki z wszystkich klas, ale dostaję poniższy error

Exception in thread "main" java.lang.StackOverflowError

no i c--j no i cześć.

da się to w ogóle czytać?
da się mnie zrozumieć?
co robe źle?
powodzenia - #programowanie #java

uwaga amator here
zrobiłem 25% kursu javy u Tim...

źródło: comment_1583007233uMd4Ru7GUGLgGAE3eJFXb9.gif

Pobierz
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@powodzenia: Jeśli GasCheck dziedziczy po Diagnoza i w konstruktorze Diagnoza tworzysz nowy GasCheck to wjebujesz się w nieskończony łańcuch tworzenia, który powoduje przepełnienie stosu (StackOverflow)

Przebiega to tak:
1. Wywołujesz konstruktor klasy Diagnoza
2. W jego konstruktorze tworzysz nową klasę GasCheck
3. Klasa GasCheck dziedziczy po Diagnoza, więc wywołuje też konstruktor Diagnoza
4. Patrz punkt 1
  • Odpowiedz
  • 1
@powodzenia masz gdzieś cały ten kod? Jak wygląda klasa gasCheck?
Na początek wyrób sobie nawyki nazw klas z dużej litery i zdecyduj się jednak na angielski w całości.
  • Odpowiedz
  • 0
@powodzenia @Myzreal ma rację. Obliczenia gazu rób w klasie dla gazu.

Jak chcesz zrobić sobie wypisanie wszystkiego to może zacznij od testów jednostkowych. Sam program powinien mieć osobną klasę do zabawy tym. Jakąś główną uruchomieniową. I tam w metodzie main twórz obiekty i wywołuj sobie metody. Ale lepiej to w testach robić. Od razu masz pokrycie.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@powodzenia: btw, co ile te świece wymieniasz? Bo ja wymieniałem przy lpg co rok, ale stwierdziłem że nadgorliwy jestem, skoro mam przebiegi po 15k
  • Odpowiedz
@cochese: możemy powiedzieć że angielski z tuskiem, ale prawda jest taka, że wpisałem w google tłumacz "świece samochodowe" (mogłem wpisać zapłonowe xD). tłumaczenie wydawało mi się na tyle nieprawdopodobne, że wpisałem w google grafika car candles, dostałem w c--j wyników na których były świece zapłonowe, no i dałem się przekonać że jednak tak to się nazywa, choć mi mocno nie pasowało no i siup
  • Odpowiedz