/* * Olio-ohjelmoinnin perusteet I. * * Monimuotoista parametrin väijymistä ja välitystä. Mallinnettavasta käsitteestä * tunnetaan tässä esimerkissä vain taipumus sieppailla olioita. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * * Viimeksi muutettu 28.1.2020. * */ public class Ufo { /* * Oliometodit. * */ /* * Siepataan kohteeksi valittu olio ja suoritetaan mahdollisesti kokeita, * joilla voi olla sivuvaikutuksia. */ public void abduktoi(Object kohde) { // Aloitetaan kokeilu, jos saatiin kiinni nisäkkään konkreettista // jälkeläisluokkaa edustava olio. if (kohde instanceof Nisakas) { // Operointi alkaa. System.out.print("Zap..."); // Asetetaan olioon viite, jonka kautta päästään käsiksi painoon. Nisakas apu = (Nisakas)kohde; // Mutatoidaan nisäkästä siten, että paino saattaa kasvaa hieman. double vanhaPaino = apu.paino(); double uusiPaino = vanhaPaino + 0.001 * Math.random() * vanhaPaino; apu.paino(uusiPaino); // Operointi loppuu. System.out.println("pppppp!"); } // Muita olioita hyljitään. else { System.out.println("Reject and eject!"); } } }