Commit 7f8b02dd by Patryk Czarnik

Przykład "referencje"

parent f0a0bbc7
package pcz.p11_referencje;
class Konto {
int numer;
int saldo;
Osoba wlasciciel;
Konto(int numer, int saldo, Osoba wlasciciel) {
this.numer = numer;
this.saldo = saldo;
this.wlasciciel = 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 pcz.p11_referencje;
class Osoba {
String imie, nazwisko;
int wiek;
Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
}
@Override
public String toString() {
return imie + " " + nazwisko + " (" + wiek + " l)";
}
}
package pcz.p11_referencje;
public class PrzykladKonto {
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Konto a = new Konto(1, 1000, ala);
System.out.println(a);
a.wplata(300);
System.out.println(a);
}
}
package pcz.p11_referencje;
public class Referencje1 {
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Osoba ola = new Osoba("Ola", "Malinowska", 20);
Konto a = new Konto(1, 1000, ala);
Konto b = new Konto(2, 2000, ola);
Konto c = b;
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
b.wplata(40);
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
c.wplata(8);
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
b = a;
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
c = b;
// tracimy dowiązanie do konta nr 2
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
a = null; // null mówi, że zmienna nie wskazuje na żaden obiekt
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
c = b = a;
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
}
}
package pcz.p11_referencje;
public class Referencje2 {
static void metoda(Konto a, Konto b, int x) {
System.out.println("Początek metody");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
// zmiana wartości typu prostego zawsze jest lokalna; w main nadal bedzie 5000
x += 55;
// zmiana wewnątrz obiektu jest widoczna dla innych (metod, wątków)
// w main na końcu będzie 1024
a.wplata(48); // alternatywnie a.saldo += 24
// Zmiana samej zmiennej typu obiektowego (wpisanie wskaźnika do innego obiektu) jest lokalna.
// Inne metody / wątki tego nie zauważą.
// main w zmiennej b nadal będzie widział Konto nr 2 z saldem 2000.
b = a;
System.out.println("Koniec metody");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
}
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Osoba ola = new Osoba("Ola", "Malinowska", 20);
Konto a = new Konto(1, 1000, ala);
Konto b = new Konto(2, 2000, ola);
int x = 5000;
System.out.println("Początek programu");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
metoda(a, b, x);
System.out.println("Z powrotem w main");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
}
}
package pcz.p11_referencje;
public class Referencje3 {
static void metoda(Konto a, Konto b, Konto c, int x) {
System.out.println("Początek metody");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println("x: " + x);
System.out.println();
x += 55;
b.wplata(48);
a = new Konto(a.numer, a.saldo, a.wlasciciel);
a.saldo = 1033; // lub a.saldo += 33 , lub a.wplata(33)
a.wlasciciel.imie = "Alicja";
System.out.println("Koniec metody");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println("x: " + x);
System.out.println();
}
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Osoba ola = new Osoba("Ola", "Malinowska", 20);
Konto a = new Konto(1, 1000, ala);
Konto b = new Konto(2, 2000, ola);
Konto c = b;
int x = 5000;
System.out.println("Początek programu");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println("x: " + x);
System.out.println();
metoda(a, b, c, x);
System.out.println("Z powrotem w main");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println("x: " + x);
}
}
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