Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Programowanie obiektowe
Klasy abstrakcyjne i interfejsy
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Klasy i obiekty.
Wzorce.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Generics w .NET 2.0 Łukasz Rzeszot.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
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
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
Tworzenie ASP.NET Web Form
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
Kurs Pascala – spis treści
Dziedziczenie i jego rodzaje
C++ wykład 5 ( ) Dziedziczenie.
C++ wykład 6 ( ) Polimorfizm.
C++ wykład 2 ( ) Klasy i obiekty.
Ogólne jednostki programowe 1
Wykład 8 Wojciech Pieprzyca
Języki programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład II
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
Prasek Aneta, Skiba Katarzyna. Funkcje stałe const to takie funkcje, które nie mogą modyfikować stanu obiektu. Oznacza to, że funkcja stała nie może zmieniać.
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Kurs języka C++ – wykład 5 ( )
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Podstawy programowania (4)
Klasy ( uzupełnienie ). Definicja klasy Klasa jest zbiorem logicznie powiązanych danych i funkcji, przeznaczonych do realizacji konkretnego zadania; Zamknięcie.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
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.
Programowanie Zaawansowane
Wykład 4 Programowanie obiektowe. Tworzenie własnych obiektów Słowo kluczowe this W JavaScript można tworzyć własne obiekty. Wykorzystuje się tu zapis.
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Programowanie Obiektowe – Wykład 6
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

Partnerstwo dla Przyszłości 2 Przedstawienie zagadnień Klasa i jej elementy Dziedziczenie klas Polimorfizm Konstruktory klas

Partnerstwo dla Przyszłości 3 Zaprojektowanie klasy Prostokat Klasa Prostokat Pola intBokA IntBokB Właściwości BokA BokB Metody Pole

Partnerstwo dla Przyszłości 4 Utworzenie nowej klasy Prostokat Zadanie1_28

Partnerstwo dla Przyszłości 5 Aplikacja Bryly i figury Private Sub btnOblicz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOblicz.Click Dim P As Prostokat P = New Prostokat() P.BokA = CInt(txtBokA.Text) P.BokB = CInt(txtBokB.Text) lblPole.Text = CStr(P.ObliczPole()) End Sub Zadanie1_28

Partnerstwo dla Przyszłości 6 Dziedziczenie w programowaniu obiektowym Dziedziczenie jest to związek pomiędzy klasami obiektów określający przekazywanie cech (definicji atrybutów, metod, itd.) z nadklasy do jej podklas. Dziedziczenie służy do budowania hierarchii definiowanych klas przede wszystkim ze względu na przejrzystość budowanego kodu programu. Pozwala uniknąć wielokrotnemu powtarzaniu kodu. Klasa powstała w wyniku dziedziczenia to klasa pochodna danej klasy. Klasa pochodna może być także klasą bazową dla innej klasy pochodnej. Należy pamiętać, że dziedziczenie dotyczy klas nie obiektów.

Partnerstwo dla Przyszłości 7 Klasa bazowa i klasy potomne Klasa Prostokat Pola intBokA IntBokB Właściwości BokA BokB Metody Pole Klasa Prostpadloscian Pola intWysokosc Własciwosci Wysokosc Metody ObliczPoleProstpadloscianu ObliczObjetoscProstopadloscianu Klasa Ostroslup Pola intWysokosc Własciwosci Wysokosc Metody ObliczPoleOstroslupa ObliczObjetoscOstraslupa

Partnerstwo dla Przyszłości 8 Klasa Prostopadloscian Public Class Prostopadloscian Inherits Prostokat Private intWysokosc As Integer Public Property Wysokosc() As Integer Get Return intWysokosc End Get Set(ByVal Value As Integer) intWysokosc = Value End Set End Property Public Function ObliczPOleProstopadloscianu() As Integer Return (2 * BokA * BokB + 2 * BokA * intWysokosc + _ 2 * BokB * intWysokosc) End Function Public Function ObliczObjetoscProstopadloscianu() As Integer Return BokA * BokB * intWysokosc End Function End Class Zadanie2_28

Partnerstwo dla Przyszłości 9 Modyfikacja projektu formularza Private Sub RbtnProstokat_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtnProstokat.CheckedChanged lblPole.Text = 0 txtBokA.Text = 0 txtBokB.Text = 0 lblObjetosc.Visible = False lblOb.Visible = False lblW.Visible = False txtWysokosc.Visible = False Wybor = 1 End Sub Zadanie2_28

