lekcja 28 dziedziczenie i rodzaje dziedziczenia

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

Upload: kin

Post on 16-Jan-2016

72 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

1

Partnerstwo dla Przyszłości

Lekcja 28

Dziedziczenie i rodzaje dziedziczenia

Page 2: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

2

Partnerstwo dla Przyszłości

Przedstawienie zagadnień

Klasa i jej elementyDziedziczenie klasPolimorfizmKonstruktory klas

Page 3: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

3

Partnerstwo dla Przyszłości

Zaprojektowanie klasy Prostokat

Klasa ProstokatPola

intBokAIntBokB

WłaściwościBokABokB

MetodyPole

Page 4: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

4

Partnerstwo dla Przyszłości

Utworzenie nowej klasy Prostokat

Zadanie1_28

Page 5: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 6: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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.

Page 7: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 8: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 9: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 10: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 11: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 12: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 13: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 14: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 15: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 16: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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

Page 17: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

17

Partnerstwo dla Przyszłości

Aplikacja Nowe auto

Zadanie5_28

Page 18: Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

18

Partnerstwo dla Przyszłości

Klasa NoweAuto i klasy potomne