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(); }
private void luoLaskuBtn_Click(object sender, EventArgs e) { bool voikoLuoda = true; //Luodaan asiakas ja laitetaan asiakkaalle tiedot Asiakas asiakas = new Asiakas(); asiakas.Sukunimi = sukunimiCBox.Text; asiakas.Etunimi = etunimiCBox.Text; asiakas = handler.HaeAsiakasNimellä(asiakas); //Luodaan yritys ja haetaan sille tiedot Yritys yritys = new Yritys(); yritys = handler.HaeYritys(id); DateTime dateAndTime = DateTime.Now; DateTime eräpäivä = dateAndTime.AddDays(14); //Luodaan lasku ja laitetaan laskulle tiedot Lasku lasku = new Lasku(); int laskunID; lasku.Päivämäärä = dateAndTime; lasku.Eräpäivä = eräpäivä; lasku.AsiakasID = asiakas.Id; try { lasku.Laskutuskausi = laskutusCbox.SelectedItem.ToString(); } catch (Exception) { MessageBox.Show("Et valinnut laskutuskautta", "!Huom"); voikoLuoda = false; } if (voikoLuoda == true) { laskunID = handler.TallennaLasku(lasku); string viitenumero; viitenumero = Viitenumero(asiakas, laskunID); // luodaan pdf tiedosto ja sille olennaiset ominaisuudet PdfLoadedDocument loadedDocument = new PdfLoadedDocument(Properties.Resources.laskupohja); PdfLoadedForm loadedForm = loadedDocument.Form; PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; PdfTemplate template = loadedPage.CreateTemplate(); PdfDocument document = new PdfDocument(); document.PageSettings.SetMargins(2); PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; graphics.DrawPdfTemplate(template, PointF.Empty, new SizeF(page.Size.Width, page.Size.Height)); PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); float veroYhteensä, määrä, verotonHinta, hinta, yhteensä; float.TryParse(hintaTbox.Text, out hinta); float.TryParse(määräTbox.Text, out määrä); verotonHinta = hinta * määrä; veroYhteensä = verotonHinta * 1.24f - verotonHinta; yhteensä = verotonHinta + veroYhteensä; //Viedään tietoa dokumenttiin (loadedForm.Fields[0] as PdfLoadedTextBoxField).Text = dateAndTime.ToString("dd/MM/yyyy"); (loadedForm.Fields[1] as PdfLoadedTextBoxField).Text = "7%"; //Viivästyskorko (loadedForm.Fields[2] as PdfLoadedTextBoxField).Text = laskunID.ToString(); //Laskunumero (loadedForm.Fields[3] as PdfLoadedTextBoxField).Text = asiakas.YTunnus; // Asiakkaan Y-Tunnus (loadedForm.Fields[4] as PdfLoadedTextBoxField).Text = maksuehtoTbox.Text; // Maksuehto (loadedForm.Fields[5] as PdfLoadedTextBoxField).Text = ""; // Viitteemme (loadedForm.Fields[6] as PdfLoadedTextBoxField).Text = eräpäivä.ToString("dd/MM/yyyy"); // Eräpäivä (loadedForm.Fields[7] as PdfLoadedTextBoxField).Text = ""; // Viittenne (loadedForm.Fields[8] as PdfLoadedTextBoxField).Text = toimitusehtoTbox.Text; // Toimitusehto (loadedForm.Fields[63] as PdfLoadedTextBoxField).Text = verotonHinta.ToString(); // Veroton yhteensä (loadedForm.Fields[64] as PdfLoadedTextBoxField).Text = veroYhteensä.ToString(); // ALV yhteensä (loadedForm.Fields[65] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Verollinen yhteensä (loadedForm.Fields[70] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Yhteensä (loadedForm.Fields[71] as PdfLoadedTextBoxField).Text = EtunimiLbl.Text + " " + sukunimiLbl.Text + "\n" + osoiteLbl.Text + "\n" + postinumeroLbl.Text + " " + postitoimipaikkaLbl.Text; // Asiakkaan tiedot (loadedForm.Fields[68] as PdfLoadedTextBoxField).Text = eräpäivä.ToString("dd/MM/yyyy"); // Eräpäivä (loadedForm.Fields[75] as PdfLoadedTextBoxField).Text = yritys.Nimi + "\n" + yritys.Osoite + "\n" // Laskun lähettäjän tiedot + yritys.Postinumero + " " + yritys.Postiosoite; // Laskun lähettäjän tiedot (loadedForm.Fields[66] as PdfLoadedTextBoxField).Text = yritys.Iban; // IBAN (loadedForm.Fields[67] as PdfLoadedTextBoxField).Text = yritys.Bicswift; // BIC/SWIFT = 67 (loadedForm.Fields[69] as PdfLoadedTextBoxField).Text = viitenumero; // Viitenumero = 69 (loadedForm.Fields[9] as PdfLoadedTextBoxField).Text = nimikeTbox.Text; // Nimike (loadedForm.Fields[10] as PdfLoadedTextBoxField).Text = määräTbox.Text; // Määrä (loadedForm.Fields[11] as PdfLoadedTextBoxField).Text = "kpl"; // Yks. (loadedForm.Fields[12] as PdfLoadedTextBoxField).Text = hintaTbox.Text; // hinta (loadedForm.Fields[13] as PdfLoadedTextBoxField).Text = "24%"; // Alv % (loadedForm.Fields[14] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Verollinen yhteensä //Tällä luupilla voi katsoa missä kohdassa mikäkin field on. //for (int i = 0; i < 76; i++) //{ // (loadedForm.Fields[i] as PdfLoadedTextBoxField).Text = i.ToString(); //} // tallenetaan dokumentti loadedDocument.Save("Lasku.pdf"); document.Save("UusiLasku.pdf"); loadedDocument.Close(true); document.Close(true); Process.Start("Lasku.pdf"); // Tarkistetaan onko laskun tiedot saatu tallennettua if (laskunID != 0) { MessageBox.Show("Laskun tiedot tallennettiin tietokantaan", "Huom"); } else { MessageBox.Show("Laskun tietoja ei saatu tallennettua", "Huom"); } } }
public List <Asiakas> HaeSukunimi(Asiakas asiakas) { return(dbController.HaeSukunimi(asiakas)); }
public Asiakas HaeAsiakasNimellä(Asiakas asiakas) { return(dbController.HaeAsiakasNimellä(asiakas)); }
public bool TallennaAsiakas(Asiakas asiakas) { return(dbController.TallennaAsiakas(asiakas)); }
public PartialViewResult Tiedot() { Asiakas a = _kr.HaeAsiakas(User.Identity.Name); return(PartialView("~/Views/Asiakas/_AsiakasPartial.cshtml", a)); }
static void Main(string[] args) { //Tässä määritellään asiakas1-olio oletusmuodostimella. Asiakas asiakas1 = new Asiakas(); //Tässä tulostetaan asiakas1-olion tiedot kutsumalla //AsiakkaanTiedot-property. System.Console.WriteLine("Asiakkaan tiedot: " + asiakas1.AsiakkaanTiedot); //Tässä tulostetaan tyhjä rivi. System.Console.WriteLine(); //Tässä määritellään asiakas2-olio parametrillisella //muodostimella. Asiakas asiakas2 = new Asiakas("Dorothy", 100); //Tässä tulostetaan asiakas2-olion tiedot kutsumalla //AsiakkaanTiedot-property. System.Console.WriteLine("Asiakkaan tiedot: " + asiakas2.AsiakkaanTiedot); //Tässä tulostetaan tyhjä rivi. System.Console.WriteLine(); //Tässä määritellään etuasiakas1-olio //oletusmuodostimella. EtuAsiakas etuAsiakas1 = new EtuAsiakas(); //Seuraavassa tulostetaan etuAsiakas1-olion tiedot //kutsumalla AsiakkaanTiedot-property. Huomaa, kuinka //AsiakkaanTiedot-property on kopioitunut EtuAsiakas- //luokalle. System.Console.WriteLine("Etuasiakkaan tiedot: " + etuAsiakas1.AsiakkaanTiedot); //Tässä tulostetaan etuAsiakas1-olion bonus kutsumalla //LaskeBonus()-metodi. System.Console.WriteLine("Etuasiakkaan bonus on: {0, 0:c2}", etuAsiakas1.LaskeBonus()); //Tässä tulostetaan tyhjä rivi. System.Console.WriteLine(); //Tässä määritellään etuAsiakas2-olio parametrillisella //muodostimella. EtuAsiakas etuAsiakas2 = new EtuAsiakas("Alfred", 200, 1456.40m); //Tässä tulostetaan etuAsiakas2-olion tiedot kutsumalla //AsiakkaanTiedot-property. System.Console.WriteLine("Etuasiakkaan tiedot: " + etuAsiakas2.AsiakkaanTiedot); //Tässä tulostetaan etuAsiakas2-olion bonus kutsumalla //LaskeBonus()-metodi. System.Console.WriteLine("Etuasiakkaan bonus on: {0, 0:c2}", etuAsiakas2.LaskeBonus()); EtuAsiakas etuAsiakasVadim = new EtuAsiakas("vadim", 23, 1600.00m); Console.WriteLine("Asiakkaan tiedot: " + etuAsiakasVadim.AsiakkaanTiedot); Console.WriteLine("Lasketaan bonus: {0,7:c2}", etuAsiakasVadim.LaskeBonus()); Console.WriteLine("Lasketaan bonus: {0,10:c2}", etuAsiakasVadim.LaskeBonus()); Console.WriteLine("Lasketaan bonus: {0,15:c2}", etuAsiakasVadim.LaskeBonus()); }
public void KuuluisiLaskeaEtuhinnanAsiakkaalle() { Asiakas asiakas = new Asiakas(); Assert.AreEqual(33.30, asiakas.LaskeHinta(33.30), 0.01); }
public ActionResult Index(string luonti, string etunimi, string sukunimi, string sahkoposti, string puhelinnumero, string katuosoite, string postinumero, string paikkakunta, string tilaId, string henkilomaara, string narikka, string kahvitus, string vahtimestari, string tekninen, string alkamisPvm, string alkamisKellonaika, string loppumisPvm, string loppumiskellonaika, string maksutapa) { var yllapitomalli = new Yllapitomalli(); if (luonti != null) { try { var asiakas = new Asiakas( etunimi, sukunimi, sahkoposti, puhelinnumero, katuosoite, int.Parse(postinumero), paikkakunta); var valitutPalvelut = ""; if (narikka != null) { valitutPalvelut += "narikka"; } if (kahvitus != null) { valitutPalvelut += valitutPalvelut != "" ? ", kahvitus" : "kahvitus"; } if (vahtimestari != null) { valitutPalvelut += valitutPalvelut != "" ? ", vahtimestari" : "vahtimestari"; } if (tekninen != null) { valitutPalvelut += valitutPalvelut != "" ? ", tekninen tuki" : "tekninen tuki"; } var alkamisAika = ((DateTimeOffset) new DateTime(DateTime.ParseExact($"{alkamisPvm} {alkamisKellonaika}", "dd.MM.yyyy HH.mm", CultureInfo.InvariantCulture).Ticks)).ToUnixTimeSeconds(); var loppumisAika = ((DateTimeOffset) new DateTime(DateTime.ParseExact($"{loppumisPvm} {loppumiskellonaika}", "dd.MM.yyyy HH.mm", CultureInfo.InvariantCulture).Ticks)).ToUnixTimeSeconds(); Asiakkaat = yllapitomalli.LisaaVaraus(asiakas, Int32.Parse(tilaId), Int32.Parse(henkilomaara), valitutPalvelut, alkamisAika, loppumisAika, maksutapa, 200, Asiakkaat); var varaukset = yllapitomalli.HaeKaikkiVaraukset(); var model = new List <object> { varaukset, Tilat }; return(View(model)); } catch (Exception e) { ViewBag.Virheilmoitus = "Virhe varauksen lisäämisessä." + e; Debug.WriteLine("kätsi"); var varaukset = yllapitomalli.HaeKaikkiVaraukset(); var model = new List <object> { varaukset, Tilat }; return(View(model)); } } else { var varaukset = yllapitomalli.HaeKaikkiVaraukset(); var model = new List <object> { varaukset, Tilat }; return(View(model)); } }
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; }