Commit 88fecb73 by Patryk Czarnik

Przygotowanie do tematu dziedziczenia

parent ab16463a
package p10_klasy.v3;
public class TworzenieObiektow {
public static void main(String[] args) {
Osoba a = new Osoba();
// Gdy tworzymy obiekt za pomocą domyślnego konstruktora, to początkowo jest on niezainicjowany,
// tzn. w polach ma wpisane wartości null / 0 i może nam to przeszkadzać.
// Późniejsze wpisanie danych ma dwie wady:
// 1) zajmuje trochę miejsca w kodzie
a.imie = "Ala";
a.wiek = 30;
// 2) programista może łatwo przeoczyć jakieś pole i pozostawić obiekt nie w pełni zainicjowany
// W przypadku obiektów o znaczeniu technicznym (jak np. Scanner) taki brak inicjalizacji może do błędów
a.przedstawSie();
a.nazwisko = "Kowalska";
a.przedstawSie();
System.out.println();
// Aby mieć większą kontrolę nad procesem tworzenia obiektów, i by był on wygodniejszy,
// można w swojej klasie zdefiniować konstruktory.
Osoba b = new Osoba("Basia", "Malinowska", 40);
b.przedstawSie();
}
}
package p10_klasy.v4;
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.v4;
public class Osoba {
String imie, nazwisko;
int wiek;
Osoba() {
}
Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
}
void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
}
boolean jestPelnoletnia() {
return wiek >= 18;
}
public String toString() {
return imie + " " + nazwisko + " (" + wiek + " lat)";
}
}
package p10_klasy.v4;
public class Sklep {
String nazwa;
int cenaPiwa;
int utarg = 0;
Sklep(String nazwa, int cenaPiwa) {
this.nazwa = nazwa;
this.cenaPiwa = cenaPiwa;
}
void sprzedajPiwo(Osoba klient) {
System.out.println("________________");
System.out.println("Klient wchodzi do sklepu " + nazwa + ". Kliencie, przedstaw się...");
klient.przedstawSie();
if(klient.jestPelnoletnia()) {
System.out.println("Osoba " + klient.imie + " kupuje piwo za " + cenaPiwa + " zł");
utarg += cenaPiwa;
} else {
System.out.println("Osoba " + klient.imie + " nie może kupić piwa, bo ma tylko " + klient.wiek + " lat.");
}
System.out.println("^^^^^^^^^^^^^^^");
}
}
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