SlideShare a Scribd company logo
Wprowadzenie do C# i platformy
                       .NET
                      Materiały pochodzą ze strony:
                        www.devcastzone.com




copyright BNS MEDIA
                                 www.devcastzone.com
Wyjątki i kolekcje

                      Wprowadzenie do C# i platformy .NET




copyright BNS MEDIA
                                   www.devcastzone.com
Spis treści
       1. Wyjątki
            a)        Hierarchia wyjątków
            b)        Wyrzucanie wyjątków
            c)        Przechwytywanie wyjątków
            d)        Przydatne metody klasy Throwable
            e)        Tworzenie wyjątków



                                      Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                              www.devcastzone.com           3
Spis treści
       2. Kolekcje
            a)        Implementacja kolekcji w C#
            b)        Tablice a kolekcje
            c)        Uproszczona hierarchia kolekcji
            d)        Podstawowe operacje na kolekcjach
            e)        Typy generyczne



                                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                   www.devcastzone.com           4
Wyjątki
      • Obiekty (tworzone przy pomocy operatora new) i
        „wyrzucane” z bieżącego kontekstu

      • Obsługa wyjątków – pozostaje w gestii programisty i
        nie jest wymuszana przez kompilator




                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           5
Błędy vs wyjątki

                                        Sytuacja
                                      Niepoprawna

                         Błąd              Błąd
                                                                          Wyjątek
                      programisty      użytkownika




                                    Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                            www.devcastzone.com                     6
Hierarchia wyjątków




                      Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                              www.devcastzone.com           7
Klasa Exception
      • Dziedziczy po System.Object i stanowi klasę bazową
        dla wszystkich wyjątków

      • Stanowi bazę dla dwóch głównych gałęzi hierarchii
        wyjątków dziedziczących z SystemException –
        predefiniowane wyjątki typu runtime oraz
        ApplicationException – dedykowana do
        budowania własnych typów wyjątków


                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           8
Klasa Exception
      • StackTrace - stos wywołao, ślad miejsca skąd
        nastąpiło wyrzucenie wyjątku

      • InnerException - enkapsulowany wyjątek
        zawierający szczegóły niższej warstwy

      • Message – komunikat tekstowy zawierający
        szczegóły wyjątku



                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           9
Klasa Exception
      • HelpLink – URN (unified resource name) lub URL
        (unified resource locator) do pliku
        opisującego/związanego z wyjątkiem

      • HResult – wartośd liczbowa – kod błędu związanego z
        wyjątkiem
      • Source – nazwa aplikacji lub obiektu, który wywołał
        błąd

      • TargetSite – pozwala pobrad nazwę metody w
        której wystąpiło wyrzucenie wyjątku

                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           10
Wyrzucanie wyjątków

      • Przy pomocy słowa kluczowego
                              throw

      • Powoduje przerwanie wykonywania danej metody




                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           11
• Wyrzucanie wyjątków jest kluczowym mechanizmem
        obsługi błędów w MS .NET Framework – przykłady
        operacje I/O, indeksowania tablic, obliczenia, dostęp
        do danych, zarządzanie pamięcią, uprawnieniami itd.

      • Framework jest wyposażony w globalny mechanizm
        rejestrowania nieobsłużonych wyjątków
        AppDomain.CurrentDomain.UnhandledExc
        eption


                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           12
Przykład użycia wyjątków


                      public static double ObliczPierwiastek(double liczba)
                      {
                          if (liczba < 0)
                          {
                              throw new ArithmeticException(
                                 "Nie można pierwiastkować liczby ujemnej");
                          }
                          return Math.Sqrt(liczba);
                      }




                                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                 www.devcastzone.com           13
Przechwytywanie wyjątków
      • Gdy nie chcemy, żeby
        wystąpienie wyjątku powodowało
        wyjście z metody
      • Blok try-catch
      • W chwili wejścia do sekcji catch, wyjątek
        jest uważany za obsłużony
      • Należy unikad przechwytywania
        wyjątków, jeśli nie wiadomo, co z nimi zrobid


                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           14
Zasady przechwytywania wyjątków
      • Osobne procedury obsługi dla każdego typu wyjątku
      • Kolejnośd procedur powinna zaczynad się od
        najbardziej szczegółowych, najogólniejsza – na koocu
      • W przeciwnym wypadku pozostałe wyjątki zostaną
        pominięte
      • Nigdy nie należy „połykad” wyjątków



                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           15
public static void Main()
       {
           try
           {
               Console.WriteLine(ObliczPierwiastek(4));
               Console.WriteLine(ObliczPierwiastek(-2));
           }
           catch (ArithmeticException ae)
           {
               Console.WriteLine("Błąd: " + ae.Message);
           }
       }
       public static double ObliczPierwiastek(double liczba)
       {
           if (liczba < 0)
           {
               throw new ArithmeticException(
                  "Nie można pierwiastkować liczby ujemnej");
           }
           return Math.Sqrt(liczba);
       }


                                  Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                          www.devcastzone.com           16
try-catch-finally
      • Kod w sekcji finally – wykonywany zawsze (chyba że
        nastąpi przerwanie wykonywania aplikacji), niezależnie
        od tego, czy wyjątek zostanie zgłoszony, czy nie

      • Służy do umieszczania procedur takich jak czyszczenie
        ekranu, zamykanie plików, połączeo sieciowych

      • Należy pamiętad, że kod użyty finally też może
        spowodowad wyrzucenie wyjątku

                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           17
