Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałIrenka Flaga Został zmieniony 10 lat temu
1
C# cz.3 Obiektowość w C# Krzysztof Fediuk
2
Agenda Szybkie przypomnienie Co to jest dziedziczenie?
Dlaczego dziedziczenie jest fajne Przykłady Polimorfizm RTTI
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ć?
4
Co jest lepsze? hPrinter = GetPrinter(); hPrinter.PrintText(hPrinter,”Hello World!”); Który kod jest lepszy? Co widać? Drukowanie czy drukarkę? hPrinter = GetPrinter(); PrintText(hPrinter, "Hello world!");
5
Obiektowość Samochód Koło Drzwi Silnik Motocykl 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; 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; Samochód Koło Drzwi Silnik Motocykl Enkapsulacja Więcej elementów do kontroli Drobne różnice nie wychwycalne
6
Co to jest dziedziczenie?
Źródło: „Od zera do gier kodera”,
7
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”,
8
Abstrakcja (3rok TOiK) Umiejętność pomijania niepotrzebnych elementów i ustalania odpowiedniego poziomu szczegółowości
9
Dlaczego dziedziczenie jest fajne?
Enkapsulacja danych i zachowania Ponowne użycie kodu Ułatwia abstrahowanie 7 ± 2
10
ZOO class 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; } } };
11
ZOO class Fish : Animal // Ryba { void Plyn(); }; class Mammal : Animal // Ssak void Biegnij(); class Bird : Animal // Ptak void Lec();
12
ZOO class 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; } } };
13
Szachy // klasa bazowa class ChessPiece { /* definicja */ }; // Figura szachowa // klasy pochodne class Pawn : ChessPiece { /* ... */ }; // Pionek class Knight : ChessPiece { /* ... */ }; // Skoczek class Bishop : ChessPiece { /* ... */ }; // Goniec class Rook : ChessPiece { /* ... */ }; // Wieża class Queen : ChessPiece { /* ... */ }; // Hetman class King : ChessPiece { /* ... */ }; // Król
14
Polimorfizm Kwintesencja dziedziczenia Operowanie na typie bazowym
A de facto na typie rzeczywistym
15
Polimorfizm class 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();
16
Polimorfizm public 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); Dodać klasy Online document i Book Wypisać zawartośc
17
RTTI RunTime Type Info Podstawa refleksji i meta-programowania
Klasa Type
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.