- 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<Pracownik> pracownicy;
- public Firma(string nazwa, List<Pracownik> pracownicy)
- {
- this.nazwa = nazwa;
- this.pracownicy = pracownicy;
- }
- public object Clone()
- {
- List<Pracownik> p = new List<Pracownik>(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<Pracownik> p = new List<Pracownik>();
- List<Pracownik> ppp2 = new List<Pracownik>();
- 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();
- }
- }
- }