/*
* 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());
}
}
}
}
}