UML naar code
class Head {}
class Hand {}
class Leg{}
class Person
{
private Head theHead =new Head();
private Hand leftHand = new Hand();
private Leg leftLeg = new Leg();
}
class Wheel{}
class Crankshaft{}
class Piston{}
class Engine
{
private Crankshaft theCrank=new Crankshaft();
private List<Piston> pistons = new List<Piston>(); //todo: piston objecten inplaatsen, zie voorbeeld Car-constructor
}
class Car
{
public Car()
{
for(int i=0;i<4;i++)
wheels.Add(new Wheel());
}
private List<Wheel> wheels=new List<Wheel>();
private Engine mainEngine = new Engine();
}
class Propeller
{
}
class Boat
{
private Engine mainEngine = new Engine();
private List<Propeller> propellers = new List<Propeller>(); //todo: propeller objecten inplaatsen, zie voorbeeld Car-constructor
}
Een eigen huis
Main:
Huis myHuis = new Huis();
myHuis.Kamers.Add(new Salon() { HeeftSchouw = true });
myHuis.Kamers.Add(new Gang() {Oppervlakte=20 });
myHuis.Kamers.Add(new BadKamer());
myHuis.Kamers.Add(new Kamer());
Console.WriteLine(myHuis.BerekenPrijs());
Klasse
(In sommige hanteer ik de EDM-schrijftstijl bij de override van properties.)
class Huis
{
public List<Kamer> Kamers { get; set; } = new List<Kamer>();
public int BerekenPrijs()
{
int totaal = 0;
foreach (var kamer in Kamers)
{
totaal += kamer.Prijs;
}
return totaal;
}
}
class Kamer
{
public int Oppervlakte { get; set; }
public string Naam { get; set; }
public virtual int Prijs
{
get
{
return 400;
}
}
}
class BadKamer : Kamer
{
public override int Prijs => 500;
}
class Salon : Kamer
{
public bool HeeftSchouw { get; set; }
public override int Prijs
{
get
{
if (HeeftSchouw) return 300;
return 500;
}
}
}
class Gang : Kamer
{
public override int Prijs => 10 * Oppervlakte;
}