C# cz.3
description
Transcript of C# cz.3
AgendaSzybkie przypomnienieCo to jest dziedziczenie?Dlaczego dziedziczenie jest fajnePrzykładyPolimorfizmRTTI
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ć?
Co jest lepsze?
hPrinter = GetPrinter();PrintText(hPrinter, "Hello world!");
hPrinter = GetPrinter();hPrinter.PrintText(hPrinter,”Hello World!”);
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;
Co to jest dziedziczenie?
Źródło: „Od zera do gier kodera”, http://xion.org.pl/productions/texts/coding/megatutorial/
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/
Abstrakcja (3rok TOiK)Umiejętność pomijania niepotrzebnych elementów i ustalania odpowiedniego poziomu szczegółowości
Dlaczego dziedziczenie jest fajne?
Enkapsulacja danych i zachowaniaPonowne użycie koduUłatwia abstrahowanie
7 ± 2
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; } }};
ZOOclass Fish : Animal // Ryba{
void Plyn();};
class Mammal : Animal // Ssak{
void Biegnij();};
class Bird : Animal // Ptak{
void Lec();};
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; } }};
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
PolimorfizmKwintesencja dziedziczeniaOperowanie na typie bazowym
A de facto na typie rzeczywistym
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();};
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); }}
RTTIRunTime Type InfoPodstawa refleksji i meta-programowaniaKlasa Type