/* * Viikkoharjoitus 5, tehtävä 4. * * Olio-ohjelmoinnin perusteet I, kevät 2020. * * Akkua yleisellä tasolla mallintava luokka. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * */ public class Akku { /* * Vakiomuotoiset attribuutit. * */ // Akun varaustasossa on toivomisen varaa. public static final char ALHAINEN = 'A'; // Vielä virtaa. public static final char KOHTUULLINEN = 'K'; // Akussa on hyvin virtaa. public static final char HYVÄ = 'H'; /* * Attribuutit. * */ // Akun varaustaso. Sallitut arvot ovat ALHAINEN, KOHTUULLINEN ja HYVÄ. private char varaustaso; /* * Rakentajat. * */ /* Luodaan uusi akku. */ public Akku() { varaustaso = HYVÄ; } /* * Heittää poikkeuksen, jos uusi taso ei ole ALHAINEN, KOHTUULLINEN tai HYVÄ. */ public Akku(char uusiTaso) throws IllegalArgumentException { // Yritetään asettaa. Asettajan heittämän poikkeuksen annetaan mennä // omia aikojaan rakentajaa kutsuvalle metodille. Otsikossa vain // mainitaan kyseinen poikkeus, jotta luokan käyttäjä tietää, // että rakentaja voi heittää poikkeuksen. varaustaso(uusiTaso); } /* * Aksessorit. * */ public char varaustaso() { return varaustaso; } /* Heittää poikkeuksen, jos uusi taso ei ole ALHAINEN, KOHTUULLINEN tai HYVÄ. */ public void varaustaso(char uusiTaso) throws IllegalArgumentException { // Heitetään poikkeus, jos parametrin arvo on virheellinen. if (ALHAINEN != uusiTaso && uusiTaso != KOHTUULLINEN && uusiTaso != HYVÄ) { throw new IllegalArgumentException(); } // Asetetaan arvo, jos poikkeusta ei heitetty. varaustaso = uusiTaso; } }