// Liitetään pakkaukseen. package pino; // Iterable-toteutuksen vuoksi. import java.util.Iterator; /* * Olio-ohjelmoinnin perusteet I. * * Pino-rajapinnan suppein mahdollinen toteutus abstraktissa luokassa. * * Alkion tyyppi on parametrisoitu. * * Pinon koolle asetetaan yläraja. * * Tämän luokan jälkeläisen tulee toteuttaa oma iteraattori ja korvata iterator- * metodi, jotta se voidaan käydä läpi for-each-rakenteella. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * * Viimeksi muutettu 20.2.2020. * */ public abstract class AbstraktiPino implements Pino, Iterable { /* * Attribuutit. * */ // Alkioiden maksimimäärä. private int maxKoko; /* * Rakentajat. * */ public AbstraktiPino(int uusiMaxKoko) { if (uusiMaxKoko >= 0) { maxKoko = uusiMaxKoko; } } /* * Aksessorit. * */ public int maxKoko() { return maxKoko; } /* * Pinon operaatioiden korvaus toteuttamalla. * 20.2.2020: lisaa --> lisää */ public boolean lisää(E o) { return false; } public E poista() { return null; } public int koko() { return 0; } public boolean onkoTyhja() { return true; } public E ylin() { return null; } /* * Iterable-rajapinnan toteutus. * */ /* Luo pinolle iteraattorin ja palauttaa viitteen siihen. */ @Override public Iterator iterator() { return null; } }