Jzyk C NET Maria DEMS Jzyk C NET

  • Slides: 29
Download presentation
Język C#. NET Maria DEMS

Język C#. NET Maria DEMS

Język C#. NET • Język C#. NET jest to obiektowy język programowania, łączący w

Język C#. NET • Język C#. NET jest to obiektowy język programowania, łączący w sobie cechy języków C++, Javy i VB. • Jego składnia przypomina składnię C++, zawiera przeciążanie operatorów. • Z języka Java pochodzi interfejs oraz sposób deklarowania klas (całość deklaracji w jednym miejscu), • z VB zaczerpnięto zdarzenia i konstrukcję pętli For Each, Each używanej do przeglądania kolekcji. 2

Ogólna struktura programu w języku C#. NET • Programy napisane w języku C#, mogą

Ogólna struktura programu w języku C#. NET • Programy napisane w języku C#, mogą składać się z kilku plików. • Każdy plik musi zawierać, co najmniej jedną przestrzeń nazw, która najczęściej składa się z – innych przestrzeni nazw, – klas, – struktur, – interfejsów, – typów wyliczeniowych – delegacji, stanowiących dodatek do innych przestrzeni nazw. 3

C#. NET - przestrzeń nazw • W programie zawsze jest tworzona domyślna przestrzeń nazw

C#. NET - przestrzeń nazw • W programie zawsze jest tworzona domyślna przestrzeń nazw - jest to przestrzeń globalna obecna w każdym pliku. • Każdego identyfikatora, znajdującego się w globalnej przestrzeni, możemy używać w innej przestrzeni posiadającej nazwę. Namespace nazwa[. nazwa 1]. . . ] { deklaracje_typów; } gdzie: – nazwa, nazwa 1 – dowolna nazwa określająca przestrzeń nazw (może zawierać spacje) – deklaracje_typów – deklaracje typów które można zdefiniować w przestrzeni nazw 4

C#. NET - szkielet programu Using System; namespace Przestrzen. Nazw 1 { class Klasa

C#. NET - szkielet programu Using System; namespace Przestrzen. Nazw 1 { class Klasa 1 { } struct Struktura 1 { interface Interface 1 { delegate int Delegacja(); enum Emulator { } namespace PrzestrzeńNazw 2 { } class Klasa 2 { public static void Main(string[] args) { } } } 5

C#. NET - przestrzeń nazw • Słowo kluczowe using, using wykorzystywane jest jako: ·

C#. NET - przestrzeń nazw • Słowo kluczowe using, using wykorzystywane jest jako: · Dyrektywa using, using tworząca synonim przestrzeni nazw; umożliwia ona korzystanie z wszystkich składników danej przestrzeni nazw (można korzystać z typów bez wprowadzania ich pełnej nazwy), ale nie udostępnia składników zawartych w zagnieżdżonej przestrzeni nazw. · Instrukcja using, using określająca zakres ważności danego obiektu na czas jego użycia; zezwala na użycie typów zawartych w przestrzeni nazw bez konieczności wprowadzania nazwy złożonej określonego typu. 6

C#. NET - przestrzeń nazw Przestrzenie nazw można podzielić na dwie grupy: • systemowe

C#. NET - przestrzeń nazw Przestrzenie nazw można podzielić na dwie grupy: • systemowe przestrzenie nazw (wbudowane, zawarte w. NET Framework). • przestrzenie zdefiniowane przez użytkownika Sposób deklaracji: using [synonim=]klasa_lub_przestrzeń_nazw; gdzie: • synonim – zdefiniowana przez użytkownika nazwa określająca daną przestrzeń nazw. • klasa_lub_przestrzeń_nazw- przestrzeń nazw lub nazwa klasy korzystająca z danego synonimu. 7

C#. NET - instrukcja using • Instrukcję using stosujemy wtedy, gdy w danym miejscu

C#. NET - instrukcja using • Instrukcję using stosujemy wtedy, gdy w danym miejscu programu potrzebny jest określony zasób (wyłącznie w celu wykonania określonej instrukcji). • Po wykonaniu instrukcji należy wykonać metodę Dispose, Dispose która zwolni niepotrzebny już zasób (zwolnienie zasobu odbywa się także mimo braku instrukcji Dispose). Sposób deklaracji: using (wyrażenie | typ identyfikator = inicjalizator) gdzie: • wyrażenie – wyrażenie w którym wywoływana jest metoda Dispose. • inicjalizator – wyrażenie tworzące obiekt 8

