Delegaty - mój własny pomysł na program

0

Witam, postanowiłem zrozumieć delegaty pisząc jakiś własny programik. Dlatego że od dziecka interesuje się mechaniką wymyśliłem program korzystający z delegat, który będzie przypominał użytkownikowi samochodu że po przejechaniu określonej ilości kilometrów musi zrobić różne rzeczy, np wymienić olej w silniku. Klasy odpowiedzialne za pilnowanie czy trzeba już coś zrobić przy aucie będą delegatami(nie wiem czy mogę tak powiedzieć) i będzie można dodawać ich sporo więcej dla innych funkcjonalności związanych z przebiegiem (wkleję tylko jedną żeby nie było za długie)
Wymyśliłem że przejechane kilometry będzie się wpisywało ręcznie(żeby to działało) przed zatankowaniem samochodu na stacji, tym samym program też będzie obliczał spalanie itp ale póki co tego nie ma. Nie o to tu chodzi.
Proszę dajcie znać co sądzicie o użyciu delegat w moim pomyślę. Czy wgl mój programik się do czegoś nadaje, jeżeli tak co powinienem w nim zmienić żeby wyglądał bardziej profesjonalnie. Z góry dzięki.

 class Petrol
    {
        public delegate void DistanceToChange(double msg);
        public DistanceToChange distance;

        public void Distance(double km)
        {
 
            distance(km); 
        }
    }

class OilEngine
    {
        public double kilometers;
        public string F = "";

        public void Distance1(double msg) 
        {
            kilometers += msg;
            if (kilometers >= 13000)
            {
                Console.WriteLine("Od wymiany oleju przejechałeś " + kilometers + " km, Konieczna wymiana oleju!!\n Jeżeli wymieniłeś olej naciśnij 1 ");
                F = Console.ReadLine();
                if (F == "1")
                {
                    kilometers = 0;
                }
                else
                {
                    Console.WriteLine("Koniecznie wymień olej");
                }

            }
            else
            {
                Console.WriteLine("Od wymiany oleju przejechałeś " + kilometers + " km");
            }
            
        }


            public OilEngine(Petrol petrol) 
            {
                petrol.distance += Distance1; 
            }
        
    }

class Program
    {
        static void Main(string[] args)
        {
            Petrol petrol = new Petrol();
            OilEngine oilengine = new OilEngine(petrol); //przekazujemy do konstruktora: petrol
            FuelFilter fuelfilter = new FuelFilter(petrol);

            string T = "";
            while ( T != "tak")
            {
            Console.WriteLine("Podaj ilość przejechanych kilometrów przed zatankowaniem samochodu");
            string text = Console.ReadLine();
            double value = double.Parse(text);

            petrol.Distance(value);
            Console.WriteLine("\nJeżeli chcesz wyjść wpisz 'tak' Jeżeli nie naciśnij 'ENTER'\n");
            
            T = Console.ReadLine();
            Console.Clear();

            }

            Console.Read();
        }
    }
0

Nie ogarniam...

Może tak, przestań kombinować co tu zrobić aby koniecznie wykorzystać delegaty, po prostu pisz programy. A kiedyś za tydzień, miesiąc czy za pół roku delegaty cię same znajdą.

1

Delegaty pozwalają na przekazanie jednej metody do drugiej jako jej argument. Przy czym teraz, dzięki Func<> i Action<> nie ma sensu tego robić. Nie warto szukać ich zastosowania na siłę.
Generalnie, delegatów rzadko się używa, a w 90% przypadków robi się to przy okazji użycia zdarzeń w aplikacjach GUI, a tam zdefiniowanie wszystkiego odbywa się dwuklikiem myszy, i człowiek nawet się nie zastanawia jak to działa, po prostu pisze kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1