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