Forse è anche corretto, ma non stai facendo un gran utilizzo dell'array listaOre. Potresti anche toglierlo che tanto non cambia niente. Ti consiglio fare una cosa di questo tipo:
Java:
public class Operaio extends Persona {
private int giornoDelMese; // equivalente al tuo vecchio index
private int[] listaOre = new int[20];
private double retribuzioneStandard, retribuzioneStraordinari;
private double stipendioUltimoMese;
// ...
public void inserisciOre(int n) throws Exception {
if (n > 12) {
throw new Exception("non puoi fare piu di 12 ore");
}
listaOre[giornoDelMese] = n;
giornoDelMese++;
if (giornoDelMese >= 20) {
setStipendioUltimoMese();
svuotaListaOre();
giornoDelMese = 0;
}
}
private void setStipendioUltimoMese() { // nota: private, non public
stipendioUltimoMese = 0;
for (int giorno = 0; giorno < 20; giorno++) {
// se listaOre[giorno] <= 8 incrementa stipendioUltimoMese di ... altrimenti ...
}
}
public void getStipendioUltimoMese() {
return stipendioUltimoMese = 0;
}
private void svuotaListaOre() { // equivalente al tuo svuotalista (nota: private)
for(int i = 0; i < 20; i++) {
listaOre[i] = 0;
}
}
// ...
}