Пример #1
0
        static void Implementowanie_Interferjsu_W_Sposób_Niejawny()
        {
            /* Jest to raczej nieprawidłowe zachowanie. Powinno się implementować w sposób jawny a w szczególności gdy nazwa metody się powtarza.
             * Klasa 'Kula' implementuje interfejs 'IRuch' oraz 'IOblicz' w sposób niejawny, przez co zawiera jedną implementacje metody 'ObliczDystandDo()' lecz definicja tej metody
             * znajduje się w obydwóch interfejsach. Domyślnie język C# nie dokonuje rozrożnienia, który interfejs jest implementowany przez daną metode.
             */

            Kula kula = new Kula();

            kula.ObliczDystansDo(new Kula());
            IOblicz obliczKula = kula;

            obliczKula.ObliczDystansDo(new Kula());
            IRuch ruchKuli = kula;

            ruchKuli.ObliczDystansDo(new Kula());
        }
Пример #2
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));
        }
Пример #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Podaj promień kuli");
            float a = float.Parse(Console.ReadLine());

            if (a < 0)
            {
                Console.WriteLine("Podano ujemną wartość promienia. Wciśnij przycisk, aby zakończyć.");
                Console.ReadKey();
                return;
            }

            Kula  kula = new Kula(a);
            float pole = kula.ObliczPole();
            float obj  = kula.ObliczObjetosc();

            Console.WriteLine("Pole: {0}, objętość: {1}", pole, obj);
            Console.ReadKey();
        }
Пример #4
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);
            }
        }