1 / 18

Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

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.

kin
Download Presentation

Lekcja 28 Dziedziczenie i rodzaje dziedziczenia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lekcja 28Dziedziczenie i rodzaje dziedziczenia

  2. Klasa i jej elementy Dziedziczenie klas Polimorfizm Konstruktory klas Przedstawienie zagadnień

  3. Zaprojektowanie klasy Prostokat • Klasa Prostokat • Pola • intBokA • IntBokB • Właściwości • BokA • BokB • Metody • Pole

  4. Utworzenie nowej klasy Prostokat • Zadanie1_28

  5. Aplikacja Bryly i figury • Zadanie1_28 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

  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 <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. Klasa bazowa i klasy potomne • Klasa Prostpadloscian • Pola • intWysokosc • Własciwosci • Wysokosc • Metody • ObliczPoleProstpadloscianu • ObliczObjetoscProstopadloscianu • Klasa Prostokat • Pola • intBokA • IntBokB • Właściwości • BokA • BokB • Metody • Pole • Klasa Ostroslup • Pola • intWysokosc • Własciwosci • Wysokosc • Metody • ObliczPoleOstroslupa • ObliczObjetoscOstraslupa

  8. Klasa Prostopadloscian Public Class Prostopadloscian Inherits Prostokat Private intWysokosc AsInteger 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. Modyfikacja projektu formularza • Zadanie2_28 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

  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. Porównanie kodu klasy bazowej i potomnej 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 Public Class Prostopadloscian Inherits Prostokat Private intWysokosc AsInteger Public Property Wysokosc() As Integer End Property Public Function ObliczPOleProstopadloscianu() AsInteger End Function Public Function ObliczObjetoscProstopadloscianu() As Integer Return BokA * BokB * intWysokosc End Function End Class

  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. 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 • Zadanie3_28 Public Class Prostopadloscian Inherits Prostokat Private intWysokosc AsInteger Public Property Wysokosc() As Integer End Property Public FunctionOvveridesObliczPOle () AsInteger End Function Public Function ObliczObjetoscProstopadloscianu() As Integer End Function End Class

  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. 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. • Deklaracja konstruktora w klasie Prostokat może wyglądać następująco: Public SubNew(ByVal A, ByVal B) intBokA = A intBokB = B End Sub • Użycie konstruktora przy inicjowaniu obiektu: P = New Prostokat(CInt(txtBokA.Text), CInt(txtBokB.Text))

  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 • Zadanie4_28 P = New Prostokat(CInt(txtBokA.Text), CInt(txtBokB.Text)) Pr = New Prostopadloscian(CInt(txtBokA.Text), CInt(txtBokB.Text),CInt(txtWysokosc.Text))

  17. Aplikacja Nowe auto • Zadanie5_28

  18. Klasa NoweAuto i klasy potomne

More Related