Dobrý den,
mohl bych poprosit o radu s tím to úkolem, moc to nechápu, děkuji.
Úkol: Do třídy Scitacka doplňte deklaraci instanční proměnné soucet, která bude uchovávat součet obou čísel uložených v instanci. Uvědomte si, že hodnota této proměnné je závislá na ostatních instančních proměnných a bude tedy nutné provést vždy její aktualizaci v případě, že dojde ke změně hodnoty některého ze sčítaných čísel. Proveďte potřebné úpravy kódu třídy Scitacka.
Program:
package scitacka;
/**
* Trida Scitacka predstavuje model scitacky, ktera pouze umi secist dve cela
* cisla typu int. Kazda instance teto tridy uchovava dve cela cisla typu int,
* ktera se daji menit a je mozne kdykoliv urcit jejich soucet pomoci zavolani
* metody soucet().
*
* @author Lukáš Mrzena
* @version 15.2.2016
*/
public class Scitacka {
// instancni promenne, ktere uchovavaji dve cisla, ktera se budou scitat
private int cislo1;
private int cislo2;
/**
* Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
* scitanych cisel na hodnoty dane parametry cislo1 a cislo2.
*
* @param cislo1 levy scitanec
* @param cislo2 pravy scitanec
*/
public Scitacka(int cislo1, int cislo2) {
this.cislo1 = cislo1;
this.cislo2 = cislo2;
}
/**
* Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
* scitanych cisel na nulu.
*/
public Scitacka() {
cislo1 = 0;
cislo2 = 0;
//this(0, 0);
}
/**
* Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
* scitanych cisel na hodnotu danou parametrem cislo.
*
* @param cislo spolecna hodnota obou scitancu
*/
public Scitacka(int cislo) {
this.cislo1 = cislo;
this.cislo2 = cislo;
//this(cislo, cislo);
}
/**
* Vraci hodnotu leveho scitance.
*
* @return Metoda vraci hodnotu scitance cislo1 z vyrazu cislo1 + cislo2,
* ktery se da vyhodnotit pomoci metody soucet().
*/
public int getCislo1() {
return cislo1;
}
/**
* Vraci hodnotu praveho scitance.
*
* @return Metoda vraci hodnotu scitance cislo2 z vyrazu cislo1 + cislo2,
* ktery se da vyhodnotit pomoci metody soucet().
*/
public int getCislo2() {
return cislo2;
}
/**
* Metoda nastavi hodnotu leveho scitance pomoci parametru cislo1.
*
* @param cislo1 hodnota typu int, ktera se pouzije k nastaveni leveho
* scitance
*/
public void setCislo1(int cislo1) {
this.cislo1 = cislo1;
}
/**
* Metoda nastavi hodnotu leveho a praveho scitance pomoci parametru cislo1
* a cislo2.
*
* @param cislo1 hodnota typu int, ktera se pouzije k nastaveni leveho
* scitance
* @param cislo2 hodnota typu int, ktera se pouzije k nastaveni praveho
* scitance
*/
public void setCislo1ACislo2(int cislo1, int cislo2) {
this.cislo1 = cislo1;
this.cislo2 = cislo2;
//setCislo1(cislo1);
//setCislo2(cislo2);
}
/**
* Metoda nastavi hodnotu praveho scitance pomoci parametru cislo2.
*
* @param cislo2 hodnota typu int, ktera se pouzije k nastaveni praveho
* scitance
*/
public void setCislo2(int cislo2) {
this.cislo2 = cislo2;
}
/**
* Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
*
* @return Vraci hodnotu typu int, ktera predstavuje soucet obou cisel
* ulozenych v instanci. V pripade preteceni neni vyhozena zadna vyjimka a
* metoda vraci chybny vysledek.
*/
public int soucet() {
return cislo1 + cislo2;
}
/**
* Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
*
* @return Vraci hodnotu typu long, ktera predstavuje soucet obou cisel
* ulozenych v instanci.
*/
public long soucetLong() {
return (long) cislo1 + cislo2;
}
/**
* Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
*
* @return Vraci hodnotu typu long, ktera predstavuje soucet obou cisel
* ulozenych v instanci. Porovnejte s metodou soucetLong().
*/
public long soucetLong1() {
return (long) (cislo1 + cislo2);
}
/**
* Vraci znakovou reprezentaci instance, ktera popisuje jeji stav.
*
* @return Vraci objekt typu String, ktery obsahuje hodnoty obou scitanych
* cisel. Priklad: "Scitacka{cislo1 = 23, cislo2 = 123}".
*/
@Override
public String toString() {
return "Scitacka{" + "cislo1 = " + cislo1 + ", cislo2 = " + cislo2 + "}";
}
/**
* Testovaci metoda, ktera vytvori novou scitacku, kterou inicializuje
* pomoci parametru levyScitanec a pravyScitenec. Potom vytiskne oba
* scitance a jejich soucet.
*
* @param levyScitanec levy scitanec
* @param pravyScitanec pravy scitanec
*/
public static void testScitacka(int levyScitanec, int pravyScitanec) {
Scitacka scitacka = new Scitacka(levyScitanec, pravyScitanec);
System.out.println(scitacka);
int cislo1 = scitacka.getCislo1();
int cislo2 = scitacka.getCislo2();
// System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucet());
// System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucetLong());
System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucetLong1());
System.out.println();
}
/**
*
* @param args the command line arguments
*/
public static void main(String[] args) {
testScitacka(0, 0);
// Scitacka scitacka1 = new Scitacka();
// System.out.println(scitacka);
// int cislo1 = scitacka1.getCislo1();
// int cislo2 = scitacka1.getCislo2();
// int soucet = scitacka1.soucet();
// System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);
testScitacka(5, 5);
// Scitacka scitacka2 = new Scitacka(5);
// System.out.println(scitacka);
// cislo1 = scitacka2.getCislo1();
// cislo2 = scitacka2.getCislo2();
// soucet = scitacka2.soucet();
// System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);
testScitacka(5, 10);
// Scitacka scitacka3 = new Scitacka(5, 10);
// System.out.println(scitacka);
// cislo1 = scitacka3.getCislo1();
// cislo2 = scitacka3.getCislo2();
// soucet = scitacka3.soucet();
// System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);
testScitacka(5, -10);
testScitacka(Integer.MAX_VALUE, 1);
testScitacka(Integer.MAX_VALUE, Integer.MAX_VALUE);
testScitacka(Integer.MIN_VALUE, Integer.MIN_VALUE);
}
}