using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { #region #if a interface ISzines { string Szin { get; } } interface IAtSzinezheto : ISzines { void AtSzinez(string s); } class Motor : ISzines { public enum MotorGyarto { Kawasaki, Honda }; MotorGyarto gyarto; public virtual string Szin { get { switch (gyarto) { case MotorGyarto.Honda: return "piros"; case MotorGyarto.Kawasaki: return "zold"; default: return "fhjkgk"; } } } public Motor(MotorGyarto g) { gyarto = g; } } class TorottMotor : Motor, IAtSzinezheto { string szin; public override string Szin { get { return szin; } } public TorottMotor(MotorGyarto g) : base(g) { szin = base.Szin; } public void AtSzinez(string ujszin) { szin = ujszin; } } #region #if kutya class Kutya : IComparable { double suly; public Kutya(double suly) { this.suly = suly; } static Random r = new Random(); public int CompareTo(object obj) { Kutya k = obj as Kutya; if (k == null) throw new ArgumentException("nemkutya"); //return (k.suly == this.suly) ? 0 : (this.suly < k.suly) ? -1 : 1; return r.Next(3) - 1; } public override string ToString() { return string.Format("{0} kilos kutya", suly); } } #endif #endregion class Program { static void Main(string[] args) { #region #if kutya Random r = new Random(); Kutya[] kutyak = new Kutya[20]; for (int i = 0; i < kutyak.Length; i++) kutyak[i] = new Kutya(/*r.Next(60)*/ i+1); foreach (Kutya k in kutyak) Console.WriteLine(k); Array.Sort(kutyak); Console.WriteLine("rendezes utan:"); foreach(Kutya k in kutyak) Console.WriteLine(k); #endif #endregion TorottMotor m = new TorottMotor(Motor.MotorGyarto.Honda); Console.WriteLine(m.Szin); m.AtSzinez("zod"); Console.WriteLine(m.Szin); Console.WriteLine((m as Motor).Szin); } } #endif #endregion interface IEladhato { int Ar { get; } } interface IKarbantartando { bool KarbantartasSzukseges(); string Karbantartas(); } interface IVisszavalthato : IEladhato { int VisszavaltasiErteke(int elteltNapokSzama); } abstract class Termek : IEladhato { private string nev; public string Nev { get { return nev; } set { nev = value; } } abstract public int Ar { get; } public Termek(string nev) { this.nev = nev; } } class Cipo : Termek, IVisszavalthato { int meret; public override int Ar { get { return meret >= 40 ? 15000 : 14000; } } public Cipo(int meret) : base("cipő") { this.meret = meret; } public int VisszavaltasiErteke(int elteltNapokSzama) { if (elteltNapokSzama >= 50) return 0; return (int)(Ar * (elteltNapokSzama / 50.0)); } } class Virag : Termek, IKarbantartando { int kor; int karbantartasSzamlalo; public override int Ar { get { return 1000 + kor * 2; } } public Virag(int kor) : base("virág") { this.kor = kor; karbantartasSzamlalo = 0; } public bool KarbantartasSzukseges() { if(karbantartasSzamlalo >= 2) { return true; } karbantartasSzamlalo++; return false; } public string Karbantartas() { karbantartasSzamlalo = 0; return "Öntözés"; } } class VasarlasiUtalvany : IEladhato, IVisszavalthato { public int Ar { get { return 1000; } } public int VisszavaltasiErteke(int elteltNapokSzama) { return 1000; } } class Huto : IKarbantartando { public bool KarbantartasSzukseges() { return true; } public string Karbantartas() { return "Tisztítás"; } } class EladoModul { IEladhato[] termekek; int szabadID; public EladoModul(int maxdarab) { termekek = new IEladhato[maxdarab]; szabadID = 0; } public void UjTermekFelvetele(IEladhato termek) { if (szabadID >= termekek.Length) Array.Resize(ref termekek, termekek.Length * 2); termekek[szabadID++] = termek; } public IEladhato Legolcsobb() { IEladhato legolcsobb = termekek[0]; for (int i = 1; i < termekek.Length && termekek[i] != null; i++) { if (legolcsobb.Ar > termekek[i].Ar) legolcsobb = termekek[i]; } return legolcsobb; } } class KarbantartoModul { IKarbantartando[] dolgok; int szabadID; public KarbantartoModul(int maxdarab) { dolgok = new IKarbantartando[maxdarab]; szabadID = 0; } public void UjKarbantartandoFelvetele(IKarbantartando dolog) { if (szabadID >= dolgok.Length) Array.Resize(ref dolgok, dolgok.Length * 2); dolgok[szabadID++] = dolog; } public void MindenKarbantartas() { foreach (IKarbantartando dolog in dolgok) { if (dolog != null && dolog.KarbantartasSzukseges()) Console.WriteLine(dolog.Karbantartas()); } } } class Program { static void Main() { EladoModul elado = new EladoModul(5); KarbantartoModul karbantarto = new KarbantartoModul(5); Virag virag1 = new Virag(20); Virag virag2 = new Virag(60); elado.UjTermekFelvetele(virag1); elado.UjTermekFelvetele(virag2); karbantarto.UjKarbantartandoFelvetele(virag1); karbantarto.UjKarbantartandoFelvetele(virag2); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); karbantarto.UjKarbantartandoFelvetele(new Huto()); Cipo c1, c2; elado.UjTermekFelvetele(new Cipo(30)); elado.UjTermekFelvetele(c1 = new Cipo(45)); elado.UjTermekFelvetele(c2 = new Cipo(38)); Console.WriteLine(c1.Ar); Console.WriteLine(c2.Ar); int n = 0; for (; ; ) { Thread.Sleep(500); Console.WriteLine("{0}. karbantartas:", ++n); karbantarto.MindenKarbantartas(); Console.WriteLine(); } } } }