57
Metodyka programowania Podstawy C#

Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Metodyka programowania

Podstawy C#

Page 2: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Platforma .NET

Platforma .NET (.NET Framework) • Platforma programistyczna Microsoft, • Obejmuje

- środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas

• Programy mogą być pisane w jednym z wielu języków (C++, C#, F#, J#, Delphi, Visual Basic)

• Umożliwia uruchamianie programów na serwerze IIS (Internet Information Services) oraz na systemach z implementacją .NET

• Zgłoszony standard EMCA, powstają niezależne wdrożenia, np. Mono (UNIX, Linux, Android, …)

Page 3: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Platforma .NET

Struktura .NET

Środowisko uruchomieniowe CLR(Common Language Runtime)

Biblioteki

BCL (Base Class Library)

ADO.NET ASP.NET XML, SQL

Windows.Forms WebServices

Page 4: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Platforma .NET

Środowisko uruchomieniowe CLI

Procesor

C#

Obsługa wykonywania

Bezpieczeństwo

Zarządzanie pamięcią

J# C++

Kod IL Biblioteki .NET

Kompilator JIT(Just in Time)

Kod maszynowy

Page 5: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Platforma .NET

Wersje .NET • 1.0 (2002 r.)• 2.0 (2005 r.), Windows Server 2003• 3.0 (2006 r.), Windows Server 2008, Windows Vista• 3.5 (2007 r.), Windows 7• 4.0 (2010 r.)• 4.5 (2012 r.), Windows Server 8, Windows 8

Page 6: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

C#

Najważniejsze cechy C#• Obiektowość

kod programu jest zbiorem klas; typy proste (int, double, itd.) również są strukturami

• Odśmiecanie pamięcizarządzaniem pamięcią zajmuje się środowisko uruchomieniowe

• Wiele nowoczesnych rozwiązań właściwości, indeksery, delegacje, zdarzenia, refleksje, …(wiele zapożyczonych z języka Java)

• Bogate biblioteki klas dla aplikacji konsolowych (System), okienkowych (Windows.Forms), bazodanowych (ADO.NET), sieciowych (System.Net), w architekturze rozproszonej (WebServices), dynamicznych aplikacji internetowych (ASP.NET) oraz multimediów (Silverlight).

Page 7: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

C#

Wspólny system typów CTS

Typy wartościowe

Struktury

Typy referencyjne

Tablica

Interfejs

Klasa

Typy wyliczeniowe

Typy proste

Obiekt

Page 8: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

C#

Typy wartościowe• Deklaracja

deklarowany (tworzony) jest obiekt Int32 x;x = 7;

• Przypisanieobiekt jest kopiowanyInt32 a, b;a = 13;b = a;

(są dwa obiekty Int32, oba zawierają wartość 13)

Page 9: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

C#

Typy referencyjne• Deklaracja

deklarowana (tworzona) jest referencja, obiekt nie istnieje dopóki nie zostanie utworzony operatorem newButton b1;b1 = new Button();

• Przypisaniekopiowany jest nie obiekt, tylko referencja do niego Button b2;b2 = b1;

(jest jeden obiekt Button, obie referencje wskazują na niego)

Page 10: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy proste C#

Typy proste:• Boolean (alias: bool)

wartości logiczne true i false• Int32 (alias: int)

wartości całkowiteze znakiem: SByte, Int16, Int32, Int64bez znaku: Byte, UInt16, UInt32, UInt64

• Double (alias: double)Single (alias: single, float)

• Char (alias: char)znak Unicode, 16-bitowy

• String (alias: string)

Page 11: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy proste C#

Typy proste są strukturami; dostarczają wiele użytecznych metod:

• ToString – konwersja na łańcuch zanków• Parse – konwersja z łańcucha znaków• TryParse – jak Parse, ale z obsługą błędów

Int32 a;a = Int32.Parse("32");Double x, y;x = Double.Parse("4,1");y = 1.25;Boolean ok;ok = Int32.TryParse("abc", a);

Page 12: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy proste C#

Metody typów prostych - Int32• Statyczne (klasy)

Int32 MinValueInt32 MaxValueInt32 Parse (String s)Boolean TryParse (String s, Int32 v)

• InstancjiInt32 CompareTo (Int32 v)Boolean Equals (Int32 v)String ToString ()String ToString (String format)

Page 13: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy proste C#

Metody typów prostych - Double• Statyczne (klasy)

Double MinValueDouble MaxValueDouble NaNDouble EpsilonDouble NegativeInfinityDouble PositiveInfinityDouble Parse (String s)Boolean TryParse (String s, Double v)

• InstancjiInt32 CompareTo Double v)Boolean Equals Double v)Boolean IsNaN ()Boolean IsInfinity ()String ToString ()String ToString (String format)