OtworzMojPlik();

                      try
                      {
                            ZapiszMojPlik(nazwaPliku);
                      }
                      catch (IOException ioe)
                      {
                          Console.WriteLine("Błąd: " + ioe.StackTrace);
                      }
                      finally
                      {
                          ZamknijMojPlik(); // plik zawsze zostanie zamknięty
                      }


              Jeśli żaden z bloków catch nie wychwyci wyjątku, to jest on
              propagowany na zewnątrz instrukcji try-catch-finally (i tam
              powinien byd obsłużony).


                                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                  www.devcastzone.com           18
Uwagi do wyjątków
      • NazwaKlasyWyjatkuException


      • W bloku catch typowo wyjątek nazywa się skrótem
        pierwszych liter np.:
             FileNotFoundException fnfe


      • Wychwytywanie wyjątków należy przeprowadzad od klas
        najbardziej szczegółowych do ogólnych


                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           19
Konstruktory wyjątków
            We wszystkich standardowych typach wyjątków
            istnieją 3 publiczne konstruktory

      • bezparametrowy

      • przyjmujący parametr typu string

      • przyjmujący dwa parametr typu string i
        Exception
                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           20
Tworzenie wyjątków
      • Zwykle nowe wyjątki dziedziczą po istniejącej już
        klasie wyjątków
            class MyException : Exception{}
      • Należy definiowad zestaw domyślnych konstruktorów
      • Nazwa określa zastosowanie i zwykle wystarcza do
        wyjaśnienia źródła błędu
            FileNotFoundException
            NullPointerException
            DivideByZeroException


                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           21
Tworzenie wyjątków w VisualStudio
      • Tworzymy nową klasę np. DemoException


      • Korzystamy z trzyliterowego snippet’u exc


      • Zmieniamy nazwę tworzonej klasy wyjątku na
        naszą (DemoException )



                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                 www.devcastzone.com           22
Kolekcje
    • Przestrzeo nazw
      System.Collections

    • Klasy obiektów służących do
      przechowywania innych obiektów
      udostępniające mechanizmy
      pozwalające na ich wstawianie,
      przeglądanie i pobieranie

    • Kolekcje są bezpieczne ze względu na typ

    • Dają programiście możliwośd przetwarzania grup obiektów

    • W innych językach programowania kolekcje są nazywane kontenerami



                                 Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                         www.devcastzone.com             23
Implementacja kolekcji w .NET


                                     Interfejsy
                                     •abstrakcyjne właściwości i
                                      operacje kolekcji
                                     •w oderwaniu od konkretnych
                                      implementacji




                      Algorytmy
                      • metody
                        przetwarzające
                                                            Implementacje
                        kolekcje                            • klasy będące
                        (wyszukiwanie, sort                   implementacjami
                        owanie…)                              odpowiednich
                      • zwykle zdefiniowane                   interfejsów
                        dla pewnego rodzaju
                        kolekcji



                                  Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                          www.devcastzone.com                   24
Tablice vs Kolekcje

                      Tablice                                      Kolekcje
                                Przechowują
                                                                                 Przechowują tylko
                                referencje lub
                                                                                 referencje do
                                zmienne typu
                                                                                 obiektów
                                prymitywnego

                                Rozmiar
                                                                                 Rozmiar nieokreślony
                                niezmienny, z góry
                                                                                 – lecz można
                                ustalony przy
                                                                                 optymalizowad
                                tworzeniu

                                Nie posiadają                                    Posiadają wiele
                                dedykowanych                                     metod do obsługi
                                metod do obsługi                                 przechowywanych
                                zawartości                                       danych




                                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                     www.devcastzone.com                                25
Dynamiczny rozmiar w kolekcjach



                // stały rozmiar tablicy
                string [] imiona = new string[10];
                // allokacja początkowa
                System.Collections.Generic.List<string> numeryTelefonow =
                    new System.Collections.Generic.List<string>(10);




                                       Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                               www.devcastzone.com           26
Kolekcje ogólne i kolekcje generyczne
                      Kolekcje
                       ogólne                                     Kolekcje
                                                                 generyczne

                                 ArrayList                                     List<T>



                                                                               Dictionary
                                 Hashtable                                     <TKey, TValue>




                                 CollectionBase                                Collection<T>




                                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                 www.devcastzone.com                            27
Wierzchołek hierarchii interfejsów kolekcji
      generycznych




                                                               http://www.programcreek.com/wp-content/uploads/2009/02/java-collection.jpg
                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           28
Interfejs ICollection<T>
      • Podstawa kolekcji generycznych
      • Pozostałe interfejsy są ich rozszerzeniami
      • Oferuje kluczową funkcjonalnośd w zakresie dostępu
        i modyfikacji zbioru obiektów




                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           29
Interfejs IList<T>
      • Definiuje indeksowalne odwołania do zbioru
        elementów – analogia do tablicy




                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                 www.devcastzone.com           30
Klasa List<T>
      • Zastępuje tablicę

      • Zestaw kilkunastu metod –
        intuicyjny przetwarzanie danych

      • Pozwala przeszukiwad, sortowad,
        i modyfikowad kolekcję



                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           31
Kluczowe metody List<T>
      • Add – dodanie elementu
      • AddRange – dodanie kolekcji
      • Find – wyszukiwanie elementu
      • GetRange – dynamiczne pobranie fragmentu listy
      • Sort – sortowanie
      • ToArray – dynamiczne
        utworzenie tablicy


                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           32
Klasa LinkedList<T>
      • Lista podwójnie łączona
        implementująca interfejsy
        kolekcji

      • Każdy element ma określoną
        pozycję i posiada referencję do
        następnika i poprzednika

      • Elementy ułożone w kolejności,
        w jakiej były dodawane

                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           33
