Upload
kin
View
78
Download
0
Embed Size (px)
DESCRIPTION
Lekcja 28 Dziedziczenie i rodzaje dziedziczenia. Klasa i jej elementy Dziedziczenie klas Polimorfizm Konstruktory klas. Przedstawienie zagadnień. Zaprojektowanie klasy Prostokat. Klasa Prostokat Pola intBokA IntBokB Właściwości BokA BokB Metody Pole. - PowerPoint PPT Presentation
Citation preview
1
Partnerstwo dla Przyszłości
Lekcja 28
Dziedziczenie i rodzaje dziedziczenia
2
Partnerstwo dla Przyszłości
Przedstawienie zagadnień
Klasa i jej elementyDziedziczenie klasPolimorfizmKonstruktory klas
3
Partnerstwo dla Przyszłości
Zaprojektowanie klasy Prostokat
Klasa ProstokatPola
intBokAIntBokB
WłaściwościBokABokB
MetodyPole
4
Partnerstwo dla Przyszłości
Utworzenie nowej klasy Prostokat
Zadanie1_28
5
Partnerstwo dla Przyszłości
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
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 <BAZOWEJ>. 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
Klasa bazowa i klasy potomne
Klasa ProstokatPola
intBokAIntBokB
WłaściwościBokABokB
MetodyPole
Klasa ProstpadloscianPola
intWysokoscWłasciwosci
WysokoscMetody
ObliczPoleProstpadloscianuObliczObjetoscProstopadloscianu
Klasa OstroslupPola
intWysokoscWłasciwosci
WysokoscMetody
ObliczPoleOstroslupaObliczObjetoscOstraslupa
8
Partnerstwo dla Przyszłości
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 FunctionEnd Class
Zadanie2_28
9
Partnerstwo dla Przyszłości
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 = 1End Sub
Zadanie2_28
10
Partnerstwo dla Przyszłości
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
Porównanie kodu klasy bazowej i potomnej
Public Class Prostopadloscian Inherits Prostokat Private intWysokosc As Integer Public Property Wysokosc() As IntegerEnd Property Public Function ObliczPOleProstopadloscianu() As Integer End Function Public Function ObliczObjetoscProstopadloscianu() As Integer Return BokA * BokB * intWysokosc End FunctionEnd 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 FunctionEnd Class
12
Partnerstwo dla Przyszłości
Przesłanianie metodPrzesł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
Przesłanianie metod – modyfikacja klasPublic 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 FunctionEnd 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 FunctionEnd Class
Zadanie3_28
14
Partnerstwo dla Przyszłości
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 IfIf 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 IfIf 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
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 = BEnd 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
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 = BEnd SubPublic Sub New (ByVal A, ByVal B, ByVal H) 'konstruktor inicjujący klase Prostropadloscian MyBase.New(A, B) 'wywyołanie konstruktora bazowego ć intWysokosc = HEnd 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
Aplikacja Nowe auto
Zadanie5_28
18
Partnerstwo dla Przyszłości
Klasa NoweAuto i klasy potomne