C#. NET - typ referencyjny class • Class – struktura danych zawierająca składniki danych

C#. NET - typ referencyjny class • Class – struktura danych zawierająca składniki danych (stałe, pola), składniki funkcyjne (metody, właściwości, zdarzenia, konstruktory) oraz typy zagnieżdżone. [atrybuty][modyfikatory]class identyfikator [: lista_bazowa] { ciało_klasy; } gdzie: • atrybuty (opcjonalnie) – informacja deklaratywna • modyfikatory (opcjonalnie) – stosowane są modyfikatory new, abstract, sealed i cztery modyfikatory dostępu • identyfikator – nazwa danej klasy • lista_bazowa (opcjonalnie) – zawiera nazwy jednej klasy bazowej i dowolną ilość zaimplementowanych interfejsów (oddzielonych przecinkami). 9

C#. NET - dziedziczenie • W języku C# możliwe jest dziedziczenie składników pochodzących od

C#. NET - dziedziczenie • W języku C# możliwe jest dziedziczenie składników pochodzących od tylko jednej klasy bazowej. • Sposoby dziedziczenia i implementacja interfejsów jest następująca: 10

C#. NET - struktury • Struktury reprezentują struktury danych, zawierają dane i składniki funkcyjne.

C#. NET - struktury • Struktury reprezentują struktury danych, zawierają dane i składniki funkcyjne. • Posiadają mała liczbę składników, co sprawia, że nie muszą korzystać z dziedziczenia czy tożsamości referencyjnej; w trakcie przypisania struktury kopiowana jest wartość a nie odwołanie. • Typ strukturalny jest typem bezpośrednim, który może zawierać: – stałe, – konstruktory, – pola, – metody, – właściwości, – operatory i inne typy zagnieżdżone. 11

C#. NET - struktury Deklaracja struktury ma postać: [atrybuty][modyfikatory]struct identyfikator [: interfejsy] ciało[: ]

C#. NET - struktury Deklaracja struktury ma postać: [atrybuty][modyfikatory]struct identyfikator [: interfejsy] ciało[: ] • atrybuty (opcjonalnie)- dodatkowa informacja deklaratywna • modyfikatory (opcjonalnie) – modyfikator new i modyfikatory dostępu • identyfikator – nazwa struktury • interfejsy (opcjonalnie) – wykaz interfejsów implementowanych przez strukturę (oddzielone przecinkami) • ciało – ciało struktury zawierające deklaracje jej składników 12

C#. NET - struktury • W przeciwieństwie do klas, struktury nie obsługują dziedziczenia; nie

C#. NET - struktury • W przeciwieństwie do klas, struktury nie obsługują dziedziczenia; nie mogą dziedziczyć właściwości innej struktury czy klasy, nie mogą być bazą dla klasy potomnej. • Jeśli do utworzenia struktury wykorzystamy operator new, wywołany zostanie odpowiedni konstruktor, • Jeżeli nie korzystamy z operatora new, new elementy struktury nie będą miały przypisanych początkowych wartości pól, dlatego przed wykorzystaniem takiej struktury należy zainicjować pola. 13

C#. NET - interfejsy • Interfejs stanowi pewnego rodzaju umowę, której musi przestrzegać klasa

C#. NET - interfejsy • Interfejs stanowi pewnego rodzaju umowę, której musi przestrzegać klasa lub struktura implementująca dany interfejs. • Interfejs może dziedziczyć po wielu interfejsach bazowych, • Klasa lub struktura może implementować wiele interfejsów. • Interfejsy mogą zawierać sygnatury składników takich jak: metody, właściwości zdarzenia i indeksatory. • Interfejs określa, jakie składniki muszą się znajdować w implementującej go klasie czy strukturze. • Interfejs nie może być składnikiem przestrzeni nazw 14 lub klasy

C#. NET - interfejsy Deklaracja interfejsu ma postać: [atrybuty][modyfikatory]interface identyfikator [: lista_bazowa] { ciało_interfejsu;