Page 14: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy proste C#

Konwersje typów prostych• Konwersja automatyczna jest możliwa, gdy nie ma ryzyka

utraty wartości lub pogorszenia precyzji:Int32 a;Int16 b = 77;a = b;

w przeciwnym razie jest błędem składniowym:b = a; // błąd: Int16 <- Int32Single y;y = 1.25; // błąd: Single <- Double

• Można stosować konwersje wymuszone:b = (Int16) a;

Page 15: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Identyfikatory

Nazwy, które programista nadaje zmiennym, funkcjom, klasom, itd.:

- litery a..z, A..Z, cyfry 0..9 oraz znak podkreślenia "_"można używać znaków diakrytycznych (ą, ę, …)

- nie może zaczynać się od cyfry- małe i wielkie litery są rozróżniane

wsp1, wsp_1,suma_liczb, SumaLiczb, sumaLiczbnazwa, Nazwa, NAZWA

Najbardziej popularna jest notacja Camel (wielbłądzia):toJestPrzykładNotacjiCamel

Page 16: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Literały

Napis reprezentujący wartość, która może byćzapisana w zmiennej lub użyta w wyrażeniu.

• Każda stała ma ściśle określony typ(tj. najprostszy typ, w jakim stałą można by zapisać):100 – typ całkowity, int 17.5 – typ rzeczywisty, double 1.75e01 – jw. "hello" – łańcuch znaków, string 'A' – typ znakowy, char

Page 17: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Operatory – hierarchia i wiązanie

przyrostkowe ++ -- leweprzedrostkowe ++ -- prawejednoargumentowe + - prawedwuargumentowe * / % lewe

+ - lewe przesunięcia << >> lewe relacji < <= >= > lewe równości == != lewe logiczne && lewe

|| lewe warunkowy ?: prawe przypisania = += -= *= /= prawe

Page 18: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Operatory

Hierarchia operatorów • Określona dla danego języka programowania kolejność

operatorów, uwzględniana przy obliczaniu wyrażeń. Np. w wyrażeniu y = a + b * c;najpierw wykonywane jest mnożenie, później dodawanie i dopiero na końcu przypisanie (ponieważ operator mnożenia stoi w hierarchii wyżej, niż operator dodawania, a ten wyżej, niż operator przypisania). Aby zmienić kolejność wykonywania operatorów, należy stosować nawiasy, np.: y = (a + b) * c;

Page 19: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Operatory

Wiązanie operatorów • Określona dla danego języka programowania kolejność

wykonywania operatorów o tej samej hierarchii. Większość operatorów ma wiązanie lewe (tzn. wykonywane są od lewej do prawej). Nieliczne, w tym operatory przypisania, maja wiązanie prawe. Np. w wyrażeniu y = a / b * c;najpierw jest wykonywane dzielenie, a dopiero potem mnożenie – czyli y jest obliczane jako (a/b)*c;Aby zmienić kolejność wykonywania operatorów, należy stosować nawiasy, np.: y = a / (b * c);

Page 20: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcja pusta;

• Stosowana wówczas, gdy składnia wymaga podania instrukcji, ale nic nie ma być wykonane

• Na ogół użycie instrukcji pustej jest błędem"błąd nadgorliwości":if (x==0); y = 1;

instrukcja y=1; jest wykonywana zawsze, niezależnie od warunku, ponieważ z warunkiem związana jest instrukcja pusta (średnik po nawiasie)

Page 21: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcje:• Pusta• Grupująca (blok instrukcji)• Warunkowa

if, if-else• Iteracyjne

for, while, do-while, foreach

Page 22: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcja grupująca (blok instrukcji)

