Пример #1
0
    static void Main(string[] args)
    {
        //Tässä määritellään asiakas-olio.
        Asiakas asiakas = new Asiakas("Amanda", 1000);

        //Tässä tulostetaan asiakkaan tiedot kutsumalla
        //TulostaTiedot()-metodi.
        asiakas.TulostaTiedot();

        //Tässä määritellään hopeaEtuAsiakas-olio.
        HopeaEtuAsiakas hopeaEtuAsiakas = new
                                          HopeaEtuAsiakas("Emanuel", 2000, 5430.85m);

        //Tässä tulostetaan hopeaEtuAsiakas-olion tiedot.
        hopeaEtuAsiakas.TulostaTiedot();
        //Tässä lasketaan bonus
        Console.WriteLine("Bonus: {0,0:c2}", hopeaEtuAsiakas.LaskeBonus());

        //Tässä määritellään kultaEtuAsiakas-olio.
        KultaEtuAsiakas kultaEtuAsiakas = new
                                          KultaEtuAsiakas("Emiliano", 3000, 15430.85m);

        //Tässä tulostetaan kultaEtuAsiakas-olion tiedot.
        kultaEtuAsiakas.TulostaTiedot();

        //Tässä lasketaan bonus
        Console.WriteLine("Bonus: {0,0:c2}", kultaEtuAsiakas.LaskeBonus());
    }
Пример #2
0
    static void Main(string[] args)
    {
        //Tässä määritellään hopeaEtuAsiakas-olio.
        HopeaEtuAsiakas hopeaEtuAsiakas = new
                                          HopeaEtuAsiakas("Emanuel", 2000, 5430.85m);

        //Tässä tulostetaan hopeaEtuAsiakas-olion tiedot.
        hopeaEtuAsiakas.TulostaTiedot();

        //Tässä kutsutaan LaskeBonus()-metodi.
        Console.WriteLine("HopeaEtuAsiakkaan bonus on: {0,0:c2}", hopeaEtuAsiakas.LaskeBonus());
    }
Пример #3
0
        static void Main(string[] args)
        {
            //Tässä määritellään hopeaEtuAsiakas-olio.
            HopeaEtuAsiakas hopeaEtuAsiakas = new
                                              HopeaEtuAsiakas("Emanuel", 2000, 5430.85m);

            //Tässä tulostetaan hopeaEtuAsiakas-olion tiedot.
            hopeaEtuAsiakas.TulostaTiedot();

            //Tässä asiakkaan bonus tulostetaan näytölle.
            Console.WriteLine("HopeaEtuAsiakkaan bonus on: {0,0:c2}", hopeaEtuAsiakas.LaskeBonus());

            //Tässä kutsutaan LaskeKorvaus()-metodi. Huomaa, että
            //koska se ei sisällä mitään koodia, se ei suorita eikä
            //tulosta mitään!
            hopeaEtuAsiakas.LaskeKorvaus();
        }
Пример #4
0
 static void Main(string[] args)
 {
   //Tässä määritellään olio Asiakas-luokasta.
   Asiakas asiakas = new Asiakas("Emilia", 1000);
   
   //Tässä asiakkaan tiedot tulostetaan näytölle.
   asiakas.TulostaTiedot();
   
   //Tässä määritellään olio HopeaEtuAsiakas-luokasta.
   HopeaEtuAsiakas hopeaEtuAsiakas = new 
   HopeaEtuAsiakas("Julia", 2000, 5430.85m);
   
   hopeaEtuAsiakas.TulostaTiedot();
   
   //Tässä asiakkaan saama bonus lasketaan ja 
   //tulostetaan näytölle.
   hopeaEtuAsiakas.LaskeBonus();
 }
        static void Main(string[] args)
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            //Tässä määritellään asiakas-olio.
            Asiakas asiakas = new Asiakas("Amanda", 1000);

            //Tässä tulostetaan asiakkaan tiedot kutsumalla
            //TulostaTiedot()-metodi.
            asiakas.TulostaTiedot();

            //Tässä määritellään hopeaEtuAsiakas-olio.
            HopeaEtuAsiakas hopeaEtuAsiakas = new
                                              HopeaEtuAsiakas("Emanuel", 2000, 5430.85m);

            //Tässä tulostetaan hopeaEtuAsiakas-olion tiedot.
            hopeaEtuAsiakas.TulostaTiedot();

            //Tässä määritellään kultaEtuAsiakas-olio.
            KultaEtuAsiakas kultaEtuAsiakas = new
                                              KultaEtuAsiakas("Emiliano", 3000, 15430.85m);

            //Tässä tulostetaan kultaEtuAsiakas-olion tiedot.
            kultaEtuAsiakas.TulostaTiedot();
        }
