Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia."— Zapis prezentacji:

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

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

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

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

5 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

6 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.

7 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

8 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

9 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

10 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

11 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

12 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).

13 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

14 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

15 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))

16 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

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

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


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

Podobne prezentacje


Reklamy Google