Exemplo n.º 1
0
 public void Syo(Hedelma hedelma)
 {
     Console.WriteLine("Hedelmä syöty");
     hedelma.Katoa();
     pisteet++;
 }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            /**
             * Esimerkki3Program.cs
             *
             * Jos EN TUNTISI ohjelmoinnista seuraavia konsepteja:
             * - Luokan parametrillinen rakentaja
             * - Rajapinta ja rajapinnan toteutus
             *
             * Jos TUNNEN ohjelmoinnista seuraavan konseptin:
             * - Staattinen luokan metodi tai staattinen luokan muuttuja
             * - Parametrilliset metodit
             *
             * niin silloin toteutus olisi esimerkin näköinen.
             * Katso kohdat läpi ja siirry Esimerkki4Program.cs ohjelmaan.
             *
             * Edellisiin esimerkkeihin verrattuna suurin ero on, että
             * hedelmä olio syötetään parametrina Syo()-metodiin. Huomaa
             * myös, että nyt voimme luoda useita eri hedelmä ja pacman
             * olioita ja nämä ovat kaikki omia luokan instansseja ja olioita.
             * Tällä tavoin jokin peli jo voisi toimia järkevästi ja pacmaneilla
             * olisi omat pisteet eikä vaikutusta muihin.
             *
             * Nyt staattiset luokan muuttujat on myös poistettu, koska niillä ei
             * varsinaisesti saada mitään lisää tähän. Huomaa, että edelleen
             * pisteet kasvatetaan Syo() -metodissa eikä Hedelmä-luokassa ole
             * mitään viittaista Packam-luokkaan tai sen olioihin.
             *
             * Tästä voisi vääntää kömpelön ratkaisun, jolla pisteisiin voisiin
             * vaikuttaa hedelmän Katoa()-metodista mutta esittelen toisenlaisen
             * ratkaisun seuraavassa esimerkissä, jossa tätä samaa parametrillista
             * metodia on jalostetu eteenpäin.
             *
             * Tässä kohdin on hyvä esittää myös kysymys, kuuluuko Packman-luokan/olion
             * tietää, että Hedelmä tai jokin tällainen muu olio on edes olemassa?
             *
             * Ylläoleva kysymys viittaa luokkien vastuualueisiin, että kuka tunteen ja
             * kenet. Näisäs pienissä esimerkeissä sillä ei ole väliä mutta suuremmissa
             * ohjelmissa vahvat riippuvuudet luokkien kesken aiheuttaa yleensä outoja
             * bugeja ja vaikeuksia kehittää ohjelmaa ketterästi eteenpäin. Selitän vielä
             * Unityn tavan sähköpostissasi, koska siinä käytetään tietääkseni erilaista
             * konseptia ja lähestymistapaa minkä takia se toimii kuten alkuperäisessä
             * viestissä kerroit.
             *
             **/
            Pacman  pacman1  = new Pacman();  // Luodaan uusi pacman1 olio
            Hedelma hedelma1 = new Hedelma(); // Luodaan hedelma1 olio
            Hedelma hedelma2 = new Hedelma(); // Luodaan hedelma2 olio
            Hedelma hedelma3 = new Hedelma(); // Luodaan hedelma3 olio

            pacman1.Syo(hedelma1);            // kutsutaan olion Syo-metodia
            pacman1.Syo(hedelma2);            // kutsutaan olion Syo-metodia
            pacman1.Syo(hedelma3);            // kutsutaan olion Syo-metodia

            Console.WriteLine(pacman1.pisteet);

            Pacman  pacman2  = new Pacman(); // Luodaan uusi pacman2 olio
            Hedelma hedelma4 = new Hedelma();
            Hedelma hedelma5 = new Hedelma();

            pacman2.Syo(hedelma4);
            pacman2.Syo(hedelma5);

            Console.WriteLine(pacman2.pisteet);
            Console.ReadKey();
        }