Wprowadzenie Do C# i Platformy

download Wprowadzenie Do C# i Platformy

of 62

description

Devcast Wprowadzenie do C# i platformy .NET, jest przeznaczony dla osób, które chcą poznać podstawy programowania w niezwykle popularnym języku C#, z wykorzystaniem platformy .NET. Na początku devcastu przedstawiane są w przystępny sposób wszelkie zagadnienia związane z wprowadzeniem do samego języka C# i środowiska programistycznego MS Visual Studio. Kolejnym omawianym zagadnieniem jest obiektowość, czyli nieodzwony aspekt programowania w języku C#. Pozostałe części devcastu Wprowadzenie do C# i platformy .NET poświęcone są innym niezbędnym pojęciom towarzyszącym programowaniu w języku C# z wykorzystaniem plaftormy .NET tj. wyjątki, kolekcje, zdarzenia, strumienie, komunikacja z bazą danych oraz interfejs użytkownika.

Transcript of Wprowadzenie Do C# i Platformy

Wprowadzenie do C# i platformy .NETMateriay pochodz ze strony: Kliknij, aby edytowa styl wzorca podtytuu www.devcastzone.com

copyright BNS MEDIA

www.devcastzone.co

Wyjtki i kolekcjeWprowadzenie do C# i platformy .NET Kliknij, aby edytowa styl wzorca podtytuu

copyright BNS MEDIA

www.devcastzone.co

Spis treci1.

Wyjtkia) b) c)

Hierarchia wyjtkw Wyrzucanie wyjtkw Przechwytywanie wyjtkw

d) e)

Przydatne metody klasy Throwable Tworzenie wyjtkw

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

33

Spis treci2.

Kolekcjea) b) c) d) e)

Implementacja kolekcji w C# Tablice a kolekcje Uproszczona hierarchia kolekcji Podstawowe operacje na kolekcjach Typy generyczne

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

44

Wyjtki

Obiekty (tworzone przy pomocy operatora new) i wyrzucane z biecego kontekstu Obsuga wyjtkw pozostaje w gestii programisty i nie jest wymuszana przez kompilator

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

55

Bdy vs wyjtki

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

66

Hierarchia wyjtkw

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

77

Klasa Exception

Dziedziczy po System.Object i stanowi klas bazow dla wszystkich wyjtkw Stanowi baz dla dwch gwnych gazi hierarchii wyjtkw dziedziczcych z SystemException predefiniowane wyjtki typu runtime oraz ApplicationException dedykowana do budowania wasnych typw wyjtkwWprowadzenie do C# i www.devcastzone.co 88

copyright BNS MEDIA

Klasa Exception

StackTrace - stos wywoa, lad miejsca skd nastpio wyrzucenie wyjtku InnerException - enkapsulowany wyjtek zawierajcy szczegy niszej warstwy Message komunikat tekstowy zawierajcy szczegy wyjtku

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

99

Klasa Exception

HelpLink URN (unified resource name) lub URL (unified resource locator) do pliku opisujcego/zwizanego z wyjtkiem HResult warto liczbowa kod bdu zwizanego z wyjtkiem Source nazwa aplikacji lub obiektu, ktry wywoa bd TargetSite pozwala pobra nazw metody w ktrej wystpio wyrzucenie wyjtku Wprowadzenie do C# i 1010www.devcastzone.co

copyright BNS MEDIA

Wyrzucanie wyjtkw

Przy pomocy sowa kluczowego throw

Powoduje przerwanie wykonywania danej metody

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

1111

Wyrzucanie wyjtkw jest kluczowym mechanizmem obsugi bdw w MS .NET Framework przykady operacje I/O, indeksowania tablic, obliczenia, dostp do danych, zarzdzanie pamici, uprawnieniami itd. Framework jest wyposaony w globalny mechanizm rejestrowania nieobsuonych wyjtkw AppDomain.CurrentDomain.UnhandledExc eption Wprowadzenie do C# i 1212www.devcastzone.co

copyright BNS MEDIA

Przykad uycia wyjtkwpublic static double ObliczPierwiastek(double liczba) { if (liczba < 0) { throw new ArithmeticException( "Nie mona pierwiastkowa liczby ujemnej"); } return Math.Sqrt(liczba); }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

1313

Przechwytywanie wyjtkw

Gdy nie chcemy, eby

wystpienie wyjtku powodowao wyjcie z metody

Blok try-catch W chwili wejcia do sekcji catch, wyjtek jest uwaany za obsuony Naley unika przechwytywania wyjtkw, jeli nie wiadomo, co z nimi zrobiWprowadzenie do C# i www.devcastzone.co 1414

