예제 #1
0
        static void Implementowanie_Interfajsu_W_Sposób_Jawny()
        {
            /* Dotyczy przypadku, gdy klasa dziedziczy po dwóch lub wiecej interfejsów i nazwa któreś metody się powtarza.
             * Należy jawnie zaimplementowac ten interface w definicji metody np. IOblicz.ObliczDystans(), przykład w klasie 'Kostka'.
             * Jeśli tego nie zrobimy to metoda ObliczDystans() bedzie implementować oba interferjsy. (Domyślnie C# nie dokonuje rozrożnienia, który interfejs jest implementowany przez daną metode).
             *
             * Wywołanie takiej metody:
             * Jawnie zaimplementowany interfajs oznacza, że gdy utworzymy obiekt klasy i przypiszemy go do zmiennej o typie danego interfacjsu,
             * umożliwi to wywołanie funkcji danego interfejsu.
             */

            IOblicz kostka = new Kostka();

            Console.WriteLine(kostka.ObliczDystansDo(new Kula())); // Wykona się metoda ineterfejsu IOblicz

            IRuch kostka2 = new Kostka();

            Console.WriteLine(kostka2.ObliczDystansDo(new Kula())); // Wykona się metoda ineterfejsu IMove

            /* Z poziomu obiektu klasy 'Kostka', który implementuje interfejs w sposób jawny, metody 'ObliczDystansDo()' mają prywatny poziom dostępności.
             * Oznacza to że nie można wywołać któreś z tych metod gdy obiekt przypisany jest do zmiennej typu 'Kostka'.
             * (Jeśli w klasie są 2 lub wiecej metod które nazywają się tak samo to nie wiadomo, która metoda ma się wykonać.)
             */

            Kostka kostka3 = new Kostka();

            Console.WriteLine(kostka3.ObliczDystansDo(new Kula())); // 'Kostka' does not contain a definition for 'ObliczDystansDo'

            // Note: Zaleca się aby zawsze gdy to jest możliwe, implementować interfejsy w sposób jawny!
        }
예제 #2
0
        override public void Vytvor()
        {
            Console.WriteLine("Zadej jméno hrdiny: ");
            string jmeno = Console.ReadLine();

            Console.WriteLine("Zadej maximální sílu hrdiny: ");
            int maxSila;

            while (!int.TryParse(Console.ReadLine(), out maxSila))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální sílu hrdiny: ");
            int minSila;

            while (!int.TryParse(Console.ReadLine(), out minSila))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální intelekt hrdiny: ");
            int maxIntel;

            while (!int.TryParse(Console.ReadLine(), out maxIntel))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální intelekt hrdiny: ");
            int minIntel;

            while (!int.TryParse(Console.ReadLine(), out minIntel))
            {
                Console.WriteLine("Neplatné zadání, zadej znavu: ");
            }
            Console.WriteLine("Zadej maximální obratnost hridny: ");
            int maxObratnost;

            while (!int.TryParse(Console.ReadLine(), out maxObratnost))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální obratnost hrdiny: ");
            int minObratnost;

            while (!int.TryParse(Console.ReadLine(), out minObratnost))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Kostka sila       = new Kostka(minSila, maxSila);
            Kostka intelekt   = new Kostka(minIntel, maxIntel);
            Kostka obratnost  = new Kostka(minObratnost, maxObratnost);
            var    novyHrdina = new Hrdina(jmeno, sila, intelekt, obratnost);

            Objekty.Add(novyHrdina);
        }
예제 #3
0
        static void Klasy_Abstrakcyjne()
        {
            /* Gdy kod się powtarza jednym z rozwiązań jest utworzenie klasy bazowej i umieszczenie w niej wspólnej implementacji. */

            Bryla bryla = new Bryla(); //Błąd kompilacji

            Bryla kula   = new Kula();
            Bryla kostka = new Kostka();

            /* Należy zwrócić uwagę, że klasa abstrakcyjna nie dziedziczy żadnego interfejsu. (Implementacja interfejsów jest cechą klas takich jak 'Kula' czy 'Kostka' a nie klas abstrakcynych)
             * Mimo to klasa abstrakcyjna 'Bryla' implementuje metodę 'UstawPozycje(PozycjaNaOsi pozycja)' jako nornalną metode publiczną. (Metoda 'UstawPozycje' znajduje się w interfejsie 'IPozycja')
             * Przez co klasy pochodne klasy 'Bryla' nie muszą implementować własnej wersji tej metody, pomimo, że implementują interfejs 'IPozycja', gdyż została ona już odziedziczona.
             */

            kula.UstawPozycje(new PozycjaNaOsi(1, 2, 4));
            kostka.UstawPozycje(new PozycjaNaOsi(4, 1, 1));
        }
