public PlanLotu(DateTime PierwszyLot, TimeSpan _CoIleLata, Trasa Kierunek, TypSamolotu _RodzajSamolotu, TimeSpan NajakiPrzedzialCzasuTworzyc) { NaJakiPrzedzialczasu = NajakiPrzedzialCzasuTworzyc; Polaczenie = Kierunek; CZasBazowy = PierwszyLot; CoIleLata = _CoIleLata; RodzajSamolotu = _RodzajSamolotu; PierwszyLot = PierwszyLot.Subtract(CoIleLata);// te odjęcie czasu wiąże się z sposobem dodawania nowych lotów }
/// <summary> /// konstruktor kopiujący, jeżeli chcemy zrobić taki sam lot przesunięty w czasie o Jakiś przedział czasu /// </summary> public Lot(Lot IstniejącyLot, TimeSpan OjakiCZasPrzesuniety, String _IDLotu) { LNIDRezerwacjiBiletow = new List <string>(); ListaRezerwacji = new List <RezerwcjaBilet>(); SetID(_IDLotu); Droga = IstniejącyLot.GetDroga(); DataGodzinaWylotu = IstniejącyLot.GetDataWylDT(); DataGodzinaWylotu = DataGodzinaWylotu.Add(OjakiCZasPrzesuniety); Pojazd = null; CzasLotu = new TimeSpan(0, 0, 0); }
public Boolean CzyMaWracac;// zmienna określająca czy ma wrocić, koncepcja lotu polega na tym że leci do miejsca docelowego , a później wraca, tworzy to dwa połączenia , można w sumie wywalić i trzeba określać loty w dwie strony oddzielnie /* ~Lot(){ * this.GetSamolot().ZmianaDostepu();// kiedu Lot jest usuwany samolot jest zwalniany * } */ /// <summary> /// Podstawowy konstruktor do lotu /// </summary> public Lot(string ID, Trasa _Droga, int RokWylot, int MiesWyl, int DzienWyl, int GodzWyl, int MinWyl, Boolean _CZyMawracac) { LNIDRezerwacjiBiletow = new List <string>(); ListaRezerwacji = new List <RezerwcjaBilet>(); SetID(ID); Droga = _Droga; DataGodzinaWylotu = new DateTime(RokWylot, MiesWyl, DzienWyl, GodzWyl, MinWyl, 0); //ostatnia liczna to sekundy- nieistotna wartość w programie Pojazd = null; // to też pomaga stwierdzić czy istnieje samolot który jest zapisany do trasy CzasLotu = new TimeSpan(0, 0, 0); //dzięki temu wiemy że na początku nie ma konkretnego samolotu który obsługuje ta trase CzyMaWracac = _CZyMawracac; }
/// <summary> /// Metoda statyczna , Po to żeby sprawdzać czy wybrany samolot i trasa będą dobre- metode stayczną da się wywoływać jak nie istnieje obiekt /// </summary> /// <param name="TypPojazdu"></param> /// <param name="Droga"></param> public static Boolean CzyDoleci(TypSamolotu TypPojazdu, Trasa Droga) { if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc()) { return(true); } else { return(false); } }
static void Main(string[] args) { Firma TestFunkcji = new Firma(); Osoba osoba1 = new Osoba("PAwd", "dasd", TestFunkcji.PrzydzielanieID <Klient>(TestFunkcji.ListaKlientow, TestFunkcji.LNIDKlientow)); TestFunkcji.ListaKlientow.Add(osoba1); Osoba osoba2 = new Osoba("PAaswd", "daasdsd", TestFunkcji.PrzydzielanieID <Klient>(TestFunkcji.ListaKlientow, TestFunkcji.LNIDKlientow)); TestFunkcji.ListaKlientow.Add(osoba2); Lotnisko lotnisko1 = new Lotnisko("Nowyjork"); Lotnisko Lotnisko2 = new Lotnisko("Berlon"); TestFunkcji.ListaLotnisk.Add(lotnisko1); TestFunkcji.ListaLotnisk.Add(Lotnisko2); Trasa trasa = new Trasa(lotnisko1, Lotnisko2, 230); // trasy - działa TestFunkcji.ListaTras.Add(trasa); Lot nowylot1 = new Lot(TestFunkcji.PrzydzielanieID <Lot>(TestFunkcji.ListaLotow, TestFunkcji.LNIDLotow), trasa, 2000, 9, 21, 8, 3, false); TestFunkcji.ListaLotow.Add(nowylot1); Lot nowylot2 = new Lot(TestFunkcji.PrzydzielanieID <Lot>(TestFunkcji.ListaLotow, TestFunkcji.LNIDLotow), trasa, 2030, 9, 21, 8, 3, false); TestFunkcji.ListaLotow.Add(nowylot2); // loty - działa TypSamolotu nowytyp = new TypSamolotu("Test", 23, 23, 23, 12); nowytyp.DodajSamolot(TestFunkcji.PrzydzielanieID <Samolot>(nowytyp.GetListaSamolotow(), nowytyp.GetLNIDSamolotow())); nowytyp.DodajSamolot(TestFunkcji.PrzydzielanieID <Samolot>(nowytyp.GetListaSamolotow(), nowytyp.GetLNIDSamolotow()));// tą jedna linijką tworzy sie nowy samolot, dodaje do listy, i ma indywidualne id TestFunkcji.ZapisDoPliku(); TestFunkcji.OdczytZPliku(); foreach (Trasa X in TestFunkcji.ListaTras) { Console.WriteLine(X.GetIDTrasy() + " "); } Console.ReadLine(); }
/// <summary> /// zwraca obiekt samolotu, który obsługuje trase- może się przydać /// </summary> /// <returns></returns> public Samolot GetSamolot() { if (Pojazd != null) { foreach (Samolot Obiekt in Pojazd.GetListaSamolotow()) { if (Obiekt.GetIDWlasne() == IDSamolotu) { return(Obiekt); } } } // to miejsce gdzie pojazd nie jest równy null , ale nie ma jego obiektu na liście Pojazd = null; throw new Wyjatek("Nie ma Samolotu na liście typów !!"); // bardzo specyficzny wyjątek , ktoś usuną samolot, który obsługiwał tą trasę co powinno być nie możliwe- // w catchu proponuje napisać krótką funkcję zmieniającą pole "Pojazd" na null!!!-Ważne }
/// <summary> /// Z racji że typ samolotu ma dany zasięg, trzeba sprawdazć czy dany samolot nadaje się do lotu /// dla konkretnej trasy, podawy jest od razu id samolotu, bardzo ważna funkcja, bez niej lot nie mam maszyny!! /// funkcja od razu liczy nowy czas przelotu danej trasy /// </summary> /// <returns></returns> public Boolean SetPojazd(TypSamolotu TypPojazdu, string IDPojazdu)// nie jest w konstruktorze ponieważ zwraca booleana { if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc() && TypPojazdu.GetSAmolotOID(IDPojazdu).GetCzyDostepny() == true) { Pojazd = TypPojazdu; IDSamolotu = IDPojazdu; double czas = Droga.GetOdleglosc() / Pojazd.GetPredkosc(); // czas wychodzi w godz z minutamie po przecinku czas = Math.Round(czas, 2); double min = (czas % 1) * 60; // minuty w formiacie 0,xx więc trzeba pomnożyć razy 60 CzasLotu = new TimeSpan((int)czas, (int)min, 0); // zero na końcu- to sekundy nieistotne w programie this.GetSamolot().ZmianaDostepu(); return(true); } else { return(false); } }