copyright BNS MEDIA

Zasady przechwytywania Osobne procedury obsugi dla kadego wyjtkw

typu wyjtku

Kolejno procedur powinna zaczyna si od najbardziej szczegowych, najoglniejsza na kocu W przeciwnym wypadku pozostae wyjtki zostan pominite Nigdy nie naley poyka wyjtkwWprowadzenie do C# i www.devcastzone.co

copyright BNS MEDIA

1515

public static void Main() { try { Console.WriteLine(ObliczPierwiastek(4)); Console.WriteLine(ObliczPierwiastek(-2)); } catch (ArithmeticException ae) { Console.WriteLine("Bd: " + ae.Message); } } public static double ObliczPierwiastek(double liczba) { if (liczba < 0) { throw new ArithmeticException( "Nie mona pierwiastkowa liczby ujemnej"); } return Math.Sqrt(liczba); }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

1616

try-catch-finally

Kod w sekcji finally wykonywany zawsze (chyba e nastpi przerwanie wykonywania aplikacji), niezalenie od tego, czy wyjtek zostanie zgoszony, czy nie Suy do umieszczania procedur takich jak czyszczenie ekranu, zamykanie plikw, pocze sieciowychWprowadzenie do C# i www.devcastzone.co 1717

copyright BNS MEDIA