예제 #4
0
        override public void Vytvor()
        {
            Console.WriteLine("Zadej jméno nepřítele: ");
            string jmeno = Console.ReadLine();

            Console.WriteLine("Zadej zdraví nepřítele: ");
            int zdravi;

            while (!int.TryParse(Console.ReadLine(), out zdravi))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální útok nepřítele: ");
            int minutok;

            while (!int.TryParse(Console.ReadLine(), out minutok))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální útok nepřítele: ");
            int maxutok;

            while (!int.TryParse(Console.ReadLine(), out maxutok))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální obranu nepřítele: ");
            int minobrana;

            while (!int.TryParse(Console.ReadLine(), out minobrana))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální obranu nepřítele: ");
            int maxobrana;

            while (!int.TryParse(Console.ReadLine(), out maxobrana))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Kostka utok         = new Kostka(minutok, maxutok);
            Kostka obrana       = new Kostka(minobrana, maxobrana);
            var    novyNepritel = new Nepritel(jmeno, zdravi, utok, obrana);

            Objekty.Add(novyNepritel);
        }
예제 #5
0
        static void Obiekty_Przypisane_Do_Typu_Interfejs()
        {
            /* Można przypisać obiekt implementujący dany interfejs do typu danego interfejsu w taki sam sposób jak w rodziale 12 do typu wyżej w hierarchi dziedziczenia.
             * Tak samo możliwe jest utworzenie metody akceptującej parametry typu interfejs. np.
             */

            Kula  kula     = new Kula();
            IRuch ruchKuli = kula;

            RuchBryly(ruchKuli, new PozycjaNaOsi(1, 2, 2));

            IRuch ruchKostki = new Kostka(1.1, 1.9, 2.9, new PozycjaNaOsi(1, 1, 2)); // 1 wymiary kostki, 2 pozycja na osi

            RuchBryly(ruchKostki, new PozycjaNaOsi(1, 2, 2));

            void RuchBryly(IRuch bryla, PozycjaNaOsi nowaPozycja)
            {
                bryla.WykonajRuch(nowaPozycja);
            }
        }
예제 #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            liczba1 = Convert.ToDouble(txtA.Text);
            liczba2 = Convert.ToDouble(txtB.Text);
            liczba3 = Convert.ToDouble(txtC.Text);

            if (radioVol.Checked)
            {
                Kostka k1 = new Kostka(liczba1, liczba2, liczba3);
                txtVol.Text  = k1.Vol().ToString();
                txtArea.Text = k1.Area().ToString();
            }

            if (radArea.Checked)
            {
                Stozek s1 = new Stozek(liczba1, liczba2);
                txtVol.Text  = s1.Vol().ToString();
                txtArea.Text = s1.Area().ToString();
            }
        }
예제 #7
0
        private void btnLosuj_Click(object sender, RoutedEventArgs e)
        {
            bool DiceSelected = false;

            if (ActivePlayer.DrawsLeft == 3)
            {
                cbKostka1.IsChecked = true;
                cbKostka2.IsChecked = true;
                cbKostka3.IsChecked = true;
                cbKostka4.IsChecked = true;
                cbKostka5.IsChecked = true;
            }


            if (ActivePlayer.DrawsLeft > 0)
            {
                if (cbKostka1.IsChecked == true)
                {
                    DiceSelected        = true;
                    imgKostka1.Source   = Kostka.Main();
                    imgKostka1.ToolTip  = imgKostka1.Source.ToString().Substring(imgKostka1.Source.ToString().Length - 5, 1);
                    cbKostka1.IsChecked = false;
                }
                if (cbKostka2.IsChecked == true)
                {
                    DiceSelected        = true;
                    imgKostka2.Source   = Kostka.Main();
                    imgKostka2.ToolTip  = imgKostka2.Source.ToString().Substring(imgKostka2.Source.ToString().Length - 5, 1);
                    cbKostka2.IsChecked = false;
                }
                if (cbKostka3.IsChecked == true)
                {
                    DiceSelected        = true;
                    imgKostka3.Source   = Kostka.Main();
                    imgKostka3.ToolTip  = imgKostka3.Source.ToString().Substring(imgKostka3.Source.ToString().Length - 5, 1);
                    cbKostka3.IsChecked = false;
                }
                if (cbKostka4.IsChecked == true)
                {
                    DiceSelected        = true;
                    imgKostka4.Source   = Kostka.Main();
                    imgKostka4.ToolTip  = imgKostka4.Source.ToString().Substring(imgKostka4.Source.ToString().Length - 5, 1);
                    cbKostka4.IsChecked = false;
                }
                if (cbKostka5.IsChecked == true)
                {
                    DiceSelected        = true;
                    imgKostka5.Source   = Kostka.Main();
                    imgKostka5.ToolTip  = imgKostka5.Source.ToString().Substring(imgKostka5.Source.ToString().Length - 5, 1);
                    cbKostka5.IsChecked = false;
                }
                if (DiceSelected)
                {
                    ActivePlayer.DrawsLeft--;              // = ActivePlayer.DrawsLeft - 1;
                }
            }
            else
            {
                System.Windows.Forms.MessageBox.Show("Możesz przelosować kości tylko 2 razy.");
            }
            //MessageBox.Show(Kostka.Main());
        }