Пример #6
0
    static void Main(string[] args)
    {
        /*
         * Tässä teen eri kokeilut upcast ja downcast ymmärtämiseen.
         *
         */
        // Asiakas on HenkiloTiedon aliluokka
        Asiakas vadimAsiakas = new Asiakas("Vadim", 111, 3);
        // HenkiloTiedot on ylin luokka
        HenkiloTiedot vadimHenkiloTiedot = new HenkiloTiedot("Vadim", 111);
        // muunnetaan Asiakas luokka sen yliluokkaan (upcast).
        HenkiloTiedot vadimAsiakasHenkiloTeidoksi = (HenkiloTiedot)vadimAsiakas;

        Console.WriteLine("-----HenkiloTiedon alkuperainen TulostaTiedot()-----");
        vadimHenkiloTiedot.TulostaTiedot();
        Console.WriteLine("-----Asikaan muunnettu HenkiloTiedoksi TulostaTiedot()-----");
        vadimAsiakasHenkiloTeidoksi.TulostaTiedot();
        Console.WriteLine("-----Ja Asiakkaan alkuperainen TulostaTiedot()-----");
        vadimAsiakas.TulostaTiedot();
        Console.WriteLine("\n\n");

        Console.WriteLine("Tässä yritetaan muuntaa yliluokka HenkiloTiedot alaluokaksi Asiakas");
        // yritetaan muuntaa yliluokka HenkiloTiedot alaluokaksi Asiakas
        try
        {
            Asiakas vadimAlaLuokkaHenkiloTiedot = (Asiakas)vadimHenkiloTiedot;
            // tulostetaan
            vadimAlaLuokkaHenkiloTiedot.TulostaTiedot();
        }
        catch
        {
            Console.WriteLine("Yläluokka ei muuttuu alaluokaksi...");
        }

        Console.WriteLine("----Yritetaan aikasemmin muunnettu alaluokka yliluokaksi muuntaa alaluokaksi-----");
        // yritetaan muuntaa yliluokka HenkiloTiedot alaluokaksi Asiakas
        Asiakas vadimVanhaAla_YliLuokkaHenkiloTiedot = (Asiakas)vadimAsiakasHenkiloTeidoksi;

        // tulostetaan
        vadimVanhaAla_YliLuokkaHenkiloTiedot.TulostaTiedot();

        Console.WriteLine("\n");

        // muunnetaan alasin luokka HopeaAsiakas ylinluokkaan HenkiloTiedot
        HopeaEtuAsiakas vadimHopeaAsiakas = new HopeaEtuAsiakas("Vadim", 111, 3, 100.10f);

        Console.WriteLine("----Tässä alinluokan TulostaTiedot ja LaskeBonus----");
        vadimHopeaAsiakas.TulostaTiedot();
        vadimHopeaAsiakas.LaskeBonus();
        Console.WriteLine("\n");

        Console.WriteLine("----Munnoksen vadimHopeaAsikass ylinluokaksi HenkiloTiedot() jälkeen----");
        HenkiloTiedot vadimHopeaYlinLuokkaan = (HenkiloTiedot)vadimHopeaAsiakas;

        vadimHopeaYlinLuokkaan.TulostaTiedot();
        Console.WriteLine("\n");

        Console.WriteLine("----Takaisin entinen ala ja nyt ylinluokka vadimHopeaYlinLuokkaan alaluokaksi----");
        HopeaEtuAsiakas entAlaNytYlaVadimHopea = (HopeaEtuAsiakas)vadimHopeaYlinLuokkaan;

        entAlaNytYlaVadimHopea.TulostaTiedot();
        entAlaNytYlaVadimHopea.LaskeBonus();
        Console.WriteLine("\n");


        // yritetään muuntaa aikasemmin muunnettu HopeaEtuAsiakas luokka muuntaa Asiakas luokaaksi
        Console.WriteLine("-----Munnetaan aikasemmin muunnettu HopeaEtuAsiakas-olio newAsiakas-olioksi");
        try
        {
            Asiakas newAsiakas = (Asiakas)entAlaNytYlaVadimHopea;
            newAsiakas.TulostaTiedot();
            newAsiakas.LaskeBonus();
        }
        catch
        {
            Console.WriteLine("Yläluokka ei muuttuu alaluokaksi...");
        }

        Console.WriteLine("\n");

        /*
         *
         * Tässä lopetetaan omat kokeilut, eli aikasemmin munnettu alaluokka yliluokaksi
         * saa muuntaa takaisin alaluokaksi (downcast)
         */

        //Seuraavassa määritellään hopeaEtuAsiakas-olio
        HopeaEtuAsiakas hopeaEtuAsiakas = new
                                          HopeaEtuAsiakas("Laura", 3000, 10, 12345.00f);

        //tulostetaan tulevaa vertaulua varten
        Console.WriteLine("ToString: " + hopeaEtuAsiakas.ToString());
        hopeaEtuAsiakas.TulostaTiedot();
        hopeaEtuAsiakas.LaskeBonus();

        //Seuraavassa määritellään henkiloTiedot1-olio, joka
        //alustetaan muuntamalla hopeaEtuAsiakas-olio
        //(upcast). Tämä on mahdollista koska HenkiloTiedot
        //on HopeaEtuAsiakas-luokan välillinen yliluokka.
        //Huomaa, että henkiloTiedot1-olio sisältää kuitenkin
        //vain ne jäsenet, jotka on määritelty HenkiloTiedot-
        //luokassa, eli nimi, id ja TulostaTiedot()-metodi.

        HenkiloTiedot henkiloTiedot1 = (HenkiloTiedot)hopeaEtuAsiakas;

        Console.WriteLine("-- HopeaEtuAsiakas-olio on muunnettu HenkiloTiedot-olioksi --");

        //Seuraavassa kutsutaan henkiloTiedot1-olion
        //TulostaTiedot()-metodi. Huomaa, että koska
        //henkiloTiedot1-olio on alustettu muunntamalla
        //hopeaEsuAsiakas-olio, käytännössä hopeaEsuAsiakas-olion
        //TulostaTiedot() tulee kutsutuksi!
        //HopeaEtuAsiakkaan tiedot: Laura 3000 Ostot: 12 345,00 € eikä "Henkilön tiedot: Laura 3000"
        henkiloTiedot1.TulostaTiedot();

        Console.WriteLine("\t\t-------------------");

        Asiakas asiakas1 = new Asiakas("Lucia", 2000, 3);

        //tulostetaan tulevaa vertaulua varten
        Console.WriteLine("ToString: " + asiakas1.ToString());
        asiakas1.TulostaTiedot();
        asiakas1.LaskeBonus();

        //Seuraavassa määritellään henkiloTiedot2-olio, joka
        //alustetaan muuntamalla asiakas1-olio (upcast). Tämä
        //on mahdollista koska HenkiloTiedot on Asiakas-luokan
        //välitön yliluokka. Huomaa, että henkiloTiedot2-olio
        //sisältää kuitenkin vain ne jäsenet, jotka on
        //määritelty HenkiloTiedot-luokassa, eli nimi, id ja
        //TulostaTiedot()-metodi.

        HenkiloTiedot henkiloTiedot2 = (HenkiloTiedot)asiakas1;

        Console.WriteLine("-- Asiakas-olio on muunnettu HenkiloTiedot-olioksi --");

        //Seuraavassa kutsutaan henkiloTiedot2-olion
        //TulostaTiedot()-metodi. Huomaa, että koska
        //henkiloTiedot2-olio on alustettu muunntamalla
        //asiakas1-olio, käytännössä asiakas1-olion
        //ylikirjoitettu TulostaTiedot() tulee kutsutuksi!
        //Asiakkaan tiedot: Lucia 2000 Suhteen kesto: 3 eikä "Henkilön tiedot: Lucia 2000"
        Console.WriteLine("ToString: " + henkiloTiedot2.ToString());
        henkiloTiedot2.TulostaTiedot();

        Console.WriteLine("\t\t-------------------");

        //Seuraavassa hopeaEtuAsiakas-olio muunnetaan asiakas1-
        //olioksi (upcast). Tämä on mahdollista koska Asiakas-
        //luokka on HopeaEtuAsiakas-luokan yliluokka. Huomaa,
        //että muunnoksen seurauksena vain Asiakas-luokassa
        //määritellyt jäsenet eli nimi, id, suhteenKesto,
        //LaskeBonus() ja TulostaTiedot() ovat käytössä, mutta
        //ei ostot-kenttä!
        asiakas1 = (Asiakas)hopeaEtuAsiakas;

        Console.WriteLine("-- HopeaEtuAsiakas-olio on muunnettu Asiakas-olioksi --");

        //Seuraavassa kutsutaan asiakas1-olion metodeja.
        //Huomaa, että koska asiakas1 on alustettu muunntamalla
        //hopeaEtuAsiakas-olio, tämän olion ylikirjoitettu
        //TulostaTiedot()-metodit tulee kutsutuiksi.
        //HopeaEtuAsiakkaan tiedot: Laura 3000 Ostot: 12 345,00 €
        //Mutta,
        //koska LaskeBonus()-metodi on merkitty new:lla
        //HopeaEtuAsiakas-luokassa, Asiakas-luokassa määritelty
        //LaskeBonus() tulee kutsutuksi
        //Asiakkaan bonus on: 1 000,00 € eikä "HopeaAsiakkaan bonus on: 1 234,50 €"
        Console.WriteLine("ToString: " + asiakas1.ToString());
        asiakas1.TulostaTiedot();
        asiakas1.LaskeBonus();

        Console.WriteLine("\t\t-------------------");

        //Seuraavassa henkiloTiedot1-olio muunnetaan
        //hopeaEtuAsiakas2-olioksi (downcast). Huomaa, että
        //tämä on mahdollista vain sen takia, että
        //henkiloTiedot1-olio alunperin luotiin muuntamalla
        //HopeaEtuAsiakas-luokan olio. Huomaa myös, että
        //hopeaEtuAsiakas2 sisältää kaikki HopeaEtuAsiakas-
        //luokkaan kuuluvat jäsenet. nimi, id ja ostot

        HopeaEtuAsiakas hopeaEtuAsiakas2 = (HopeaEtuAsiakas)henkiloTiedot1;

        Console.WriteLine("-- HenkiloTiedot-olio on muunnettu HopeaEtuAsiakas-olioksi --");
        Console.WriteLine("jäsenet: nimi: " + hopeaEtuAsiakas2.nimi + "" +
                          ", id: " + hopeaEtuAsiakas2.id + "" +
                          ", suhteen kesto: " + hopeaEtuAsiakas2.suhteenKesto + "" +
                          ", ostot: " + hopeaEtuAsiakas2.ostot);
        Console.WriteLine("ToString: " + hopeaEtuAsiakas2.ToString());
        hopeaEtuAsiakas2.TulostaTiedot();
        hopeaEtuAsiakas2.LaskeBonus();

        Console.WriteLine("\t\t-------------------");

        //Seuraavassa asiakas1-olio muunnetaan
        //hopeaEtuAsiakas3-olioksi (downcast). Huomaa, että
        //tämä on taas mahdollista vain sen takia, että
        //asiakas1 aikaisemmin alustettiin muunntamalla
        //HopeaEtuAsiakas-luokan olio.
        HopeaEtuAsiakas hopeaEtuAsiakas3 = (HopeaEtuAsiakas)asiakas1;

        Console.WriteLine("-- Asiakas-olio on muunnettu HopeaEtuAsiakas-olioksi --");

        Console.WriteLine("ToString: " + hopeaEtuAsiakas3.ToString());
        hopeaEtuAsiakas3.TulostaTiedot();
        hopeaEtuAsiakas3.LaskeBonus();

        Console.WriteLine("\t\t-------------------");

        //Seuraavassa määritellään olioita ilman
        //tyyppimuunnosta.
        HenkiloTiedot henkiloTiedot3 = new HenkiloTiedot("Paul",
                                                         5000);
        Asiakas asiakas2 = new Asiakas("Jyrki", 4000, 7);

        //Seuraava muunnos aliluokkaan (downcast) epäonnistuu
        //koska henkiloTiedot3-olio luotiin suoraan
        //HenkiloTiedot-luokan muodostimella!

        //HopeaEtuAsiakas hopeaEtuAsiakas4 = (HopeaEtuAsiakas)henkiloTiedot3;

        //Seuraava muunnos aliluokkaan (downcast) epäonnistuu
        //koska asiakas2-olio luotiin suoraan Asiakas-luokan
        //muodostimella!

        //HopeaEtuAsiakas hopeaEtuAsiakas5 = (HopeaEtuAsiakas)asiakas2;

        //Seuraava muunnos aliluokkaan (downcast) epäonnistuu
        //koska henkiloTiedot3-olio luotiin suoraan
        //HenkiloTiedot-luokan muodostimella!

        //Asiakas asiakas3 = (Asiakas)henkiloTiedot3;

        //Seuraava muunnos epäonnistuu koska Asiakas- ja
        //AliHankija-luokat eivät ole yhteensopivia!

        //Alihankija aliHankija = (Alihankija) asiakas2;
    }