using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Zad._1 { class Pracownik:IComparable,ICloneable { string imię, nazwisko; int staż_pracy; public Pracownik(string imię, string nazwisko, int staż_pracy) { this.imię = imię; this.nazwisko = nazwisko; this.staż_pracy = staż_pracy; } public object Clone() { return new Pracownik(this.imię, this.nazwisko, this.staż_pracy); } public int CompareTo(object obj) { Pracownik p = obj as Pracownik; if (p.staż_pracy > staż_pracy) { return -1; } if (p.staż_pracy == staż_pracy) { return 0; } return 1; } public virtual string Obowiązki() { string obowiązek = "Praca 8h dziennie"; return obowiązek; } public override string ToString() { return imię + " " + nazwisko + " staż pracy: " + staż_pracy; } } class Programista: Pracownik { public Programista(string imię, string nazwisko, int staż_pracy) :base(imię, nazwisko,staż_pracy) { } public override string Obowiązki() { return base.Obowiązki() + " oraz pisanie programów"; } } class Kierownik : Pracownik { public Kierownik(string imię, string nazwisko, int staż_pracy) : base(imię, nazwisko, staż_pracy) { } public override string Obowiązki() { return base.Obowiązki() + " oraz zarządzanie."; } } class Firma:IComparable,ICloneable { string nazwa; List pracownicy; public Firma(string nazwa, List pracownicy) { this.nazwa = nazwa; this.pracownicy = pracownicy; } public object Clone() { List p = new List(this.pracownicy); return new Firma(this.nazwa, p); } public int CompareTo(object obj) { Firma f = obj as Firma; if (f.pracownicy.Count > pracownicy.Count) { return -1; } if (f.pracownicy.Count == pracownicy.Count) { return 0; } return 1; } public void Dodaj_Pracownika( Pracownik p) { pracownicy.Add(p); } public void Usuń_Pracownika(Pracownik p) { pracownicy.Remove(p); } public Pracownik this[int index] { get { return pracownicy[index]; } set { Pracownik p = pracownicy.[index]; p = value; } } public override string ToString() { string pom=""; foreach (var item in pracownicy) { pom += item+"n"; } return nazwa + "n " + pom; } } class Program { static void Main(string[] args) { Programista p1 = new Programista("Mateusz", "Nowak", 2); Programista p2 = new Programista("Jan", "Kowalski", 14); Programista p3 = new Programista("Maciej", "Wójcik", 10); Kierownik k1 = new Kierownik("Tomasz", "Prezes", 5); Pracownik pp1 = new Kierownik("Kamil", "Czekaj", 12); Kierownik k3 = new Kierownik("Michał", "Połetek", 5); Pracownik pp2 = new Pracownik("Kinga", "Nowakowska", 9); List p = new List(); List ppp2 = new List(); Firma f = new Firma("Progress", p); Firma f2 = new Firma("Mod", ppp2); f.Dodaj_Pracownika(p1); f.Dodaj_Pracownika(k1); f.Dodaj_Pracownika(pp2); Console.WriteLine(f); Console.WriteLine("======"); Console.WriteLine(p1.CompareTo(p2)); Console.WriteLine(pp1=(Pracownik)pp2.Clone()); pp2 = new Pracownik("Michał", "Tak", 12); Console.WriteLine(pp1); f2=(Firma)f.Clone(); Console.WriteLine(f2); f.Usuń_Pracownika(pp2); Console.WriteLine(f.CompareTo(f2)); Console.WriteLine(f2); Console.WriteLine("****"); Console.WriteLine(p1.Obowiązki()); Console.WriteLine(k1.Obowiązki()); Console.WriteLine(p2); Console.ReadKey(); } } }