C# cz.3 Obiektowość w C# Krzysztof Fediuk krzysiek.fediuk@gmail.com.

Slides:



Advertisements
Podobne prezentacje
Wstęp do programowania
Advertisements

Programowanie obiektowe
Klasy abstrakcyjne i interfejsy
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Klasy i obiekty.
Metody wirtualne.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Programowanie w środowisku sieciowym
Sposoby implementacji asocjacji
Implementacja ekstensji klasy
Programowanie obiektowe w Javie
Marcin Pamuła Mateusz Stefek
Visual Studio Codename „Orcas”, LINQ
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
OOP - programowanie zorientowane obiektowo w VB.NET
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
C++ wykład 6 ( ) Polimorfizm.
Zaawansowane technologie Javy Wykład 1 (26 lutego 2013)
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 8 Wojciech Pieprzyca
.NET Remoting Łukasz Zawadzki.
Test Doubles Adam Gabryś , v1.1,
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Programowanie obiektowe III rok EiT
Programowanie urządzeń mobilnych – wykład IV
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Generatory dokumentacji kodu źródłowego
Tworzenie aplikacji mobilnych
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
C# Cz.7 Refleksja, Atrybuty
C# Platforma .NET CZ.3 Kuba Ostrowski.
Programowanie komponentowe jesień-zima 2013
Java 3 MPDI Programowanie obiektowe W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów.
Programowanie obiektowe 2013/2014
PWSZ Gniezno // codefly 2009
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
K URS JĘZYKA C++ – WYKŁAD 6 ( ) Polimorfizm.
Dziedziczenie wielobazowe. dana klasa może mieć kilka bezpośrednich klas bazowych: dana klasa może mieć kilka bezpośrednich klas bazowych: kolorpołożenie.
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Przypomnienie wiadomości – kilka zadań
Programowanie Obiektowe – Wykład 9
(według:
(c) Krzysztof Barteczko 2014
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
BYDGOSKI FESTIWAL NAUKI
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

C# cz.3 Obiektowość w C# Krzysztof Fediuk krzysiek.fediuk@gmail.com

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? Jak zadeklarować property? Czy metoda Console.Write() przechodzi do nowej linii? Z ilu interfejsów możemy dziedziczyć?

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!");

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

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 zachowania Ponowne użycie kodu Ułatwia abstrahowanie 7 ± 2

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; } } };

ZOO class Fish : Animal // Ryba { void Plyn(); }; class Mammal : Animal // Ssak void Biegnij(); class Bird : Animal // Ptak void Lec();

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; } } };

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

Polimorfizm Kwintesencja dziedziczenia Operowanie na typie bazowym A de facto na typie rzeczywistym

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();

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

RTTI RunTime Type Info Podstawa refleksji i meta-programowania Klasa Type