OtworzMojPlik(); try { } catch (IOException ioe) { Console.WriteLine("Bd: " + ioe.StackTrace); } finally { ZamknijMojPlik(); // plik zawsze zostanie zamknity } ZapiszMojPlik(nazwaPliku);

Jeli aden zblokw catch nie wychwyci wyjtku, tojest on propagowany na zewntrz instrukcjitry-catch-finally (itam powinien by obsuony).Wprowadzenie do C# i www.devcastzone.co

copyright BNS MEDIA

1818

Uwagi do wyjtkw

NazwaKlasyWyjatkuException W bloku catch typowo wyjtek nazywa si skrtem pierwszych liter np.: FileNotFoundException fnfe Wychwytywanie wyjtkw naley przeprowadza od klas najbardziej szczegowych do oglnychWprowadzenie do C# i www.devcastzone.co 1919

copyright BNS MEDIA

Konstruktory wyjtkwWe wszystkich standardowych typach wyjtkw istniej 3 publiczne konstruktory bezparametrowy przyjmujcy parametr typu string przyjmujcy dwa parametr typu string i Exception Wprowadzenie do C# i 2020www.devcastzone.co

copyright BNS MEDIA

Tworzenie wyjtkw

Zwykle nowe wyjtki dziedzicz po istniejcej ju klasie wyjtkwclass MyException : Exception{}

Naley definiowa zestaw domylnych konstruktorw Nazwa okrela zastosowanie i zwykle wystarcza do wyjanienia rda bdu

FileNotFoundException NullPointerException DivideByZeroExceptioncopyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2121

Tworzenie wyjtkw w VisualStudio

Tworzymy now klas np. DemoException Korzystamy z trzyliterowego snippetu exc Zmieniamy nazw tworzonej klasy wyjtku na nasz (DemoException )

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2222

Kolekcje

Przestrze nazw System.Collections Klasy obiektw sucych do przechowywania innych obiektw udostpniajce mechanizmy pozwalajce na ich wstawianie, przegldanie i pobieranie Kolekcje s bezpieczne ze wzgldu na typ Daj programicie moliwo przetwarzania grup obiektw Wprowadzenie do C# iwww.devcastzone.co

copyright BNS MEDIA

2323

Implementacja kolekcji w .NET

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2424

Tablice vs Kolekcje

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2525

Dynamiczny rozmiar w kolekcjach// stay rozmiar tablicy string [] imiona = new string[10]; // allokacja pocztkowa System.Collections.Generic.List numeryTelefonow = new System.Collections.Generic.List(10);

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2626

Kolekcje oglne i kolekcje generyczne

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2727

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2828

http://www.programcreek.com/wp-content/uploads/2009/02/java-collection.jpg

Wierzchoek hierarchii interfejsw kolekcji generycznych

Interfejs ICollection

Podstawa kolekcji generycznych Pozostae interfejsy s ich rozszerzeniami Oferuje kluczow funkcjonalno w zakresie dostpu i modyfikacji zbioru obiektw

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

2929

Interfejs IList

Definiuje indeksowalne odwoania do zbioru elementw analogia do tablicy

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3030

Klasa List

Zastpuje tablic Zestaw kilkunastu metod intuicyjny przetwarzanie danych Pozwala przeszukiwa, sortowa, i modyfikowa kolekcj

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3131

Kluczowe metody List

Add dodanie elementu AddRange dodanie kolekcji Find wyszukiwanie elementu GetRange dynamiczne pobranie fragmentu listy Sort sortowanie ToArray dynamiczne utworzenie tablicyWprowadzenie do C# i www.devcastzone.co 3232

copyright BNS MEDIA

Klasa LinkedList

Lista podwjnie czona implementujca interfejsy kolekcji Kady element ma okrelon pozycj i posiada referencj do nastpnika i poprzednika Elementy uoone w kolejnoci, w jakiej byy dodawaneWprowadzenie do C# i www.devcastzone.co 3333

copyright BNS MEDIA

Klasa LinkedList

Rne elementy mog zawiera te same dane Zawiera metody zwizane z obsug list

AddFirst, AddLast, AddAfter, AddBefore RemoveFirst(), RemoveLast(), Find, FindLast, Remove, Clear, First, Last

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3434

Klasa Stack

Stos obiektw LIFO Minimalny zestaw operacji Zabezpiecza waciw kolejno dostpu do danych

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3535

Klasa Queue

Kolejka FIFO First In, First Out Minimalny zestaw operacji Zabezpiecza waciw kolejno dostpu do danych

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3636

Interfejs IDictionary

Kolekcja zawiera wartoci powizane z kluczami Klucze musz by unikalne Iteracja - KeyValuePairIDictionary uczniowie = new Dictionary(); uczniowie.Add(1, "Adamski"); uczniowie.Add(2, "Cebulak"); uczniowie.Add(3, "Dbrowski"); Console.WriteLine(uczniowie[1]);

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3737

Interfejs IDictionary

Wartoci mog si powtarza Zazwyczaj klucz jest prosty, warto zoona atwe dodawanie elementw i wyszukiwanie Sowniki wykorzystuj mechanizm hashowania dlatego uywanie kluczy referencyjnych z modyfikatorem mutable moe by niebezpieczneWprowadzenie do C# i www.devcastzone.co 3838

copyright BNS MEDIA

Implementacje IDictionary

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

3939

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

Po uruchomieniu wywietli si [Warszawa, Marsylia, Londyn]copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4040

Klasa HashSet

Tablica z kodowaniem mieszanym bardzo wydajna w zakresie prdkoci dostpu do danych Elementy nie mog si powtarza i nie maj okrelonej pozycji Porzdek elementw nie zaley od kolejnoci dodawaniaWprowadzenie do C# i www.devcastzone.co 4141

copyright BNS MEDIA

Klasa HashSet

Istnieje funkcja, ktra kademu elementowi przypisuje jego indeks, dziki czemu operacje zajmuj zwykle stay czas, nawet dla duych tablic

Kluczowe metody to GetEnumerator, Add, Clear, IntersectWith, ExceptWithWprowadzenie do C# i www.devcastzone.co 4242

copyright BNS MEDIA

Interfejs IEnumerator

Kada kolekcja produkuje swj wasny obiekt o interfejsie IEnumerator Zawiera metody i waciwoci:

bool MoveNext() przemieszcza wskanik iteracji do nastpnego elementu zwraca true jeli takowy istnieje Current waciwo pozwalajca na dostp do biecego elementu

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4343

Posugiwanie si IEnumeratorHashSet.Enumerator enumerator = miasta.GetEnumerator(); while (enumerator.MoveNext()) { string biezacyElement = enumerator.Current; Console.WriteLine(biezacyElement); }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4444

foreach w kolekcjach

Ptla iteracyjna (w innych jzykach foreach) Umoliwia przejrzenie wszystkich elementw kolekcji Moe by stosowana z tablicami (patrz: params) i wszystkim klasami implementujcymi interfejsIEnumerable

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4545

foreachforeach (string s in miasta) { Console.WriteLine(s); }

zastpuje nastpujcy kodHashSet.Enumerator enumerator = miasta.GetEnumerator(); while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current); }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4646

Array.ForEachforeach (string s in miasta) { JakasMetoda(s); }

Poczwszy od .NET 4.0 do dyspozycji foreach (string s in miasta) mamy skadni: {Array.ForEach(s, JakasMetoda); }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4747

Podstawowe operacje na kolekcjachW ramach interfejsu ICollection int Count - zwraca liczb elementw 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 kolekcjicopyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4848

Interfejs IComparable

Wszystkie kolekcje zawieraj metod void Sort() Warunkiem poprawnego dziaania sortowania jest to, aby obiekty w kolekcji speniay interfejs IComparable

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

4949

Metoda CompareTo

Metoda CompareTo(Object o) powinna zwraca:o

o

o

