Commit 86c33711 by Patryk Czarnik

oceny studenta - zmiana tablicy na listę

parent ab968b21
...@@ -2,14 +2,14 @@ package p11_klasy.enkapsulacja; ...@@ -2,14 +2,14 @@ package p11_klasy.enkapsulacja;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
public class Student extends Osoba { public class Student extends Osoba {
private String kierunek; private String kierunek;
private int rok; private int rok;
private int[] oceny = new int[5]; private List<Integer> oceny = new ArrayList<>();
private int liczbaOcen = 0; // tu zmienialiśmy reprezentację tablicową na listową
// dzięki enkapsulacji mieliśmy pewność, że zmiany ograniczają się do klasy Student
public Student(String imie, String nazwisko, LocalDate dataUrodzenia, String kierunek, int rok) { public Student(String imie, String nazwisko, LocalDate dataUrodzenia, String kierunek, int rok) {
super(imie, nazwisko, dataUrodzenia); super(imie, nazwisko, dataUrodzenia);
...@@ -37,29 +37,19 @@ public class Student extends Osoba { ...@@ -37,29 +37,19 @@ public class Student extends Osoba {
} }
public void dodajOcene(int ocena) { public void dodajOcene(int ocena) {
// ważny schemat w programowaniu, używany m.in. przez klasy ArrayList, StringBuilder oceny.add(ocena);
// gdy w tablicy brakuje miejsca, tworzymy nową tablicę 2x większą i kopiujemy do niej elementy
if(liczbaOcen == oceny.length) {
System.out.println("powiększanie tablicy");
oceny = Arrays.copyOf(oceny, 2 * oceny.length);
}
oceny[liczbaOcen++] = ocena;
} }
public List<Integer> getOceny() { public List<Integer> getOceny() {
List<Integer> lista = new ArrayList<>(liczbaOcen); return oceny;
for(int i = 0; i < liczbaOcen; i++) {
lista.add(oceny[i]);
}
return lista;
} }
public double sredniaOcen() { public double sredniaOcen() {
double suma = 0; double suma = 0;
for(int i = 0; i < liczbaOcen; i++) { for(int ocena : oceny) {
suma += oceny[i]; suma += ocena;
} }
return suma / liczbaOcen; 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