Commit 277bf1ce by Patryk Czarnik

enkapsulacja - zmiana tablicy na listę i wiek na date

parent 13139bd7
package p11_enkapsulacja;
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
public class Osoba {
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) {
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
this.dataUrodzenia = LocalDate.now().minus(wiek, ChronoUnit.YEARS);
}
public String toString() {
......@@ -22,7 +32,13 @@ public class Osoba {
return nazwisko;
}
public LocalDate getDataUrodzenia() {
return dataUrodzenia;
}
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;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Student extends Osoba {
private String kierunek;
......@@ -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")
// Żadna inna klasa nie może odwoływać się bezpośrednio do tej tablicy.
private int[] oceny = new int[10];
private int iloscOcen = 0;
// Dzięki temu mogę swobodnie zmienić tablicę na listę z zachowaniem działania metod publicznych - nikomu to nie powinno przeszkadzać.
private List<Integer> oceny = new ArrayList<>();
public Student(String imie, String nazwisko, int wiek, String kierunek, int rok) {
......@@ -37,19 +38,15 @@ public class Student extends Osoba {
}
public void dodajOcene(int ocena) {
if(iloscOcen == oceny.length) {
oceny = Arrays.copyOf(oceny, oceny.length*2); // mniej więcej coś takiego robi ArrayList oraz StringBuilder
}
oceny[iloscOcen++] = ocena;
oceny.add(ocena);
}
public double sredniaOcen() {
double suma = 0.0;
for (int i = 0; i < iloscOcen; i++) {
suma += oceny[i];
for (int ocena : oceny) {
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