{ // dowolna ilość instrukcji}

• Stosowana wówczas, gdy składnia pozwala na podanie jednej instrukcji, a potrzeba użyć więcej.

Page 23: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcja wyrażeniowawyrażenie ;

• Dowolne wyrażenie (tj. poprawna składniowo kombinacja nazw zmiennych, operatorów oraz stałych), zakończone średnikiem.

Page 24: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcja warunkowaif (warunek) instrukcja

• "warunek" – dowolne wyrażenie o rezultacie całkowitym, "instrukcja" – dowolna instrukcja (w tym wyrażeniowa, grupująca, warunkowa, ...)

• Działanie: jeżeli wyrażenie "warunek" daje rezultat true, "instrukcja" jest wykonywana, w przeciwnym przypadku - pomijana

Page 25: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcja warunkowaif (warunek) instrukcja1else instrukcja2

• Jeżeli wyrażenie "warunek" daje rezultat true, wykonywana jest "instrukcja1", w przeciwnym przypadku - "instrukcja2"

Page 26: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcje iteracyjnefor (inicjalizacja; warunek; inkrementacja) instrukcja

• Wykonywane jest wyrażenie "inicjalizacja" oraz sprawdzany "warunek"; Jeżeli "warunek" daje rezultat true, to wykonywana jest "instrukcja", a następnie "inkrementacja", po czym czynności są powtarzane, począwszy od "warunku"; Jeżeli "warunek" daje wartość false, wykonywanie instrukcji for zostaje zakończone;

Page 27: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Instrukcje

Instrukcje iteracyjnewhile (warunek) instrukcja

• Działanie: wykonywany jest "warunek"jeżeli "warunek" daje rezultat niezerowy, wykonywana jest "instrukcja"; jeżeli "warunek" daje wartość zero, wykonywanie instrukcji while zostaje zakończone; następnie czynności są powtarzane, począwszy od "warunku".

Page 28: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Wyjątek programowy• Wyjątek (exception) - mechanizm obsługi sytuacji wyjątkowych,

przede wszystkim błędów• Wyjątek jest rzucany (throw), aby zgłosić sytuację wyjątkową• Wyjatek jest przechwytywany (catch), aby obsłużyć tę sytuację;

Jeżeli wyjątek nie zostanie przechwycony, aplikacja zostaje awaryjnie zatrzymana, o czym informuje komunikat:

Page 29: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Przykład wyjątku programowegoPrzykład: program wczytuje ciąg znaków podany przez użytkownika po czym próbuje przekształcić go na liczbę przy pomocy Parse; metoda Parse nie może przekształcić łańcucha znaków (np. s="1#3") na wartość typu całkowitego i dlatego rzuca wyjątekInt32 n = 0;String s;s = Console.ReadLine();// tu może pojawić się wyjątek:n = Int32.Parse(s);

Page 30: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Typy wyjątków programowych• Rzuceniu wyjątku towarzyszy utworzenie obiektu wyjątku.

Typ wyjątku wynika z rodzaju błędu, natomiast obiekt wyjątku może zawierać dodatkowe, szczegółowe informacje o błędzie

• Np. metoda Parse może rzucać trzy typy wyjątków:– ArgumentNullExceptions – FormatException– OverflowException

Page 31: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Obsługa wyjątków • Do obsługi wyjątków służy instrukcja try-catch• W bloku "try" należy umieścić instrukcje potencjalnie

"niebezpieczne" (mogące zakończyć się błędem)oraz instrukcje od nich zależne

• W bloku (blokach) "catch" należy umieścić instrukcje obsługi błędu (błędów)Można napisać kilka bloków "catch" – oddzielnie dla każdego typu wyjątku, albo jeden wspólny

• Jeżeli jedna z instrukcji bloku "try" rzuci wyjątek, to wykonywanie tego bloku zostaje przerwane, po czym są wykonywane instrukcje bloku "catch";Jeżeli w bloku "try" wyjątek nie wystąpi, to blok "catch"nie jest wykonywany

Page 32: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Obsługa wyjątków • Najprostszy wariant – jeden blok "catch" dla wszystkich typów

wyjątków:try { // instrukcje mogące rzucić wyjątek // instrukcje zależne od w/w}catch { // obsługa wszelkich możliwych wyjątków}

Page 33: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Obsługa wyjątków

Obsługa wyjątków • Trudniejszy wariant –bloki "catch" dla różnych wyjątków:

try { // instrukcje mogące rzucić wyjątek // instrukcje zależne od w/w}catch (FormatException e){ // obsługa wyjątku}catch (OverflowException e){ // obsługa wyjątku}

Page 34: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Typy wyliczeniowe C#

Typy wyliczeniowe • Służą do definiowania zbioru dopuszczalnych wartości

enum Color { Red, Green, Blue}Color color = Color.Red;

• Dzięki ścisłej kontroli typów w C# gwarantują używanie zawsze poprawnych wartości

Page 35: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Tablice C#

Tablice są typami referencyjnymi • Po deklaracji musi następować utworzenie tablicy:

Int32[] ti;ti = new Int32[3];

• Utworzeniu może towarzyszyć nadanie wartości:Double[] td;td = new Double[3] { 1.0, 2.0, 3.5 };

Dostęp do elementów tablicy umożliwia indeksowanie• Indeksy elementów: od 0 do rozmiar-1

for (i=0; i<3; i++) s += td[i];

Page 36: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Klasa • definicja typu (definicja obiektu)

Obiekt • instancja klasy; • zmienna, której definicją jest klasa

Pole • element składowe klasy (obiektu), służący do przechowywania

danych• może być typu wartościowego lub referencyjnego

Page 37: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

…Metoda

• funkcja będąca elementem składowym klasy• mogą być przeciążone• istnieją funkcje o specjalnym przeznaczeniu:

konstruktor (można przeciążać) i destruktor

Właściwość• połączenie pola i dwóch metod

(służących do odczytu i zmiany wartości pola)

Page 38: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Pola (inaczej: atrybuty) klasy• Składnia:

[Modyfikator] typ nazwa; [Modyfikator] typ nazwa = wartość;

- Pola statyczne należą do klasy (a nie do instancji); pola prywatne są dostępne tylko dla metod danej klasy, natomiast nie są dostępne spoza tej klasy;- Pola typu referencyjnego – należy pamiętać o konieczności utworzenia obiektów operatorem new

• Przykładystatic Double InchCmRatio = 2.54; private Int32 x = 0;

Page 39: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Metody (inaczej: operacje) klasy• Składnia:

[Modyfikator] typ nazwa (argumenty){ // ciało metody}

- Typ rezultatu – dowolny typ C# lub void (ang. brak); Metoda powinna dostarczać rezultat przy pomocy instrukcji return (nie dotyczy funkcji z typem rezultatu void)- Na ogół metody wykonują operacje w obrębie własnej klasy (np. zmieniają wartość pól obiektu)

• Przykładypublic Double ToCm(){ return inches * InchCmRatio;}

Page 40: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Modyfikatory dostępu klasy i elementów składowych• public

- element dostępny bez ograniczeń, • internal

- dostępny tylko wewnątrz danego zestawu (ang. assembly), np. tylko dla innych klas tego samego projektu

• private (domyślny!)- niedostępny z zewnątrz

• static- element należący do klasy a nie do instancji (obiektu)- klasa, dla której nie można utworzyć obiektów

• const- element, którego wartość jest nadawana w deklaracji i nie może być później zmieniona

Page 41: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy – elementy statycznepublic static class Inches{ public static Double InchCmRatio = 2.54; public static Double InchToCm(Double inch) { return inch * InchCmRatio; }}

Page 42: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasypublic static class Inches{ […]}

- Klasa jest publiczna (tj. dostępna bez ograniczeń); - Klasa jest statyczna (tj. nie można utworzyć obiektu klasy, podobnie jak klas Console czy Math)

Page 43: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy• Przykład użycia

Double lenCm = Inches.InchToCm (10);Double lenInch = lenCm / Inches.InchCmRatio;

Page 44: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasypublic class Inch{ private const Double InchCmRatio = 2.54; private Double val; public Inch(Double v) { val = v; } public Double ToCm() { return val * InchCmRatio; }}

Page 45: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasypublic class Inch{ […]}

- Klasa jest publiczna (tj. dostępna bez ograniczeń; - Nazwa klasy (Inch) funkcjonuje jak nazwa typu zmiennych, podobnie jak np. Double, jednak jest to typ referencyjny - obiekty trzeba tworzyć operatorem new

Page 46: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy• Pole (prywatne)

private Double val;[…]

• Pole nie jest dostępne z zewnątrz (tj. spoza klasy), ale może być modyfikowane oraz odczytywane przez medodynależące do klasy;

• Pole nie jest statyczne, zatem należy do obiektów (instancji), a nie do klasy jako całości

• Wartość pól powinna być podana przy ich deklaracji lub nadawana przez konstruktor klasy

Page 47: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy• Konstruktor – metoda używana do tworzenia obiektu

(podczas działania operatora new)public Inch(Double v){ val = v;}[…]

• Przykład użyciaKażda klasa definiuje typ referencyjny – użycie new jest konieczne, inaczej istnieje tylko referencja, a nie obiekt!Inch inch;inch = new Inch(3);

Page 48: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy• Metoda (publiczna)

public Double ToCm(){ return inches * InchCmRatio;}[…]

• Przykład użyciaDouble lenCm; Inch inch new Inch(3); lenCm = inch.ToCm();

Page 49: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasypublic class Inch{ private const Double InchCmRatio = 2.54; private Double val; public Inch(Double v) { val = v; } public Double Cm { get { return ToCm(); } set { val = value / InchCmRatio; } }}

Page 50: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Klasy C#

Przykład klasy• Właściwość (publiczna)

public Double Cm{ get { return val * InchCmRatio } set { val = value / InchCmRatio; }}

• Przykład użycia(właściwości używa się jak pola, choć kryją się za nim operacje, zdefiniowane w sekcjach get oraz set definicji)Inch inch = new Inch(3); Double lenCm;lenCm = inch.Cm; inch.Cm = 15;

Page 51: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Aplikacje konsolowe • Środowisko MSVS umożliwia tworzenie aplikacji konsolowych

- uruchamianych w klasycznym, czarnym oknie konsoli• Kreator MSVS tworzy projekt zawierający:

- włączenie typowych bibliotek- przestrzeń nazw (można w niej umieszczać własne klasy)- klasę Program- statyczną metodę Main

Page 52: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Funkcja główna programu • Każdy program musi zawierać funkcję główną (jak w C++);

wykonanie programu polega na wykonaniu funkcji głównej.

Page 53: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Przydatne klasy C# • Math

- klasa definiująca statyczne metody matematyczne, jak pierwiastek, potęga, logarytm, sinus itd. itp Double Sqrt (Double x);Double Pow (Double b, Double e);

- oraz dwie stałe: liczby Π oraz epublic const Double PI = 3.14159265358979;public const Double e = 2.718281828459045;

Page 54: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Przydatne klasy C# • Console

- klasa definiująca szereg statycznych metod do obsługi konsoli (odpowiednik strumieni cin oraz cout w C++)- najważniejsze metody:void WriteLine (String line);String ReadLine ();ConsoleKeyInfo ReadKey (Boolean noEcho);

Page 55: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Metody klasy Console• WriteLine – wyświetla tekst i przechodzi do nowej linii

- wyświetlenie łańcucha znaków Console.WriteLine ("Hello");

- wyświetlenie wartości zmiennejConsole.WriteLine (x.ToString());

- wyświetlenie kilku informacjiConsole.WriteLine ("Wynik = " + x);Console.WriteLine ( String.Format("Suma {0} i {1} = {2}",a,b,s)

);

Page 56: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Metody klasy Console• ReadLine – wczytuje tekst wpisany z klawiatury

(do naciśnięcia <Enter>)

- wczytanie łańcucha znaków i konwersja na liczbęString ln;Double x;ln = Console.ReadLine ();x = Double.Parse(ln);

- jw., ale z wykrywaniem błędówBoolean ok;ok = Double.TryParse(ln, out x);

Page 57: Prezentacja programu PowerPointcastor.am.gdynia.pl/~pik/prokom/pliki/mp--csh-01i.pdf · b2 = b1; (jest jeden obiekt Button, obie referencje wskazują na niego) Typy proste C# Typy

Aplikacje konsolowe C#

Przykład aplikacji konsolowej C#