Commit 277bf1ce by Patryk Czarnik

enkapsulacja - zmiana tablicy na listę i wiek na date

parent 13139bd7
package p11_enkapsulacja; package p11_enkapsulacja;
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
public class Osoba { public class Osoba {
private String imie, nazwisko; private String imie, nazwisko;
private int wiek; private LocalDate dataUrodzenia;
public Osoba(String imie, String nazwisko, LocalDate dataUrodzenia) {
this.imie = imie;
this.nazwisko = nazwisko;
this.dataUrodzenia = dataUrodzenia;
}
public 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.dataUrodzenia = LocalDate.now().minus(wiek, ChronoUnit.YEARS);
} }
public String toString() { public String toString() {
...@@ -22,7 +32,13 @@ public class Osoba { ...@@ -22,7 +32,13 @@ public class Osoba {
return nazwisko; return nazwisko;
} }
public LocalDate getDataUrodzenia() {
return dataUrodzenia;
}
public int getWiek() { public int getWiek() {
return wiek; Period czasZycia = Period.between(dataUrodzenia, LocalDate.now());
return czasZycia.getYears();
// ile pełnych lat jest w tym okresie czasu?
} }
} }
package p11_enkapsulacja; package p11_enkapsulacja;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
public class Student extends Osoba { public class Student extends Osoba {
private String kierunek; private String kierunek;
...@@ -9,9 +11,8 @@ public class Student extends Osoba { ...@@ -9,9 +11,8 @@ public class Student extends Osoba {
// Ukrywamy szczegóły implementacji - klient nie musi wiedzieć, w jaki sposób przechowujemy oceny studenta ("to nasza prywatna sprawa") // Ukrywamy szczegóły implementacji - klient nie musi wiedzieć, w jaki sposób przechowujemy oceny studenta ("to nasza prywatna sprawa")
// Żadna inna klasa nie może odwoływać się bezpośrednio do tej tablicy. // Żadna inna klasa nie może odwoływać się bezpośrednio do tej tablicy.
private int[] oceny = new int[10]; // Dzięki temu mogę swobodnie zmienić tablicę na listę z zachowaniem działania metod publicznych - nikomu to nie powinno przeszkadzać.
private int iloscOcen = 0; private List<Integer> oceny = new ArrayList<>();
public Student(String imie, String nazwisko, int wiek, String kierunek, int rok) { public Student(String imie, String nazwisko, int wiek, String kierunek, int rok) {
...@@ -37,19 +38,15 @@ public class Student extends Osoba { ...@@ -37,19 +38,15 @@ public class Student extends Osoba {
} }
public void dodajOcene(int ocena) { public void dodajOcene(int ocena) {
if(iloscOcen == oceny.length) { oceny.add(ocena);
oceny = Arrays.copyOf(oceny, oceny.length*2); // mniej więcej coś takiego robi ArrayList oraz StringBuilder
}
oceny[iloscOcen++] = ocena;
} }
public double sredniaOcen() { public double sredniaOcen() {
double suma = 0.0; double suma = 0.0;
for (int i = 0; i < iloscOcen; i++) { for (int ocena : oceny) {
suma += oceny[i]; suma += ocena;
} }
return suma / iloscOcen; return suma / oceny.size();
} }
} }
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