Olio-ohjelmointi kertaus

Staattinen jäsenmuuttuja

Luokalle voidaan määritellä staattinen jäsenmuuttuja. Koska jäsenmuuttuja on nimenomaan luokan muuttuja, sitä ei käytetä luokasta luotujen olioitten kautta, vaan suoraan luokan kautta. Seuraavassa esimerkissä halutaan laskea montako Kissa-oliota eli instanssia luokasta Kissa on tehty. Joka kerta kun luokasta luodaan olio, niin kummassakin kontruktorissa kasvatetaan luokan jäsenmuuttujaa kissojenlkm. Miau!


using System;
namespace JAMK.IT.ooDemot
{
  public class Kissa
  {
    //a standard property
    public string Nimi { get; set; }
    //this private member can be accessed only via the constuctor
    private static int kissojenlkm = 0;
    public Kissa()
    {
      //every time when an instance has been called we will increase the counter	
      kissojenlkm++;
    }
    public Kissa(string nimi)
    {
      //every time when an instance has been called we will increase the counter	
      this.Nimi = nimi;
      kissojenlkm++;
    }
    public static int Montako()
    {
      return kissojenlkm;
    }
  }

  public class TestaaKissat
  {
    public static void Testaa()
    {
      Console.WriteLine("kissoja {0}", Kissa.Montako());//should be zero in the beginning
      Kissa misse = new Kissa();
      Console.WriteLine("kissoja {0}", Kissa.Montako());//should be 1
      Kissa tassu = new Kissa("Tassu");
      Console.WriteLine("kissat senkun lisivyy {0}", Kissa.Montako());//should be 2
      Console.WriteLine("Miauuu");
    }
  }
}

    


Olio-ohjelmoinnin kertaustehtävä

Tehtävänäsi on toteuttaa konsolisovellus AMK, jolla voi näyttää tutkinto-ohjelmia, niihin liittyviä opintojaksoja, ja niihin osallistuvia opettajia ja opiskelijoita.
Luo seuraava luokat ja niistä oliot sovellusta AMK varten. AMK-sovellusta voisivat käyttää ammattikorkeakoulut esittämään tutkinto-ohjelmia, kuten esimerkiksi tieto- ja viestintä, konetekniikka, jne. Sovellus sisältää myös eri tasoiset tutkinnot insinööri amk, insinööri yamk. Tutkinto-ohjelma koostuu opintojaksoista, ja kuhunkin opintojaksoon liittyy opiskelijoita ja opettajia.

Seuraava kuva kertoo luokkien väliset suhteet.

Luo luokat ja niille tarvittavat ominaisuudet ja metodit. Kapseloi luokkien ominaisuudet niin että ne ovat aidosti ominaisuuksia (property). Opintojakso-olio sisältää kokoelman Opiskelijoita-olioita ja Opettaja-olioita, koska Opintojaksolla voi olla useita opettajia. Tee kokoelmaan vähintään kolme Opiskelijaa ja vähintään kaksi Opettajaa. Pääohjelman AMK pitää sisältää vähintään kolme Tutkinto-oliota, ja kukin Tutkinto-olio pitää sisällään vähintään kolme eri Opintojakso-oliota.
Lisää luokalle Opiskelija staattinen luokan jäsenmuuttuja kertomaan opintojaksoille ilmoittautuneiden opiskelijoitten määrän. Kasvata em. laskurimuuttujaa, joka kerta kun Opiskelija-olio luodaan.
Tee pääohjelman tulostus Console.WriteLine:llä näyttäen seuraavat:
-- Tutkinto-ohjelmien nimet ja niiden sisältämät opintojaksot.
-- Kunkin opintojakson opettajien ja opiskelijoiden lukumäärä ja nimet.

Kertaustehtävän palautus

Jos ja kun saat kertaustehtävän onnistuneesti tehdyksi ja testatuksi toimivaksi, kommitoit sen repoon ja pushaa omaan GitHubiisi. Lähetä sen jälkeen opettajalla sähköpostilla linkki em. repoon. Saat ohjelmointikokeeseen yhden lisäpisteen!