Klasa LinkedList<T>
      • Różne elementy mogą zawierad te same dane

      • Zawiera metody związane z obsługą list
            AddFirst, AddLast, AddAfter, AddBefore
            RemoveFirst(), RemoveLast(), Find, FindLast,
            Remove, Clear, First, Last




                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           34
Klasa Stack<T>
      • Stos obiektów – „LIFO”

      • Minimalny zestaw operacji

      • Zabezpiecza właściwą
        kolejnośd dostępu do danych



                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           35
Klasa Queue<T>
      • Kolejka FIFO –
        „First In, First Out”

      • Minimalny zestaw operacji

      • Zabezpiecza właściwą
        kolejnośd dostępu do danych


                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           36
Interfejs IDictionary<T1,T2>
      • Kolekcja zawiera wartości powiązane z kluczami
      • Klucze muszą byd unikalne
      • Iteracja - KeyValuePair<T1,T2>

           IDictionary<int, string> uczniowie =
               new Dictionary<int, string>();
           uczniowie.Add(1, "Adamski");
           uczniowie.Add(2, "Cebulak");
           uczniowie.Add(3, "Dąbrowski");
           Console.WriteLine(uczniowie[1]);




                                    Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                            www.devcastzone.com           37
Interfejs IDictionary<T1,T2>
      • Wartości mogą się powtarzad
      • Zazwyczaj klucz jest prosty, wartośd złożona
      • Łatwe dodawanie elementów i wyszukiwanie
      • Słowniki wykorzystują mechanizm hashowania –
        dlatego używanie kluczy referencyjnych z
        modyfikatorem mutable może byd niebezpieczne




                           Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                   www.devcastzone.com           38
Implementacje IDictionary<T1,T2>




                      Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                              www.devcastzone.com           39
Klasa HashSet<T>

                      HashSet<string> miasta = new HashSet<string>();
                      miasta.Add("Warszawa");
                      miasta.Add("Marsylia");
                      miasta.Add("Londyn");
                      miasta.Add("Marsylia");
                      foreach (string s in miasta)
                      {
                          Console.WriteLine(s);
                      }




     Po uruchomieniu wyświetli się
     [Warszawa, Marsylia, Londyn]

                                    Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                            www.devcastzone.com           40
Klasa HashSet<T>
      • Tablica z kodowaniem mieszanym – bardzo wydajna
        w zakresie prędkości dostępu do danych

      • Elementy nie mogą się powtarzad i nie mają
        określonej pozycji

      • Porządek elementów nie zależy od kolejności
        dodawania


                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           41
Klasa HashSet<T>
      • Istnieje funkcja, która każdemu
        elementowi przypisuje jego
        indeks, dzięki czemu operacje
        zajmują zwykle stały czas, nawet
        dla dużych tablic



         • Kluczowe metody to
           GetEnumerator, Add, Clear, Interse
           ctWith, ExceptWith
                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           42
Interfejs IEnumerator<T>
      • Każda kolekcja produkuje swój własny obiekt o
        interfejsie IEnumerator<T>
      • Zawiera metody i właściwości:
      bool MoveNext() – przemieszcza wskaźnik iteracji do
        następnego elementu zwraca true jeśli takowy istnieje

      <T> Current – właściwośd pozwalająca na dostęp do
        bieżącego elementu



                            Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                    www.devcastzone.com           43
Posługiwanie się IEnumerator<T>


              HashSet<string>.Enumerator enumerator =
                  miasta.GetEnumerator();

              while (enumerator.MoveNext())
              {
                  string biezacyElement = enumerator.Current;
                  Console.WriteLine(biezacyElement);
              }




                                    Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                            www.devcastzone.com           44
foreach w kolekcjach
      • Pętla iteracyjna (w innych językach – foreach)
      • Umożliwia przejrzenie wszystkich elementów kolekcji
      • Może byd stosowana z tablicami (patrz: params) i
        wszystkim klasami implementującymi
        interfejs IEnumerable




                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           45
foreach
           foreach (string s in miasta)
           {
               Console.WriteLine(s);
           }


      zastępuje następujący kod
            HashSet<string>.Enumerator enumerator =
               miasta.GetEnumerator();

            while (enumerator.MoveNext())
            {
               Console.WriteLine(enumerator.Current);
            }




                                   Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                           www.devcastzone.com           46
Array.ForEach
           foreach (string s in miasta)
           {
              JakasMetoda(s);
           }



      Począwszy od .NET 4.0 do dyspozycji mamy składnię:
           foreach (string s in miasta)
           {
              Array.ForEach(s, JakasMetoda);
           }




                                  Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                          www.devcastzone.com           47
Podstawowe operacje na kolekcjach
      W ramach interfejsu ICollection<T>

      int Count - zwraca liczbę elementów

      bool Contains(T item) - sprawdza, czy kolekcja
        zawiera dany element
      void Add(T item) - dodaje element do kolekcji

      bool Remove(T item) - usuwa element z kolekcji

                        Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                www.devcastzone.com           48
Interfejs IComparable
      • Wszystkie kolekcje zawierają metodę
        void Sort()
      • Warunkiem poprawnego działania sortowania jest
        to, aby obiekty w kolekcji spełniały interfejs
        IComparable




                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                 www.devcastzone.com           49
Metoda CompareTo
      • Metoda CompareTo(Object o)
        powinna zwracad:
               o      < 0 – gdy parametr jest większy niż obiekt
                      wywołujący
               o      0 – gdy parametr jest równy obiektowi
                      wywołującemu
               o      > 0 – gdy parametr jest mniejszy niż obiekt
                      wywołujący




                                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                  www.devcastzone.com           50