< 0 gdy parametr jest wikszy ni obiekt wywoujcy 0 gdy parametr jest rwny obiektowi wywoujcemu > 0 gdy parametr jest mniejszy ni obiekt wywoujcy

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5050

Sortowanie kolekcji cd.

Sortowanie dla typw prostych jest zdefiniowane w sposb naturalny Chcc uzyska oczekiwane sortowanie dla zdefiniowanej przez siebie klasy naley:- zaimplementowa interfejs IComparable lub

- zbudowa odrbn klas implementujc interfejs IComparer

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5151

Implementacja IComparable w obiekcie kolekcjipublic 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)); }

}

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5252

Implementacja IComparable w obiekcie kolekcji interfejs generycznypublic class Pracownik : IComparable { private int idPracownika; public int IDPracownika { get { return idPracownika;} } public int CompareTo(Pracownik p) { int id = p.IDPracownika; return this.idPracownika.CompareTo(id); }

}

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5353

Interfejs IComparer

Sortowanie jest moliwe dla dowolnych obiektw Zawiera metod int Compare(T elem1, T elem2)o

okrelajc porzdek na obiektach i zwracajc 0, gdy obiekty s sobie rwne oraz 1, gdy pierwszy jest wikszy -1 w przeciwnym razie o W .NET mona odnale rwnie interfejs IComparer bez kontroli typwWprowadzenie do C# i www.devcastzone.co

copyright BNS MEDIA

5454

public class PorownywaczPracownikow : IComparer { public int Compare(Pracownik p1, Pracownik p2) { int id1 = p1.IDPracownika; int id2 = p2.IDPracownika; return id1.CompareTo(id2); } }

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5555

Polimorfizm w kolekcjach

Polimorfizm parametryczny typ obiektu nie musi by ustalany w trakcie kompilacji. Moemy tworzy abstrakcyjne programy majce w parametrze nieokrelon z gry kolekcj w zalenoci od tego, jak kolekcj otrzymaj, bd inaczej dziaa.

copyright BNS MEDIA

Wprowadzenie do C# i www.devcastzone.co

5656

Wprowadzenie do C# i platformy .NET program penego szkolenia1.

MS .NET Framework i MS Visual Studioo o

Przegld architektury .NET Przegld rodowiska programistycznego MS Visual Studio .NET 2008 Skadowe jzyka C# Typy w C# Klasa String Nazewnictwo Tworzenie aplikacji z uyciemwww.devcastzone.co

2.

Podstawowe elementy jzyka C#o o o

copyright BNS MEDIA

o

5757

Wprowadzenie do C# i platformy .NET program penego szkolenia3.

Wstp do obiektowocio o o o o o o

Programowanie obiektowe Czym jest obiekt? Pojcie klasy Wicej o metodach Konstruktor Sowo kluczowe new Klasa gwna projektu Referencja Tworzenie aplikacji z uyciemwww.devcastzone.co

copyright BNS MEDIA

o

5858

Wprowadzenie do C# i platformy .NET program penego szkolenia5.

Wyjtki i kolekcjeo

Wyjtki

Hierarchia wyjtkw Wyrzucanie wyjtkw Przechwytywanie wyjtkw Przydatne metody klasy Throwable Tworzenie wyjtkw

o

Kolekcje

Implementacja kolekcji w C# Tablice a kolekcjeTworzeniewww.devcastzone.co uyciem aplikacji z 5959

copyright BNS MEDIA

Wprowadzenie do C# i platformy .NET program penego szkolenia7.

Strumienieo o o o o

Informacja o napdach, katalogach i plikach Obsuga operacji wejcia-wyjcia Filtrowanie danych Serializacja danych Klasa formatujce tekst

7.

Komunikacja z baz danycho

Relacyjne bazy danychTworzenie aplikacji z u Wprowadzenie do ADO.NETyciemwww.devcastzone.co

copyright BNS MEDIA

o

6060

Wprowadzenie do C# i platformy .NET program penego szkolenia9.

Interfejs uytkownikaPierwszy formularz

o o o o o o ocopyright BNS MEDIA

Tworzenie projektu WinForms w MS Visual Studio Ustawianie waciwoci formularzy Umieszczanie kontrolek na formularzach Obsuga zdarzenia Load Obsuga nacinicia przycisku Kotwiczenie i dokowanie kontrolekTworzenie aplikacji z uyciem MessageBoxwww.devcastzone.co

o

6161

Wprowadzenie do C# i platformy .NET http:// www.devcastzone.com/course,wprowadzenie-do-c-i-platfo

Zapraszamy

copyright BNS MEDIA

Tworzeniewww.devcastzone.co uyciem aplikacji z

6262