Odejmowanie podatku od kwoty przychodu

0

Cześć,

na zajęciach kazano nam napisać kod który będzie odejmował podatek od kwoty przychodu i dodawał go do wartości pieniędzy na "koncie".

poniżej pokazuję jak wygląda drzewko ogólnie:
screenshot-20221208172306.png

w klasie Main mam kod komendę:
screenshot-20221208172630.png

to zapytanie jest wysyłane do klasy Human w której są metody setSalary i getSalary, oraz zmienna Salary.
screenshot-20221208173728.png

Generuje to taki wynik na konsoli:
screenshot-20221208173229.png

Problem mam przy dodawaniu wartości do getSalary.

stworzyłem nową klasę nazwałem ją ZUS, która przy podaniu kwoty wyrzuca jakiś napis oraz powinno dodać nową wartość do getSalary.
jeśli kwota byłaby mniejsza od zera powinna zwracać odpowiedni komunikat komunikat:

screenshot-20221208174301.png

po wysłaniu żądania w Main:
screenshot-20221208174353.png

nowy wynik nie przypisuje się do konta bankowego getSalary, this.Salary
screenshot-20221208174441.png

komunikat nadal pokazuje 2500.
Patrząc na to z debbugerem to wygląda jakby dane z klasy Zus nie przechodziły do klasy Human w której jest setter i getter.
próbowałem przenoszenia metod do klasy Zus to tez nic nie zmienia.

Jak dodać wartość do gettera? :/

5

Nie dałeś całego maina, trudno coś powiedzieć. (Gdzie jak tworzysz me?)
W dodatku kod w obrazkach.
PS ZUS dziedziczący z Human jest kozacki XD gettery z logiką i publiczne pola też mi się podobają

0

Już pokazuję Main

import Creatures.Animal;
import Creatures.Human;
import Devices.Car;
import Systemy.Zus;

public class Main {
    public static void main(String[] args) {

        //Zadanie nr 1 v

        Human me = new Human();
        me.firstName = "Łukasz";

        me.pet = new Animal("canis");
        me.pet.checkIfItIsAlive();
        System.out.println("Waga mojego zwierza to: " + me.pet.getWeight());

        me.pet.feed(1);
        System.out.println("Waga mojego zwierza to: " + me.pet.getWeight());

        me.pet.takeForAWalk(1000);
        System.out.println("Waga mojego zwierza to: " + me.pet.getWeight());
        me.pet.checkIfItIsAlive();

        //Zadanie nr 2 x/v

        me.auto = new Car(1, "Audi", "A4", "Benzyna", 120000.0);
        me.auto.milage = 245122.6;

        //Zadanie nr 3 v\S

        System.out.print("\n");

        me.setSalary(2500.0);
        System.out.println(me.getSalary());

        //Zadanie nr 4 x/v

        System.out.print("\n");

        new Zus(2500);
        System.out.println(me.getSalary());

        //Zadanie nr 5
    }
}
2

Salary w me i salary w ZUS to dwie różne salary

0

@Lukasz12a:

Super sposób stawiania zadań / wykonania rzekomo z obiektówki.
Właściwie wszystko na "nie". Idealny przykład jak NIE UCZYĆ

Cytowane tutaj setSalary() jest jedynym przebłyskiem rozsądnej enkapsulacji - wszelkie inne grzebanie w polach publicznych - moje głębokie NIE.
jeden obiekt TępiTrujeMordujeKrawatyWiążeUsuwaCiąże - NIE

@KamilAdam:

Ogrom podobnych problemów

0
KamilAdam napisał(a):

Salary w me i salary w ZUS to dwie różne salary

Jak to zmienić żeby to było jedno salary? Myślałem że dziedziczenie załatwi sprawę. :/

2
Lukasz12a napisał(a):
KamilAdam napisał(a):

Salary w me i salary w ZUS to dwie różne salary

Jak to zmienić żeby to było jedno salary? Myślałem że dziedziczenie załatwi sprawę. :/

Dziedziczenie rozdawane na oślep jest jedną z NAJGORSZYCH praktyk - o dziwo jest bardzo chętnie używane przez marnych twórców kursów, wykładowców itd ...

Zdecydowanie dz. nie jest główną techniką OOP.

Co do ZUS i jego delikwenta - na siłę, bo chcę zaproponowac zdrowszy wzorzec kompozycja.
Albo Human ma referencję
ZUS getMojeUbezpieczenie()

albo ZUS ma listę swoich klientów ....

Jak koszyk owoców MA jabłka, ale nie jest jabłkiem.

1
Lukasz12a napisał(a):
KamilAdam napisał(a):

Salary w me i salary w ZUS to dwie różne salary

Jak to zmienić żeby to było jedno salary? Myślałem że dziedziczenie załatwi sprawę. :/

Tworzysz dwa różne obiekty za pomoca dwóch różnych new

3

Czy przy pisaniu Zus extends Human nie zaświeciła Ci się żadna lampka w głowie, że something is not yes? ;) ZUS tworzysz przez new czyli to całkiem nowy obiekt w pamięci. Przekaż do Zusu referencje obiektu me typu Human. Albo wrzuć treść zadania do https://chat.openai.com/chat xD

0
Skoq napisał(a):

Czy przy pisaniu Zus extends Human nie zaświeciła Ci się żadna lampka w głowie, że something is not yes? ;) ZUS tworzysz przez new czyli to całkiem nowy obiekt w pamięci. Przekaż do Zusu referencje obiektu me typu Human. Albo wrzuć treść zadania do https://chat.openai.com/chat xD

jak przekazać te referencje? :/

1
Lukasz12a napisał(a):

jak przekazać te referencje? :/

Przez setter (tak jak to już robisz) lub przez konstruktor (IMHO lepiej)

0
KamilAdam napisał(a):
Lukasz12a napisał(a):

jak przekazać te referencje? :/

Przez setter (tak jak to już robisz) lub przez konstruktor (IMHO lepiej)

Rozstrzygający jest PROJEKT
Jeśli w momencie urodzenia obiektu musi być szczęsliwiym klientem ZUS - konstruktor
w p.p. - setter

(@KamilAdam tak, wiem można dyskutować na naszym poziomie)

2

Nie korzystaj z dziedziczenia jeśli nie wiesz jeszcze do czego i jak się je stosuje

3

@Lukasz12a: Java 8 wyszła 8 lat temu a tu widze java.util.Date :/
ziomeczku wyszło java.time tylko się liczy :P
https://www.baeldung.com/java-8-date-time-intro

0
scibi_92 napisał(a):

@Lukasz12a: Java 8 wyszła 8 lat temu a tu widze java.util.Date :/
ziomeczku wyszło java.time tylko się liczy :P
https://www.baeldung.com/java-8-date-time-intro

Co ty narzekasz, Hindus tak miał w swoim tutorialu

0
scibi_92 napisał(a):

@Lukasz12a: Java 8 wyszła 8 lat temu a tu widze java.util.Date :/
ziomeczku wyszło java.time tylko się liczy :P
https://www.baeldung.com/java-8-date-time-intro

Super, dzięki! Od razu to wykorzystałem :)

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