Sortowanie kolekcji cd.
      • Sortowanie dla typów prostych jest zdefiniowane w
        sposób naturalny

      • Chcąc uzyskad oczekiwane sortowanie dla
        zdefiniowanej przez siebie klasy należy:
            - zaimplementowad interfejs IComparable lub
            - zbudowad odrębną klasę implementującą interfejs
            IComparer


                                Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                        www.devcastzone.com           51
Implementacja IComparable w obiekcie
kolekcji

                      public class Pracownik : IComparable
                      {
                         private int idPracownika;
                          public int IDPracownika
                          {
                             get { return idPracownika;}
                          }
                          public int CompareTo(Object obj)
                          {
                             int id = ((Pracownik) obj).IDPracownika;
                             return (this.idPracownika.CompareTo(id));
                          }
                      }



                                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                  www.devcastzone.com           52
Implementacja IComparable w obiekcie
kolekcji – interfejs generyczny

                      public class Pracownik : IComparable<Pracownik>
                      {
                         private int idPracownika;
                          public int IDPracownika
                          {
                             get { return idPracownika;}
                          }
                          public int CompareTo(Pracownik p)
                          {
                              int id = p.IDPracownika;
                              return this.idPracownika.CompareTo(id);
                          }
                      }




                                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                  www.devcastzone.com           53
Interfejs IComparer<T>
      • Sortowanie jest możliwe dla dowolnych obiektów
      • Zawiera metodę
            int Compare(T elem1, T elem2)
               o      określającą porządek na obiektach i zwracającą
                      0, gdy obiekty są sobie równe oraz
                      1, gdy pierwszy jest większy -1 w przeciwnym razie
               o      W .NET można odnaleźd również interfejs IComparer
                      bez kontroli typów



                                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                 www.devcastzone.com           54
public class PorownywaczPracownikow : IComparer<Pracownik>
                      {
                          public int Compare(Pracownik p1, Pracownik p2)
                          {
                              int id1 = p1.IDPracownika;
                              int id2 = p2.IDPracownika;
                              return id1.CompareTo(id2);
                          }
                      }




                                         Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                                 www.devcastzone.com               55
Polimorfizm w kolekcjach
      • Polimorfizm parametryczny – typ obiektu nie musi
        byd ustalany w trakcie kompilacji.

      • Możemy tworzyd abstrakcyjne programy mające w
        parametrze nieokreśloną z góry kolekcję – w
        zależności od tego, jaką kolekcję otrzymają, będą
        inaczej działad.



                          Wprowadzenie do C# i platformy .NET
copyright BNS MEDIA
                                  www.devcastzone.com           56
Wprowadzenie do C# i platformy .NET –
program pełnego szkolenia
      1. MS .NET Framework i MS Visual Studio
               o      Przegląd architektury .NET
               o      Przegląd środowiska programistycznego
                      MS Visual Studio .NET 2008
      2. Podstawowe elementy języka C#
               o      Składowe języka C#
               o      Typy w C#
               o      Klasa String
               o      Nazewnictwo
               o      Operatory
               o      Operacja przypisania
               o      Operacja rzutowania
               o      Zmienne
               o      Pierwsza aplikacja
               o      Tablice
               o      Instrukcje sterujące
               o      Pakiety
               o      readonly, static

                                             Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                                            www.devcastzone.com                   57
Wprowadzenie do C# i platformy .NET –
program pełnego szkolenia
      3.     Wstęp do obiektowości
               o      Programowanie obiektowe
               o      Czym jest obiekt?
               o      Pojęcie klasy
               o      Więcej o metodach
               o      Konstruktor
               o      Słowo kluczowe new
               o      Klasa główna projektu
               o      Referencja
      4.     Obiektowośd w praktyce
               o      Klasa object
               o      Cechy OOP
               o      Enkapsulacja
               o      Polimorfizm
               o      Dziedziczenie
               o      Abstrakcja
               o      Interfejsy
               o      Specyfikatory dla class
               o      Specyfikatory dla pól i metod
               o      Klasy wewnętrzne


                                                      Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                                                     www.devcastzone.com                   58
Wprowadzenie do C# i platformy .NET –
program pełnego szkolenia
      5.     Wyjątki i kolekcje
               o      Wyjątki
                        •   Hierarchia wyjątków
                        •   Wyrzucanie wyjątków
                        •   Przechwytywanie wyjątków
                        •   Przydatne metody klasy Throwable
                        •   Tworzenie wyjątków
               o      Kolekcje
                        •   Implementacja kolekcji w C#
                        •   Tablice a kolekcje
                        •   Uproszczona hierarchia kolekcji
                        •   Podstawowe operacje na kolekcjach
                        •   Typy generyczne
      6.     Delegaty i zdarzenia
               o      Delegaty
               o      Używanie delegatów parametryzowanych
               o      Zbiorowe delegaty
               o      Obsługa zdarzeo
               o      Słowo kluczowe Event
               o      Asynchroniczne wywoływanie zdarzeo




                                                     Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                                                    www.devcastzone.com                   59
Wprowadzenie do C# i platformy .NET –
program pełnego szkolenia
      7. Strumienie
               o      Informacja o napędach, katalogach i plikach
               o      Obsługa operacji wejścia-wyjścia
               o      Filtrowanie danych
               o      Serializacja danych
               o      Klasa formatujące tekst
      8. Komunikacja z bazą danych
               o      Relacyjne bazy danych
               o      Wprowadzenie do ADO.NET
               o      Nawiązywanie połączenia
               o      Przetwarzanie wyników zapytao
               o      Wykonywanie poleceo
               o      Parametry zapytao

                                        Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                                       www.devcastzone.com                   60
Wprowadzenie do C# i platformy .NET –
program pełnego szkolenia
      9. Interfejs użytkownika
               o      Tworzenie projektu WinForms w MS Visual Studio
               o      Pierwszy formularz
               o      Ustawianie właściwości formularzy
               o      Umieszczanie kontrolek na formularzach
               o      Obsługa zdarzenia Load
               o      Obsługa naciśnięcia przycisku
               o      Kotwiczenie i dokowanie kontrolek
               o      MessageBox
               o      Drugi formularz – uruchamianie formularzy
               o      Projektowanie formularzy
               o      Formularze standardowe
               o      Klasa Control
               o      Przegląd najważniejszych kontrolek
                                       Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                                      www.devcastzone.com                   61
Wprowadzenie do C# i platformy .NET
            http://www.devcastzone.com/course,wprowadzenie-do-c-i-
                                platformy-net

                                Zapraszamy



                             Tworzenie aplikacji z użyciem biblioteki Hibernate
copyright BNS MEDIA
                                            www.devcastzone.com                   62

More Related Content

PDF
C#. Ćwiczenia. Wydanie II
PDF
Zrozumieć platformę .NET. Wydanie II
PPTX
Refaktoryzacja kodu w języku PHP
PPTX
Programowanie w języku Scala
PDF
Nie tylko C# - Ekosystem Microsoft dla programistów
PDF
Java EE 6 & GlassFish 3
PDF
Tester Warszawa
PDF
Jerzy proficz -_programowanie_w_java
C#. Ćwiczenia. Wydanie II
Zrozumieć platformę .NET. Wydanie II
Refaktoryzacja kodu w języku PHP
Programowanie w języku Scala
Nie tylko C# - Ekosystem Microsoft dla programistów
Java EE 6 & GlassFish 3
Tester Warszawa
Jerzy proficz -_programowanie_w_java

Viewers also liked (8)

PDF
Crowdsourcing testowania aplikacji i serwisów webowych, czyli testowanie 2.0
PPT
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
PDF
Przetestuj swoje CV
PPTX
Matryca śledzenia - Traceability Matrix
PPT
Grywalizacja (gamification) w testowaniu
PPTX
JavaStart - kurs Java Podstawy
PDF
ISTQB REX BLACK book
Crowdsourcing testowania aplikacji i serwisów webowych, czyli testowanie 2.0
Kompletny przewodnik po SQL injection dla developerów PHP (i nie tylko)
Przetestuj swoje CV
Matryca śledzenia - Traceability Matrix
Grywalizacja (gamification) w testowaniu
JavaStart - kurs Java Podstawy
ISTQB REX BLACK book
Ad

Similar to Wprowadzenie do C# i platformy .NET (8)

PPTX
Wzorce projektowe (w ASP.NET i nie tylko)
PPTX
Iron Python I Dlr
PPTX
Jak podwoić wartość kodu .NET?
PDF
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
PPTX
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
PDF
Embedded Debugging, czyli co kryje się w jądrze?
PPS
Poznańska grupa .Net spotkanie VI - Test Driven Development
PDF
C#. Programowanie
Wzorce projektowe (w ASP.NET i nie tylko)
Iron Python I Dlr
Jak podwoić wartość kodu .NET?
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
Embedded Debugging, czyli co kryje się w jądrze?
Poznańska grupa .Net spotkanie VI - Test Driven Development
C#. Programowanie
Ad