C#. NET - interfejsy Deklaracja interfejsu ma postać: [atrybuty][modyfikatory]interface identyfikator [: lista_bazowa] { ciało_interfejsu; } gdzie: • atrybuty (opcjonalnie)- dodatkowa informacja deklaratywna • modyfikatory (opcjonalnie) – modyfikator new i cztery modyfikatory dostępu • identyfikator – nazwa danego interfejsu • lista_bazowa (opcjonalnie) - wykaz zawierający jedną lub kilka nazw interfejsów bazowych (oddzielonych przecinkami) 15

C#. NET - delegacje • Deklaracja delegacji definiuje typ referencyjny hermetyzujący metodę z wyszczególnionym

C#. NET - delegacje • Deklaracja delegacji definiuje typ referencyjny hermetyzujący metodę z wyszczególnionym zestawem argumentów i ze zwracanym typem. • Hermetyzacja metody polega na szczegółowym określeniu liczby i typu argumentów oraz typu wartości zwracanych przez metodę. • Delegacja pozwala na przesłanie funkcji jako parametru (delegacja wymaga, aby funkcja przekazywana miała taka sama strukturę jak deklaracja delegacji). • Używając delegacji nie trzeba znać klasy obiektu, do której obiekt delegacji się odwołuje, jedynie typy argumentów i typ zwracany przez metodę muszą być zgodne. Dzięki temu delegacje można wywoływać 16 “anonimowo”.

C#. NET - delegacje Deklaracja delegacji ma postać: [atrybuty][modyfikatory] delegate typ_zwracany identyfikator([parametry]) gdzie: –

C#. NET - delegacje Deklaracja delegacji ma postać: [atrybuty][modyfikatory] delegate typ_zwracany identyfikator([parametry]) gdzie: – atrybuty (opcjonalnie)- dodatkowa informacja deklaratywna – modyfikatory (opcjonalnie) – modyfikator new i cztery modyfikatory dostępu – typ_zwracany – typ jaki zostanie zwrócony, musi pasować do typu zwracanego przez metodę – identyfikator – nazwa danej klasy – parametry – lista parametrów 17

C#. NET - typ wyliczeniowy enum • Wyliczenie stanowi odrębny typ zawierający zestaw stałych

C#. NET - typ wyliczeniowy enum • Wyliczenie stanowi odrębny typ zawierający zestaw stałych nazwanych, który jest listą wyliczeniową. Deklaracja wyliczenia ma postać: [atrybuty][modyfikatory] enum identyfikator [: typ_bazowy] { lista_wyliczenia; } gdzie: • typ_bazowy (opcjonalnie) – źródłowy typ wyliczeniowy, który określa zawartość wyliczenia (domyślnie typ int) • lista_wyliczenia – lista identyfikatorów wyliczenia oddzielonych przecinkami (domyślna wartość pierwszego elementu to 0, kolejne elementy mają 18 wartość zwiększoną o 1).

C#. NET - metoda main • Metoda main jest głównym segmentem programu, w którym

C#. NET - metoda main • Metoda main jest głównym segmentem programu, w którym zaczyna się i kończy jego działanie. • Deklaracja tej metody znajduje się w klasie lub strukturze. • Metoda main musi być metodą statyczną (static), może nie zwracać żadnej wartości (void) albo zwracać wartość typu int (int). • Wewnątrz metody main tworzymy obiekty i inne metody. • Metoda main umożliwia także pobieranie parametrów z wiersza poleceń. 19

C#. NET - metoda main • Metoda main może nie zwracać żadnej wartości, wtedy

C#. NET - metoda main • Metoda main może nie zwracać żadnej wartości, wtedy jej deklaracja wygląda następująco: static void Main() { } lub zwracać wartość typu integer: static int Main() { } • Metoda main może przyjmować, jako parametry, argumenty z wiersza poleceń. static void Main(string[] args) static int Main(string[] args) • W obu tych przypadkach parametrem metody main jest tablica elementów typu string, które można konwertować na typy liczbowe korzystając z klasy 20 Convert lub metody Parse

C#. NET - modyfikatory dostępu • Modyfikatory dostępu służą określeniu dostępności składnika lub typu.

C#. NET - modyfikatory dostępu • Modyfikatory dostępu służą określeniu dostępności składnika lub typu. • C#. NET wykorzystuje pięć poziomów dostępności, od największego do najmniejszego: 21

C#. NET - modyfikatory dostępu • W deklaracji danego składnika można stosować tylko jeden