Partnerstwo dla Przyszłości 10 Wykorzystanie klasy Prostopadloscian If Wybor = 2 Then Pr = New Prostopadloscian() Pr.BokA = CInt(txtBokA.Text) Pr.BokB = CInt(txtBokB.Text) Pr.Wysokosc = CInt(txtWysokosc.Text) lblPole.Text = CStr(Pr.ObliczPOleProstopadloscianu.ToString("N2")) lblObjetosc.Text = CStr(Pr.ObliczObjetoscProstopadloscianu.ToString("N2") End If

Partnerstwo dla Przyszłości 11 Porównanie kodu klasy bazowej i potomnej Public Class Prostopadloscian Inherits Prostokat Private intWysokosc As Integer Public Property Wysokosc() As Integer End Property Public Function ObliczPOleProstopadloscianu() As Integer End Function Public Function ObliczObjetoscProstopadloscianu() As Integer Return BokA * BokB * intWysokosc End Function End Class Public Class Prostokat Private intBokA As Integer Private intBokB As Integer Public Property BokA() As Integer End Property Public Property BokB() As Integer End Property Public Function ObliczPole() As Integer End Function End Class

Partnerstwo dla Przyszłości 12 Przesłanianie metod Przesłanianie metod polega na umożliwieniu stosowania tych samych nazw metod w klasach potomnych i bazowych. Kompilator rozpoznaje, na jakim poziomie jest dana metoda i wykonuje ją odpowiednio dla danego obiektu. Cechę tę nazywamy także polimorfizmem lub wielopostaciowością. By poinformować kompilator o przesłanianiu, używamy dwóch słów kluczowych: - Overridable - metoda przesłaniana (zawsze w klasie bazowej); - Overrides - metoda przesłaniająca (deklarowana w klasie potomnej).

Partnerstwo dla Przyszłości 13 Przesłanianie metod – modyfikacja klas Public Class Prostokat Private intBokA As Integer Private intBokB As Integer Public Property BokA() As Integer End Property Public Property BokB() As Integer End Property Public Overridable Function ObliczPole() As Integer End Function End Class Public Class Prostopadloscian Inherits Prostokat Private intWysokosc As Integer Public Property Wysokosc() As Integer End Property Public Function Ovverides ObliczPOle () As Integer End Function Public Function ObliczObjetoscProstopadloscianu() As Integer End Function End Class Zadanie3_28

Partnerstwo dla Przyszłości 14 Wykorzystanie przesłaniania metod w aplikacji If Wybor = 1 Then P = New Prostokat() P.BokA = CInt(txtBokA.Text) P.BokB = CInt(txtBokB.Text) lblPole.Text = CStr(P.ObliczPole()) End If If Wybor = 2 Then Pr = New Prostopadloscian() Pr.BokA = CInt(txtBokA.Text) Pr.BokB = CInt(txtBokB.Text) Pr.Wysokosc = CInt(txtWysokosc.Text) lblPole.Text = CStr(Pr.ObliczPole.ToString("N2")) lblObjetosc.Text = CStr(Pr.ObliczObjetoscProstopadloscianu.ToString("N2")) End If If Wybor = 3 Then Ostr = New Ostroslup() Ostr.BokA = CInt(txtBokA.Text) Ostr.BokB = CInt(txtBokB.Text) Ostr.Wysokosc = CInt(txtWysokosc.Text) lblPole.Text = CStr(Ostr.ObliczPole.ToString("n2")) lblObjetosc.Text = CStr(Ostr.ObliczObjetoscOstroslupa.ToString("N2")) End If Zadanie3_28

Partnerstwo dla Przyszłości 15 Konstruktor Konstruktor klasy – specjalna procedura o nazwie New, pozwalająca wprowadzać do obiektu (a dokładnie przypisać jego właściwościom) wartości początkowe podczas jego inicjowania. Użycie konstruktora przy inicjowaniu obiektu: Public Sub New(ByVal A, ByVal B) intBokA = A intBokB = B End Sub Deklaracja konstruktora w klasie Prostokat może wyglądać następująco: P = New Prostokat(CInt(txtBokA.Text), CInt(txtBokB.Text))

Partnerstwo dla Przyszłości 16 Wykorzystanie konstruktorów w aplikacji Public Sub New (ByVal A, ByVal B) ‘konstruktor inicjujący klasę Prostoką pojawi sie przy nim komentarz 1 intBokA = A intBokB = B End Sub Public Sub New (ByVal A, ByVal B, ByVal H) 'konstruktor inicjujący klase Prostropadloscian MyBase.New(A, B) 'wywyołanie konstruktora bazowego ć intWysokosc = H End Sub P = New Prostokat(CInt(txtBokA.Text), CInt(txtBokB.Text)) Pr = New Prostopadloscian(CInt(txtBokA.Text), CInt(txtBokB.Text), CInt(txtWysokosc.Text)) Zadanie4_28

Partnerstwo dla Przyszłości 17 Aplikacja Nowe auto Zadanie5_28

Partnerstwo dla Przyszłości 18 Klasa NoweAuto i klasy potomne