Wprowadzenie do C# i platformy .NET

  • 1. Wprowadzenie do C# i platformy .NET Materiały pochodzą ze strony: www.devcastzone.com copyright BNS MEDIA www.devcastzone.com
  • 2. Wyjątki i kolekcje Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com
  • 3. Spis treści 1. Wyjątki a) Hierarchia wyjątków b) Wyrzucanie wyjątków c) Przechwytywanie wyjątków d) Przydatne metody klasy Throwable e) Tworzenie wyjątków Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 3
  • 4. Spis treści 2. Kolekcje a) Implementacja kolekcji w C# b) Tablice a kolekcje c) Uproszczona hierarchia kolekcji d) Podstawowe operacje na kolekcjach e) Typy generyczne Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 4
  • 5. Wyjątki • Obiekty (tworzone przy pomocy operatora new) i „wyrzucane” z bieżącego kontekstu • Obsługa wyjątków – pozostaje w gestii programisty i nie jest wymuszana przez kompilator Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 5
  • 6. Błędy vs wyjątki Sytuacja Niepoprawna Błąd Błąd Wyjątek programisty użytkownika Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 6
  • 7. Hierarchia wyjątków Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 7
  • 8. Klasa Exception • Dziedziczy po System.Object i stanowi klasę bazową dla wszystkich wyjątków • Stanowi bazę dla dwóch głównych gałęzi hierarchii wyjątków dziedziczących z SystemException – predefiniowane wyjątki typu runtime oraz ApplicationException – dedykowana do budowania własnych typów wyjątków Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 8
  • 9. Klasa Exception • StackTrace - stos wywołao, ślad miejsca skąd nastąpiło wyrzucenie wyjątku • InnerException - enkapsulowany wyjątek zawierający szczegóły niższej warstwy • Message – komunikat tekstowy zawierający szczegóły wyjątku Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 9
  • 10. Klasa Exception • HelpLink – URN (unified resource name) lub URL (unified resource locator) do pliku opisującego/związanego z wyjątkiem • HResult – wartośd liczbowa – kod błędu związanego z wyjątkiem • Source – nazwa aplikacji lub obiektu, który wywołał błąd • TargetSite – pozwala pobrad nazwę metody w której wystąpiło wyrzucenie wyjątku Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 10
  • 11. Wyrzucanie wyjątków • Przy pomocy słowa kluczowego throw • Powoduje przerwanie wykonywania danej metody Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 11
  • 12. • Wyrzucanie wyjątków jest kluczowym mechanizmem obsługi błędów w MS .NET Framework – przykłady operacje I/O, indeksowania tablic, obliczenia, dostęp do danych, zarządzanie pamięcią, uprawnieniami itd. • Framework jest wyposażony w globalny mechanizm rejestrowania nieobsłużonych wyjątków AppDomain.CurrentDomain.UnhandledExc eption Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 12
  • 13. Przykład użycia wyjątków public static double ObliczPierwiastek(double liczba) { if (liczba < 0) { throw new ArithmeticException( "Nie można pierwiastkować liczby ujemnej"); } return Math.Sqrt(liczba); } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 13
  • 14. Przechwytywanie wyjątków • Gdy nie chcemy, żeby wystąpienie wyjątku powodowało wyjście z metody • Blok try-catch • W chwili wejścia do sekcji catch, wyjątek jest uważany za obsłużony • Należy unikad przechwytywania wyjątków, jeśli nie wiadomo, co z nimi zrobid Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 14
  • 15. Zasady przechwytywania wyjątków • Osobne procedury obsługi dla każdego typu wyjątku • Kolejnośd procedur powinna zaczynad się od najbardziej szczegółowych, najogólniejsza – na koocu • W przeciwnym wypadku pozostałe wyjątki zostaną pominięte • Nigdy nie należy „połykad” wyjątków Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 15
  • 16. public static void Main() { try { Console.WriteLine(ObliczPierwiastek(4)); Console.WriteLine(ObliczPierwiastek(-2)); } catch (ArithmeticException ae) { Console.WriteLine("Błąd: " + ae.Message); } } public static double ObliczPierwiastek(double liczba) { if (liczba < 0) { throw new ArithmeticException( "Nie można pierwiastkować liczby ujemnej"); } return Math.Sqrt(liczba); } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 16
  • 17. try-catch-finally • Kod w sekcji finally – wykonywany zawsze (chyba że nastąpi przerwanie wykonywania aplikacji), niezależnie od tego, czy wyjątek zostanie zgłoszony, czy nie • Służy do umieszczania procedur takich jak czyszczenie ekranu, zamykanie plików, połączeo sieciowych • Należy pamiętad, że kod użyty finally też może spowodowad wyrzucenie wyjątku Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 17
  • 18. OtworzMojPlik(); try { ZapiszMojPlik(nazwaPliku); } catch (IOException ioe) { Console.WriteLine("Błąd: " + ioe.StackTrace); } finally { ZamknijMojPlik(); // plik zawsze zostanie zamknięty } Jeśli żaden z bloków catch nie wychwyci wyjątku, to jest on propagowany na zewnątrz instrukcji try-catch-finally (i tam powinien byd obsłużony). Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 18
  • 19. Uwagi do wyjątków • NazwaKlasyWyjatkuException • W bloku catch typowo wyjątek nazywa się skrótem pierwszych liter np.: FileNotFoundException fnfe • Wychwytywanie wyjątków należy przeprowadzad od klas najbardziej szczegółowych do ogólnych Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 19
  • 20. Konstruktory wyjątków We wszystkich standardowych typach wyjątków istnieją 3 publiczne konstruktory • bezparametrowy • przyjmujący parametr typu string • przyjmujący dwa parametr typu string i Exception Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 20
  • 21. Tworzenie wyjątków • Zwykle nowe wyjątki dziedziczą po istniejącej już klasie wyjątków class MyException : Exception{} • Należy definiowad zestaw domyślnych konstruktorów • Nazwa określa zastosowanie i zwykle wystarcza do wyjaśnienia źródła błędu FileNotFoundException NullPointerException DivideByZeroException Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 21
  • 22. Tworzenie wyjątków w VisualStudio • Tworzymy nową klasę np. DemoException • Korzystamy z trzyliterowego snippet’u exc • Zmieniamy nazwę tworzonej klasy wyjątku na naszą (DemoException ) Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 22
  • 23. Kolekcje • Przestrzeo nazw System.Collections • Klasy obiektów służących do przechowywania innych obiektów udostępniające mechanizmy pozwalające na ich wstawianie, przeglądanie i pobieranie • Kolekcje są bezpieczne ze względu na typ • Dają programiście możliwośd przetwarzania grup obiektów • W innych językach programowania kolekcje są nazywane kontenerami Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 23
  • 24. Implementacja kolekcji w .NET Interfejsy •abstrakcyjne właściwości i operacje kolekcji •w oderwaniu od konkretnych implementacji Algorytmy • metody przetwarzające Implementacje kolekcje • klasy będące (wyszukiwanie, sort implementacjami owanie…) odpowiednich • zwykle zdefiniowane interfejsów dla pewnego rodzaju kolekcji Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 24
  • 25. Tablice vs Kolekcje Tablice Kolekcje Przechowują Przechowują tylko referencje lub referencje do zmienne typu obiektów prymitywnego Rozmiar Rozmiar nieokreślony niezmienny, z góry – lecz można ustalony przy optymalizowad tworzeniu Nie posiadają Posiadają wiele dedykowanych metod do obsługi metod do obsługi przechowywanych zawartości danych Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 25
  • 26. Dynamiczny rozmiar w kolekcjach // stały rozmiar tablicy string [] imiona = new string[10]; // allokacja początkowa System.Collections.Generic.List<string> numeryTelefonow = new System.Collections.Generic.List<string>(10); Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 26
  • 27. Kolekcje ogólne i kolekcje generyczne Kolekcje ogólne Kolekcje generyczne ArrayList List<T> Dictionary Hashtable <TKey, TValue> CollectionBase Collection<T> Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 27
  • 28. Wierzchołek hierarchii interfejsów kolekcji generycznych http://www.programcreek.com/wp-content/uploads/2009/02/java-collection.jpg Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 28
  • 29. Interfejs ICollection<T> • Podstawa kolekcji generycznych • Pozostałe interfejsy są ich rozszerzeniami • Oferuje kluczową funkcjonalnośd w zakresie dostępu i modyfikacji zbioru obiektów Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 29
  • 30. Interfejs IList<T> • Definiuje indeksowalne odwołania do zbioru elementów – analogia do tablicy Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 30
  • 31. Klasa List<T> • Zastępuje tablicę • Zestaw kilkunastu metod – intuicyjny przetwarzanie danych • Pozwala przeszukiwad, sortowad, i modyfikowad kolekcję Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 31
  • 32. Kluczowe metody List<T> • Add – dodanie elementu • AddRange – dodanie kolekcji • Find – wyszukiwanie elementu • GetRange – dynamiczne pobranie fragmentu listy • Sort – sortowanie • ToArray – dynamiczne utworzenie tablicy Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 32
  • 33. Klasa LinkedList<T> • Lista podwójnie łączona implementująca interfejsy kolekcji • Każdy element ma określoną pozycję i posiada referencję do następnika i poprzednika • Elementy ułożone w kolejności, w jakiej były dodawane Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 33
  • 34. Klasa LinkedList<T> • Różne elementy mogą zawierad te same dane • Zawiera metody związane z obsługą list AddFirst, AddLast, AddAfter, AddBefore RemoveFirst(), RemoveLast(), Find, FindLast, Remove, Clear, First, Last Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 34
  • 35. Klasa Stack<T> • Stos obiektów – „LIFO” • Minimalny zestaw operacji • Zabezpiecza właściwą kolejnośd dostępu do danych Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 35
  • 36. Klasa Queue<T> • Kolejka FIFO – „First In, First Out” • Minimalny zestaw operacji • Zabezpiecza właściwą kolejnośd dostępu do danych Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 36
  • 37. Interfejs IDictionary<T1,T2> • Kolekcja zawiera wartości powiązane z kluczami • Klucze muszą byd unikalne • Iteracja - KeyValuePair<T1,T2> IDictionary<int, string> uczniowie = new Dictionary<int, string>(); uczniowie.Add(1, "Adamski"); uczniowie.Add(2, "Cebulak"); uczniowie.Add(3, "Dąbrowski"); Console.WriteLine(uczniowie[1]); Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 37
  • 38. Interfejs IDictionary<T1,T2> • Wartości mogą się powtarzad • Zazwyczaj klucz jest prosty, wartośd złożona • Łatwe dodawanie elementów i wyszukiwanie • Słowniki wykorzystują mechanizm hashowania – dlatego używanie kluczy referencyjnych z modyfikatorem mutable może byd niebezpieczne Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 38
  • 39. Implementacje IDictionary<T1,T2> Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 39
  • 40. Klasa HashSet<T> HashSet<string> miasta = new HashSet<string>(); miasta.Add("Warszawa"); miasta.Add("Marsylia"); miasta.Add("Londyn"); miasta.Add("Marsylia"); foreach (string s in miasta) { Console.WriteLine(s); } Po uruchomieniu wyświetli się [Warszawa, Marsylia, Londyn] Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 40
  • 41. Klasa HashSet<T> • Tablica z kodowaniem mieszanym – bardzo wydajna w zakresie prędkości dostępu do danych • Elementy nie mogą się powtarzad i nie mają określonej pozycji • Porządek elementów nie zależy od kolejności dodawania Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 41
  • 42. Klasa HashSet<T> • Istnieje funkcja, która każdemu elementowi przypisuje jego indeks, dzięki czemu operacje zajmują zwykle stały czas, nawet dla dużych tablic • Kluczowe metody to GetEnumerator, Add, Clear, Interse ctWith, ExceptWith Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 42
  • 43. Interfejs IEnumerator<T> • Każda kolekcja produkuje swój własny obiekt o interfejsie IEnumerator<T> • Zawiera metody i właściwości: bool MoveNext() – przemieszcza wskaźnik iteracji do następnego elementu zwraca true jeśli takowy istnieje <T> Current – właściwośd pozwalająca na dostęp do bieżącego elementu Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 43
  • 44. Posługiwanie się IEnumerator<T> HashSet<string>.Enumerator enumerator = miasta.GetEnumerator(); while (enumerator.MoveNext()) { string biezacyElement = enumerator.Current; Console.WriteLine(biezacyElement); } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 44
  • 45. foreach w kolekcjach • Pętla iteracyjna (w innych językach – foreach) • Umożliwia przejrzenie wszystkich elementów kolekcji • Może byd stosowana z tablicami (patrz: params) i wszystkim klasami implementującymi interfejs IEnumerable Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 45
  • 46. foreach foreach (string s in miasta) { Console.WriteLine(s); } zastępuje następujący kod HashSet<string>.Enumerator enumerator = miasta.GetEnumerator(); while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current); } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 46
  • 47. Array.ForEach foreach (string s in miasta) { JakasMetoda(s); } Począwszy od .NET 4.0 do dyspozycji mamy składnię: foreach (string s in miasta) { Array.ForEach(s, JakasMetoda); } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 47
  • 48. Podstawowe operacje na kolekcjach W ramach interfejsu ICollection<T> int Count - zwraca liczbę elementów bool Contains(T item) - sprawdza, czy kolekcja zawiera dany element void Add(T item) - dodaje element do kolekcji bool Remove(T item) - usuwa element z kolekcji Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 48
  • 49. Interfejs IComparable • Wszystkie kolekcje zawierają metodę void Sort() • Warunkiem poprawnego działania sortowania jest to, aby obiekty w kolekcji spełniały interfejs IComparable Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 49
  • 50. Metoda CompareTo • Metoda CompareTo(Object o) powinna zwracad: o < 0 – gdy parametr jest większy niż obiekt wywołujący o 0 – gdy parametr jest równy obiektowi wywołującemu o > 0 – gdy parametr jest mniejszy niż obiekt wywołujący Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 50
  • 51. Sortowanie kolekcji cd. • Sortowanie dla typów prostych jest zdefiniowane w sposób naturalny • Chcąc uzyskad oczekiwane sortowanie dla zdefiniowanej przez siebie klasy należy: - zaimplementowad interfejs IComparable lub - zbudowad odrębną klasę implementującą interfejs IComparer Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 51
  • 52. Implementacja IComparable w obiekcie kolekcji public class Pracownik : IComparable { private int idPracownika; public int IDPracownika { get { return idPracownika;} } public int CompareTo(Object obj) { int id = ((Pracownik) obj).IDPracownika; return (this.idPracownika.CompareTo(id)); } } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 52
  • 53. Implementacja IComparable w obiekcie kolekcji – interfejs generyczny public class Pracownik : IComparable<Pracownik> { private int idPracownika; public int IDPracownika { get { return idPracownika;} } public int CompareTo(Pracownik p) { int id = p.IDPracownika; return this.idPracownika.CompareTo(id); } } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 53
  • 54. Interfejs IComparer<T> • Sortowanie jest możliwe dla dowolnych obiektów • Zawiera metodę int Compare(T elem1, T elem2) o określającą porządek na obiektach i zwracającą 0, gdy obiekty są sobie równe oraz 1, gdy pierwszy jest większy -1 w przeciwnym razie o W .NET można odnaleźd również interfejs IComparer bez kontroli typów Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 54
  • 55. public class PorownywaczPracownikow : IComparer<Pracownik> { public int Compare(Pracownik p1, Pracownik p2) { int id1 = p1.IDPracownika; int id2 = p2.IDPracownika; return id1.CompareTo(id2); } } Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 55
  • 56. Polimorfizm w kolekcjach • Polimorfizm parametryczny – typ obiektu nie musi byd ustalany w trakcie kompilacji. • Możemy tworzyd abstrakcyjne programy mające w parametrze nieokreśloną z góry kolekcję – w zależności od tego, jaką kolekcję otrzymają, będą inaczej działad. Wprowadzenie do C# i platformy .NET copyright BNS MEDIA www.devcastzone.com 56
  • 57. Wprowadzenie do C# i platformy .NET – program pełnego szkolenia 1. MS .NET Framework i MS Visual Studio o Przegląd architektury .NET o Przegląd środowiska programistycznego MS Visual Studio .NET 2008 2. Podstawowe elementy języka C# o Składowe języka C# o Typy w C# o Klasa String o Nazewnictwo o Operatory o Operacja przypisania o Operacja rzutowania o Zmienne o Pierwsza aplikacja o Tablice o Instrukcje sterujące o Pakiety o readonly, static Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 57
  • 58. Wprowadzenie do C# i platformy .NET – program pełnego szkolenia 3. Wstęp do obiektowości o Programowanie obiektowe o Czym jest obiekt? o Pojęcie klasy o Więcej o metodach o Konstruktor o Słowo kluczowe new o Klasa główna projektu o Referencja 4. Obiektowośd w praktyce o Klasa object o Cechy OOP o Enkapsulacja o Polimorfizm o Dziedziczenie o Abstrakcja o Interfejsy o Specyfikatory dla class o Specyfikatory dla pól i metod o Klasy wewnętrzne Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 58
  • 59. Wprowadzenie do C# i platformy .NET – program pełnego szkolenia 5. Wyjątki i kolekcje o Wyjątki • Hierarchia wyjątków • Wyrzucanie wyjątków • Przechwytywanie wyjątków • Przydatne metody klasy Throwable • Tworzenie wyjątków o Kolekcje • Implementacja kolekcji w C# • Tablice a kolekcje • Uproszczona hierarchia kolekcji • Podstawowe operacje na kolekcjach • Typy generyczne 6. Delegaty i zdarzenia o Delegaty o Używanie delegatów parametryzowanych o Zbiorowe delegaty o Obsługa zdarzeo o Słowo kluczowe Event o Asynchroniczne wywoływanie zdarzeo Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 59
  • 60. Wprowadzenie do C# i platformy .NET – program pełnego szkolenia 7. Strumienie o Informacja o napędach, katalogach i plikach o Obsługa operacji wejścia-wyjścia o Filtrowanie danych o Serializacja danych o Klasa formatujące tekst 8. Komunikacja z bazą danych o Relacyjne bazy danych o Wprowadzenie do ADO.NET o Nawiązywanie połączenia o Przetwarzanie wyników zapytao o Wykonywanie poleceo o Parametry zapytao Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 60
  • 61. Wprowadzenie do C# i platformy .NET – program pełnego szkolenia 9. Interfejs użytkownika o Tworzenie projektu WinForms w MS Visual Studio o Pierwszy formularz o Ustawianie właściwości formularzy o Umieszczanie kontrolek na formularzach o Obsługa zdarzenia Load o Obsługa naciśnięcia przycisku o Kotwiczenie i dokowanie kontrolek o MessageBox o Drugi formularz – uruchamianie formularzy o Projektowanie formularzy o Formularze standardowe o Klasa Control o Przegląd najważniejszych kontrolek Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 61
  • 62. Wprowadzenie do C# i platformy .NET http://www.devcastzone.com/course,wprowadzenie-do-c-i- platformy-net Zapraszamy Tworzenie aplikacji z użyciem biblioteki Hibernate copyright BNS MEDIA www.devcastzone.com 62