Commit 11710822 by Patryk Czarnik

public i private

parent 18bf1a05
package p10_klasy.v5;
public class Konto {
int numer;
int saldo;
Osoba wlasciciel;
Konto(int numer, int saldo, Osoba wlasciciel) {
this.numer = numer;
this.saldo = saldo;
this.wlasciciel = wlasciciel;
}
// można tworzyć więcej konstruktorów, które różnią się liczbą lub typem parametrów
// np. konstruktor tworzący konto z saldem zero:
Konto(int numer, Osoba wlasciciel) {
this(numer, 0, wlasciciel);
}
@Override
public String toString() {
return "Konto nr " + numer + ", " + saldo + " PLN, wł. " + wlasciciel;
}
void wplata(int kwota) {
saldo += kwota;
}
void wyplata(int kwota) {
saldo -= kwota;
}
}
package p10_klasy.v5; package p10_klasy.v5;
public class Osoba { public class Osoba {
protected String imie, nazwisko; private String imie, nazwisko;
protected int wiek; private int wiek;
Osoba() { Osoba() {
} }
Osoba(String imie, String nazwisko, int wiek) { public Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie; this.imie = imie;
this.nazwisko = nazwisko; this.nazwisko = nazwisko;
this.wiek = wiek; this.wiek = wiek;
} }
void przedstawSie() { public void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat."); System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
} }
// final gwarantuje, że żadna podklasa nie będzie mogła nadpisać tej metody // final gwarantuje, że żadna podklasa nie będzie mogła nadpisać tej metody
final boolean jestPelnoletnia() { public final boolean jestPelnoletnia() {
return wiek >= 18; return wiek >= 18;
} }
...@@ -26,5 +26,24 @@ public class Osoba { ...@@ -26,5 +26,24 @@ public class Osoba {
return imie + " " + nazwisko + " (" + wiek + " lat)"; return imie + " " + nazwisko + " (" + wiek + " lat)";
} }
public String getImie() {
return imie;
}
public String getNazwisko() {
return nazwisko;
}
public int getWiek() {
return wiek;
}
public void setImie(String imie) {
this.imie = imie;
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
} }
...@@ -20,7 +20,7 @@ public class Polimorfizm2 { ...@@ -20,7 +20,7 @@ public class Polimorfizm2 {
// ale w każdej podklasie ta metoda może mieć inną treść ("overriding"). // ale w każdej podklasie ta metoda może mieć inną treść ("overriding").
// Wykona się wersja z właściwej klasy. // Wykona się wersja z właściwej klasy.
for (Osoba osoba : osoby) { for (Osoba osoba : osoby) {
System.out.println("* kolejna osoba to " + osoba.imie + " " + osoba.nazwisko); System.out.println("* kolejna osoba to " + osoba.getImie() + " " + osoba.getNazwisko());
System.out.println(" " + osoba); System.out.println(" " + osoba);
System.out.print(" "); System.out.print(" ");
// System.out.println(osoba.kierunek); // nie każda osoba jest studentem // System.out.println(osoba.kierunek); // nie każda osoba jest studentem
...@@ -33,7 +33,7 @@ public class Polimorfizm2 { ...@@ -33,7 +33,7 @@ public class Polimorfizm2 {
// Jeśli tak jest, to możemy bezpiecznie zrzutować (cast) zmienną na typ Student // Jeśli tak jest, to możemy bezpiecznie zrzutować (cast) zmienną na typ Student
Student student = (Student) osoba; Student student = (Student) osoba;
System.out.println(" To jest student kierunku " + student.kierunek System.out.println(" To jest student kierunku " + student.getKierunek()
+ ", który ma średnią ocen " + student.sredniaOcen()); + ", który ma średnią ocen " + student.sredniaOcen());
} }
......
...@@ -6,47 +6,47 @@ import java.math.BigDecimal; ...@@ -6,47 +6,47 @@ import java.math.BigDecimal;
public class Pracownik extends Osoba { public class Pracownik extends Osoba {
private final static int PENSJA_MINIMALNA = 4000; private final static int PENSJA_MINIMALNA = 4000;
String zawod; private String zawod;
BigDecimal pensja; private BigDecimal pensja;
Pracownik() { Pracownik() {
} }
Pracownik(String imie, String nazwisko, int wiek, String zawod, BigDecimal pensja) { public Pracownik(String imie, String nazwisko, int wiek, String zawod, BigDecimal pensja) {
// wywołanie konstruktora z nadklasy // wywołanie konstruktora z nadklasy
super(imie, nazwisko, wiek); super(imie, nazwisko, wiek);
this.zawod = zawod; this.zawod = zawod;
this.pensja = pensja; this.pensja = pensja;
} }
Pracownik(String imie, String nazwisko, int wiek, String zawod, double pensja) { public Pracownik(String imie, String nazwisko, int wiek, String zawod, double pensja) {
// wywołanie innego konstruktora z tej samej klasy // wywołanie innego konstruktora z tej samej klasy
this(imie, nazwisko, wiek, zawod, BigDecimal.valueOf(pensja).setScale(2)); this(imie, nazwisko, wiek, zawod, BigDecimal.valueOf(pensja).setScale(2));
} }
Pracownik(String imie, String nazwisko, int wiek, String zawod, int pensja) { public Pracownik(String imie, String nazwisko, int wiek, String zawod, int pensja) {
this(imie, nazwisko, wiek, zawod, BigDecimal.valueOf(pensja).setScale(2)); this(imie, nazwisko, wiek, zawod, BigDecimal.valueOf(pensja).setScale(2));
} }
Pracownik(String imie, String nazwisko, int wiek, String zawod, String pensja) { public Pracownik(String imie, String nazwisko, int wiek, String zawod, String pensja) {
this(imie, nazwisko, wiek, zawod, new BigDecimal(pensja)); this(imie, nazwisko, wiek, zawod, new BigDecimal(pensja));
} }
Pracownik(String imie, String nazwisko, int wiek, String zawod) { public Pracownik(String imie, String nazwisko, int wiek, String zawod) {
this(imie, nazwisko, wiek, zawod, PENSJA_MINIMALNA); this(imie, nazwisko, wiek, zawod, PENSJA_MINIMALNA);
} }
// tworzenie wielu konstruktorów w tej samej klasie to jest "przeciążanie konstruktorów" / "overloading" // tworzenie wielu konstruktorów w tej samej klasie to jest "przeciążanie konstruktorów" / "overloading"
@Override @Override
public void przedstawSie() { public void przedstawSie() {
System.out.println("Dzień dobry, tu "+ imie + ", pracuję jako " + zawod + " i zarabiam " + pensja +" zł."); System.out.println("Dzień dobry, tu "+ getImie() + ", pracuję jako " + zawod + " i zarabiam " + pensja +" zł.");
} }
@Override @Override
public String toString() { public String toString() {
return "Pracownik [zawod=" + zawod + ", pensja=" + pensja + ", imie=" + imie + ", nazwisko=" + nazwisko return "Pracownik [zawod=" + zawod + ", pensja=" + pensja + ", imie=" + getImie() + ", nazwisko=" + getNazwisko()
+ ", wiek=" + wiek + "]"; + ", wiek=" + getWiek() + "]";
} }
} }
...@@ -5,8 +5,8 @@ public class Przyklad { ...@@ -5,8 +5,8 @@ public class Przyklad {
public static void main(String[] args) { public static void main(String[] args) {
Osoba osoba = new Osoba("Ala", "Kowalska", 30); Osoba osoba = new Osoba("Ala", "Kowalska", 30);
osoba.przedstawSie(); osoba.przedstawSie();
// System.out.println("Imię i nazwisko: " + osoba.imie + " " + osoba.nazwisko); System.out.println("Imię i nazwisko: " + osoba.getImie() + " " + osoba.getNazwisko());
// osoba.imie = "Alicja"; osoba.setImie("Alicja");
osoba.przedstawSie(); osoba.przedstawSie();
Student student = new Student("Adam", "Abacki", 21, 2, "medycyna"); Student student = new Student("Adam", "Abacki", 21, 2, "medycyna");
...@@ -15,21 +15,15 @@ public class Przyklad { ...@@ -15,21 +15,15 @@ public class Przyklad {
student.dodajOcene(4); student.dodajOcene(4);
student.dodajOcene(5); student.dodajOcene(5);
//NK student.oceny.add(100); //NK student.oceny.add(100);
student.dodajOcene(100); try {
student.dodajOcene(100);
} catch (Exception e) {
System.out.println("Nie udało się dodać dziwnej oceny");
}
System.out.println("Średnia ocen: " + student.sredniaOcen()); System.out.println("Średnia ocen: " + student.sredniaOcen());
Sklep zabka = new Sklep("Żabka", 6); Sklep zabka = new Sklep("Żabka", 6);
zabka.sprzedajPiwo(student); zabka.sprzedajPiwo(student);
Konto konto1 = new Konto(1, 1000, osoba);
Konto konto2 = new Konto(2, student);
System.out.println(konto1);
System.out.println(konto2);
konto1.wplata(3500);
System.out.println(konto1);
} }
} }
...@@ -15,10 +15,10 @@ public class Sklep { ...@@ -15,10 +15,10 @@ public class Sklep {
System.out.println("Klient wchodzi do sklepu " + nazwa + ". Kliencie, przedstaw się..."); System.out.println("Klient wchodzi do sklepu " + nazwa + ". Kliencie, przedstaw się...");
klient.przedstawSie(); klient.przedstawSie();
if(klient.jestPelnoletnia()) { if(klient.jestPelnoletnia()) {
System.out.println("Osoba " + klient.imie + " kupuje piwo za " + cenaPiwa + " zł"); System.out.println("Osoba " + klient.getImie() + " kupuje piwo za " + cenaPiwa + " zł");
utarg += cenaPiwa; utarg += cenaPiwa;
} else { } else {
System.out.println("Osoba " + klient.imie + " nie może kupić piwa, bo ma tylko " + klient.wiek + " lat."); System.out.println("Osoba " + klient.getImie() + " nie może kupić piwa, bo ma tylko " + klient.getWiek() + " lat.");
} }
System.out.println("^^^^^^^^^^^^^^^"); System.out.println("^^^^^^^^^^^^^^^");
} }
......
...@@ -4,14 +4,14 @@ import java.util.ArrayList; ...@@ -4,14 +4,14 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Student extends Osoba { public class Student extends Osoba {
int rok; private int rok;
String kierunek; private String kierunek;
private List<Integer> oceny = new ArrayList<>(); private List<Integer> oceny = new ArrayList<>();
Student() { Student() {
} }
Student(String imie, String nazwisko, int wiek, int rok, String kierunek) { public Student(String imie, String nazwisko, int wiek, int rok, String kierunek) {
super(imie, nazwisko, wiek); super(imie, nazwisko, wiek);
this.rok = rok; this.rok = rok;
this.kierunek = kierunek; this.kierunek = kierunek;
...@@ -24,15 +24,14 @@ public class Student extends Osoba { ...@@ -24,15 +24,14 @@ public class Student extends Osoba {
// że jest to ostateczna definicja i podklasa nie może jeje zmienić // że jest to ostateczna definicja i podklasa nie może jeje zmienić
// 2) Dodać nowe metody, których nie było w nadklasie // 2) Dodać nowe metody, których nie było w nadklasie
void dodajOcene(int ocena) { public void dodajOcene(int ocena) {
if(ocena >= 2 && ocena <= 5) { if(ocena < 2 || ocena > 5) {
oceny.add(ocena); throw new IllegalArgumentException("błędna ocena " + ocena);
} else {
System.err.println("błędna ocena " + ocena);
} }
oceny.add(ocena);
} }
double sredniaOcen() { public double sredniaOcen() {
double suma = 0; double suma = 0;
for(int ocena : oceny) { for(int ocena : oceny) {
suma += ocena; suma += ocena;
...@@ -43,9 +42,9 @@ public class Student extends Osoba { ...@@ -43,9 +42,9 @@ public class Student extends Osoba {
// 3) Nadpisać (override) metody, które były zdefiniowane w nadklasie // 3) Nadpisać (override) metody, które były zdefiniowane w nadklasie
// czyli dla istniejących metoda podać inną treść. // czyli dla istniejących metoda podać inną treść.
@Override @Override
void przedstawSie() { public void przedstawSie() {
System.out.println("Hej tu "+ imie + " " + nazwisko System.out.println("Hej tu "+ getImie() + " " + getNazwisko()
+ ", studiuję kierunek " + kierunek + ", jestem na " + rok + " roku."); + ", studiuję kierunek " + getKierunek() + ", jestem na " + rok + " roku.");
} }
// Od Javy 5 przed definicją metody, która nadpisuje definicję z nadklasy, można umieścić adnotację @Override // Od Javy 5 przed definicją metody, która nadpisuje definicję z nadklasy, można umieścić adnotację @Override
// Ważne: nawet bez tej adnotacji nadpisanie jest skuteczne. Adnotacja tylko: // Ważne: nawet bez tej adnotacji nadpisanie jest skuteczne. Adnotacja tylko:
...@@ -56,7 +55,15 @@ public class Student extends Osoba { ...@@ -56,7 +55,15 @@ public class Student extends Osoba {
@Override @Override
public String toString() { public String toString() {
// do tego, co zwraca toString zdefiniowany w klasie Osoba, dodaję info o roku i kierunku studiów: // do tego, co zwraca toString zdefiniowany w klasie Osoba, dodaję info o roku i kierunku studiów:
return super.toString() + ", studiuje na " + rok + " roku kierunku " + kierunek; return super.toString() + ", studiuje na " + rok + " roku kierunku " + getKierunek();
}
public int getRok() {
return rok;
}
public String getKierunek() {
return kierunek;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment