/* * Object Oriented Programming Course Example of aggreagation * Created: 17/01/2016 Modified: 23.1.2017 * Authors: Pasi Manninen, Esa Salmikangas */ using System; using System.Collections.Generic; namespace JAMK.IT { /// /// This class demonstrates Vehicle and Tyre classes. OOP learning. /// class Rengas { //properties public string Valmistaja { get; set; } public string Malli { get; set; } public string Rengaskoko { get; set; } //constructors //huom jos käyttää "pika-alustus" = new Rengas { Valmistaja = "Nokia" niin täytyy olla TYHJÄ oletuskonstruktori public Rengas() { } public Rengas(string valmistaja, string malli, string koko) { Valmistaja = valmistaja;//this ei ole pakollinen this.Malli = malli; this.Rengaskoko = koko; } //methods public override string ToString() { return "Valmistaja: " + Valmistaja + " Malli:" + Malli + " rengas koko:" + Rengaskoko; } } class Auto { public string Nimi { get; set; } public string Malli { get; set; } private const int maxRenkaat = 4; private int lkmRenkaat = 0; public string KokoNimi { get { return Nimi + " " + Malli; } } public List Renkaat { get; } public Auto() { Renkaat = new List(); } public void LisääRengas(Rengas rengas) { if (lkmRenkaat < maxRenkaat) { Renkaat.Add(rengas); lkmRenkaat++; Console.WriteLine("Rengas {0} lisätty ajoneuvoon {1}", rengas.Malli, Nimi); } else { Console.WriteLine("No room for a new tyres..., sorry!"); } } public override string ToString() { string s = "Pirssissä: " + Nimi + " malli :" + Malli + "\nrenkaat:"; foreach (Rengas r in Renkaat) { if (r != null) s += "\n-" + r.ToString(); } return s; } } class TestBenchForAuto { public static void TestaaKaarat(string[] args) { //TestCarWithFourWheelsV2(); TestMunJaSunAuto(); } static void TestCarWithFourWheelsV2() { // create tyre Rengas tyre1 = new Rengas { Valmistaja = "Nokia", Malli = "Hakkapeliitta", Rengaskoko = "205R16" }; // create a car Auto kaara = new Auto { Nimi = "Porsche", Malli = "911" }; Console.WriteLine("Luotu uusi pirssi {0} {1}", kaara.Nimi, kaara.Malli); kaara.LisääRengas(tyre1); kaara.LisääRengas(tyre1); kaara.LisääRengas(tyre1); kaara.LisääRengas(tyre1); Console.WriteLine(kaara.ToString()); } static void TestMunJaSunAuto() { //luodaan kaksi erilaista rengasta Rengas musta = new Rengas("Nokian", "Summer", "155/60R14"); //eteen Rengas punanen = new Rengas("Pirelli", "Summer", "165/65R14");//taakse //luodaan mun auto Auto munAuto = new Auto { Nimi = "Datsun", Malli = "Finn" }; //johon lisätään renkaat munAuto.LisääRengas(musta); munAuto.LisääRengas(punanen); //luodaan sun auto Auto sunAuto = new Auto { Nimi = "Toyota", Malli = "Corolla" }; //johon lisätään renkaat sunAuto.LisääRengas(musta); //oops jouduttiin vaihtamaan toinen, Nokian gummit loppu joten pannaan Corollaan samankokoinen eri merkkinen rengas punanen.Valmistaja = "Hankook"; sunAuto.LisääRengas(punanen); //tulostetaan mun ja sun autot renkaat, mikä on lopputulos foreach (var auto in new List { munAuto, sunAuto }) { Console.WriteLine("{0} on seuraavat renkaat:", auto.KokoNimi); foreach (Rengas rinkula in munAuto.Renkaat) { Console.WriteLine(rinkula.ToString()); } } } } }