/************ **obstSammlung.cs ********************/ using System; using System.Reflection; using System.Collections.Generic; namespace LinuxMagazineObstSammlung { /***********************************************/ public abstract class Obst : IComparable { public Obst(double anfangsgroesse) { this.Anfangsgroesse = anfangsgroesse; } public double Anfangsgroesse { get { return anfangsgroesse_; } protected set { if(value > 0.0) { anfangsgroesse_ = value; } } } public double Groesse { get { return Math.Round(anfangsgroesse_ + 0.1 * alter_, 2); } } public double Alter { get { return alter_; } set { if(value >= 0.0) { alter_ = value; } } } public int CompareTo(Obst o){ return o.Groesse.CompareTo(this.Groesse); } public static bool operator > (Obst o1, Obst o2) { return o1.Groesse > o2.Groesse; } public static bool operator < (Obst o1, Obst o2) { return o1.Groesse < o2.Groesse; } public override string ToString(){ Type t = this.GetType(); string result = "Ich bin Obst vom Typ " + t.Name + " und der Groesse " + this.Groesse; return result; } private double anfangsgroesse_ = 1.0; private double alter_ = 0.0; } /***********************************************/ public class Apfel: Obst { public Apfel() :base(2.0) { /* nothing */ } public uint ZahlDerKerne { get; set; } } /***********************************************/ public class Birne: Obst { public Birne() :base(2.2) { /* nothing */ } public double StielLaenge { get { return stielLaenge_; } set { if(value >= 0.0) stielLaenge_ = value; } } private double stielLaenge_ = 1.0; } /***********************************************/ class ObstDrucker { public ObstDrucker(){ Random rg = new Random(); for(uint i=0; i<4; i++){ if(i%2 == 0){ Apfel apfel = new Apfel(); apfel.Alter = 50.0 * rg.NextDouble(); apfel.ZahlDerKerne = (uint)rg.Next(10); // Maximal 9 Kerne obstSammlung.Add(apfel); } else { Birne birne = new Birne(); birne.Alter = 50.0 * rg.NextDouble(); birne.StielLaenge = rg.NextDouble(); // Maximal 1 cm obstSammlung.Add(birne); } } } public void sortiereObst(){ obstSammlung.Sort(); } public void print(){ foreach(Obst o in obstSammlung) { Console.WriteLine(o.ToString()); } } private List obstSammlung = new List(); } } /****************************************************************/