C#. NET - modyfikatory dostępu • W deklaracji danego składnika można stosować tylko jeden modyfikator dostępu - wyjątkiem jest kombinacja protected internal • Jeżeli w deklaracji składnika nie występuje określenie dostępności, to przydzielana jest składnikowi dostępność domyślna (zależna od dostępności obiektu nadrzędnego). • Słowo kluczowe base: – udostępnia składniki klasy bazowej w kodzie klasy pochodnej i umożliwia wywołanie przesłoniętej metody klasy bazowej. – umożliwia określenie konstruktora klasy bazowej, który będzie wykorzystywany podczas tworzenia egzemplarzy klasy pochodnej. 22

C#. NET - wskaźnik this • Wskaźnik this odnosi się do bieżącego egzemplarza klasy,

C#. NET - wskaźnik this • Wskaźnik this odnosi się do bieżącego egzemplarza klasy, dla którego wywołano metodę. Słowa kluczowego this używa się do: – określenia składników danej klasy, ukrytych poprzez stosowanie podobnych nazw, np. : public Baza(string imie, string alias) { this. imie = imie; this. alias = alias; } – przekazywania obiektu jako parametru wywołania innych metod: Przelicz(this); 23

C#. NET - wskaźnik this – deklaracji indeksatorów: Public int this[int param] { get

C#. NET - wskaźnik this – deklaracji indeksatorów: Public int this[int param] { get { return array[param]; } set { array[param]= value; } } 24

if (wyrażenie) C#. NET - instrukcje warunkowe { instrukcja 1; } else { instrukcja

if (wyrażenie) C#. NET - instrukcje warunkowe { instrukcja 1; } else { instrukcja 2; } Switch (wyrażenie) { case wartość1 { instrukcja 1; instrukcja_skoku; } case wartość2 { instrukcja 2; instrukcja_skoku; } default { instrukcja 3; instrukcja_skoku; } } 25

C#. NET - instrukcje iteracyjne Do { instrukcja 1; instrukcja 2; } while (warunek);

C#. NET - instrukcje iteracyjne Do { instrukcja 1; instrukcja 2; } while (warunek); while (warunek) { instrukcja 1; instrukcja 2; } 26

C#. NET - instrukcje iteracyjne for ([inicjowanie_wartości]; [wyrażenie]; [it eratory]) { instrukcja 1; instrukcja

C#. NET - instrukcje iteracyjne for ([inicjowanie_wartości]; [wyrażenie]; [it eratory]) { instrukcja 1; instrukcja 2; } • Wielokrotne wykonywanie instrukcji wewnętrznych dla każdego elementu znajdującego się w tablicy lub w obiekcie kolekcji. foreach (typ identyfikator in wyrażenie) { instrukcja 1; instrukcja 2; } 27

C#. NET - instrukcje skoku • break –powoduje przerwanie wykonywania pętli lub instrukcji warunkowej

C#. NET - instrukcje skoku • break –powoduje przerwanie wykonywania pętli lub instrukcji warunkowej w której się znajduje. • continue – powoduje przerwanie jednego obiegu pętli; przekazuje sterowanie do następnej iteracji; • goto – służy do przekazywania sterowania bezpośrednio do instrukcji oznaczonej etykietą (najczęściej do określonej etykiety case instrukcji switch albo etykiety default instrukcji switch. goto identyfikator; goto case wartość; goto default; • return – powoduje przerwanie wykonywania metody i powrót sterowania do miejsca, w którym metoda 28 została wywołana; może zwrócić wartość wyrażenia.

Literatura • Dino Esposito : Tworzenie aplikacji za pomocą ASP. NET oraz ADO. NET

Literatura • Dino Esposito : Tworzenie aplikacji za pomocą ASP. NET oraz ADO. NET (Microsoft Press, Wydawnictwo RM Warszawa 2002) • Julian Templeman, David Vitter : Visual Studio. NET: . NET Framework. Czarna Księga (Helion 2003) • Microsoft Press : Microsoft Visual C#. NET Encyklopedia (Helion 2003) • Rusty Harold : XML. Księga Eksperta (Helion 2001) • Scott Worley : ASP. NET. Vademecum Profesjonalisty (Helion, 2003) • Steaven Holzner : XML. Vademecum Profesjonalisty (Helion 2001) • http: //www. ASP. com • http: //www. ietf. org/RFC% 2069/ • http: //www. learn. ASP. com • http: //www. msdn. microsoft. com/vcsharp/ • http: //www. windows 2003. pl • http: //www. xml. com 29