package p11_klasy.enkapsulacja;

import java.time.LocalDate;
import java.util.List;

public class Program {

	public static void main(String[] args) {
		Osoba ala = new Osoba("Ala", "Kowalska", LocalDate.of(1999, 4, 12));
		System.out.println(ala);
		
		// gdybym chiał odczytać pola obiektu - nie mogę, bo są prywatne
		System.out.println(ala.getImie() + " urodziła się w miesiącu " + ala.getDataUrodzenia().getMonth());
		System.out.println("wiek = " + ala.getWiek());
		System.out.println();
		
		Student student = new Student("Jan", "Kowalski", "2002-02-02", "matematyka", 3);
		System.out.println(student);
		student.dodajOcene(3);
		student.dodajOcene(3);
		student.dodajOcene(5);
		student.dodajOcene(3);
		System.out.println("oceny: " + student.getOceny());
		System.out.println("średnia: " + student.sredniaOcen());
		
		// próba modyfikacji listy za pośrednictwem gettera
		List<Integer> lista = student.getOceny();
		System.out.println(lista);
//		lista.removeIf(x -> x < 4); // usuń wszystkie oceny gorsze niż 4 - w wersji unmodifiable wyrzuca wyjątek
//		System.out.println(lista);
//		System.out.println("średnia: " + student.sredniaOcen());
		System.out.println();
		
		Konto konto1 = new Konto(1, 1000, ala);
		System.out.println(konto1);
		konto1.wplata(300);
		System.out.println(konto1);
		try {
			konto1.wyplata(400);
			System.out.println("nie było błędu wypłaty");
		} catch (Exception e) {
			// e.printStackTrace();
			System.out.println(e);
		}
		System.out.println(konto1);
		
		try {
			konto1.wplata(-2000);
			System.out.println("nie było błędu wpłaty");
		} catch (Exception e) {
			System.out.println(e);
		}
		System.out.println(konto1);
	}

}
