C# cz.3

17
C# cz.3 Obiektowość w C# Krzysztof Fediuk [email protected]

description

C# cz.3. Obiektowość w C#. Krzysztof Fediuk [email protected]. Agenda. Szybkie przypomnienie Co to jest dziedziczenie? Dlaczego dziedziczenie jest fajne Przykłady Polimorfizm RTTI. Szybkie przypomnienie. Jakie mamy encje? Co to znaczy, że metoda jest statyczna? - PowerPoint PPT Presentation

Transcript of C# cz.3

Page 1: C# cz.3

C# cz.3

Obiektowość w C#

Krzysztof Fediuk [email protected]

Page 2: C# cz.3

AgendaSzybkie przypomnienieCo to jest dziedziczenie?Dlaczego dziedziczenie jest fajnePrzykładyPolimorfizmRTTI

Page 3: C# cz.3

Szybkie przypomnienie  Jakie mamy encje?

Co to znaczy, że metoda jest statyczna?Jak zadeklarować property?Czy metoda Console.Write() przechodzi do nowej linii?Z ilu interfejsów możemy dziedziczyć?

Page 4: C# cz.3

Co jest lepsze?

hPrinter = GetPrinter();PrintText(hPrinter, "Hello world!");

hPrinter = GetPrinter();hPrinter.PrintText(hPrinter,”Hello World!”);

Page 5: C# cz.3

ObiektowośćSamochód

KołoDrzwiSilnik

MotocyklKołoSilnik

class Samochod{

Kolo kola [4];Silnik silnik;Drzwi drzwi[2];

}Samochod[10] listaStartowa;

Kolo[40] listaStartowa_kola;Silnik[10] listaStartowa_silnik;Drzwi[20] listaStartowa_drzwi;

class Motocykl{

Kolo kola [2];Silnik silnik;

}Motocykl[10] listaStartowaM;Samochod[10] listaStartowa;

Kolo[40] listaStartowa_kola;Silnik[10] listaStartowa_silnik;Drzwi[20] listaStartowa_drzwi;Kolo[20] listaStartowaM_kola;Silnik[10] listaStartowaM_silnik;

Page 6: C# cz.3

Co to jest dziedziczenie?

Źródło: „Od zera do gier kodera”, http://xion.org.pl/productions/texts/coding/megatutorial/

Page 7: C# cz.3

Dziedziczenie w C#Dziedziczenie (ang. inheritance) to tworzenie nowej klasy na podstawie jednej lub kilku istniejących wcześniej klas bazowych 

Źródło: „Od zera do gier kodera”, http://xion.org.pl/productions/texts/coding/megatutorial/

Page 8: C# cz.3

Abstrakcja (3rok TOiK)Umiejętność pomijania niepotrzebnych elementów i ustalania odpowiedniego poziomu szczegółowości

Page 9: C# cz.3

Dlaczego dziedziczenie jest fajne?

Enkapsulacja danych i zachowaniaPonowne użycie koduUłatwia abstrahowanie

7 ± 2

Page 10: C# cz.3

ZOOclass Animal // Zwierzę{ float m_fMasa; int m_uWiek; public Animal() { m_uWiek = 0; } void Patrz(); void Oddychaj(); float Masa{

get { return m_fMasa; } set { m_fMasa = value; }

} int Wiek{ get { return m_uWiek; } }};

Page 11: C# cz.3

ZOOclass Fish : Animal // Ryba{

void Plyn();};

class Mammal : Animal // Ssak{

void Biegnij();};

class Bird : Animal // Ptak{

void Lec();};

Page 12: C# cz.3

ZOOclass HomeDog : Mammal // Pies domowy{         RACE m_Rasa;         COLOR m_KolorSiersci;         // metody         void Aportuj();         void Szczekaj();         // propertisy         RACE Rasa { get {return m_Rasa; } }         COLOR KolorSiersci { get {return m_KolorSiersci; } }};

Page 13: C# cz.3

Szachy// klasa bazowaclass ChessPiece { /* definicja */ };            // Figura szachowa // klasy pochodneclass Pawn : ChessPiece { /* ... */ };      // Pionekclass Knight : ChessPiece { /* ... */ };    // Skoczekclass Bishop : ChessPiece { /* ... */ };    // Goniecclass Rook : ChessPiece { /* ... */ };      // Wieżaclass Queen : ChessPiece { /* ... */ };     // Hetmanclass King : ChessPiece { /* ... */ };      // Król

Page 14: C# cz.3

PolimorfizmKwintesencja dziedziczeniaOperowanie na typie bazowym

A de facto na typie rzeczywistym

Page 15: C# cz.3

Polimorfizmclass Fish : Animal{         void Oddychaj()   // redefinicja metody wirtualnej               { Console.WriteLine("Oddycham skrzelami...„); }         void Plyn();}; class Mammal : Animal{   void Oddychaj()   // redefinicja metody wirtualnej               { Console.WriteLine("Oddycham płucami...„); }         void Biegnij();}; 

Page 16: C# cz.3

Polimorfizmpublic class Document{ public String Author { get; set; } public String Title { get; set; } public DateTime Date{ get; set; }}public class Program{ public static void ShowDocument(Document doc) { Console.WriteLine("Author:" + doc.Author); Console.WriteLine("Title:" + doc.Title); Console.WriteLine("Date:" + doc.Date); }}

Page 17: C# cz.3

RTTIRunTime Type InfoPodstawa refleksji i meta-programowaniaKlasa Type