Powtórzenie – 1_Dziedziczenie
Copyright © 2020 mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 1 1_Dziedziczenie
Zadanie
Utworzyć aplikację posiadającą klasę bazową Nieruchomosc i dwie klasy potomne: Budynek_mieszkalny i Garaż.
Obliczyć średnią powierzchnię pojedynczego mieszkania w budynku mieszkalnym i liczbę miejsc parkingowych w budynku garażowym
Klasa bazowa Nieruchomosc niech posiada:
- właściwość Powierzchnia_uzytkowa
Klasa potomna Budynek_mieszkalny niech posiada - właściwość Liczba_mieszkan
- metodę Srednia_powierzchnia (średnia powierzchnia jednego mieszkania).
Druga klasa potomna Garaz niech posiada
- właściwość Powierzchnia_na_samochód (czyli powierzchnia w m2 jaka jest przyjęta na 1 samochód) - metodę Liczba_samochodow (całkowita liczba samochodów do zaparkowania w tym garażu)
Kody klas
Klasa bazowa Public Class Nieruchomosc
'Aby zmienna _Powierzchnia_uzytkowa mogła być używana (dostępna) 'w klasach potomnych - deklarujemy ją nie Private lecz Protected Protected _Powierzchnia_uzytkowa As Integer
Public Property Powierzchnia_uzytkowa As Integer Get
Return _Powierzchnia_uzytkowa End Get
Set(value As Integer)
_Powierzchnia_uzytkowa = value End Set
End Property End Class
Klasa potomna: Budynek mieszkalny Public Class Budynek_mieszkalny
' Dziedziczy po klasie Budynek:
Inherits Nieruchomosc
Private _Liczba_mieszkan As Integer
Public Property Liczba_mieszkan As Integer Get
Return _Liczba_mieszkan End Get
Set(value As Integer)
_Liczba_mieszkan = value End Set
End Property
Public Function Srednia_powierzchnia() As Single Return _Powierzchnia_uzytkowa / _Liczba_mieszkan End Function
End Class
Powtórzenie – 1_Dziedziczenie
Copyright © 2020 mgr inż. Janusz Bonarowski, mgr inż. Jacek Jusis 2 Klasa potomna: Garaż
Public Class Garaz
' Dziedziczy po klasie Nieruchomosc:
Inherits NIeruchomosc
Private _Powierzchnia_na_samochod As Single
Public Property Powierzchnia_na_samochod As Single Get
Return _Powierzchnia_na_samochod End Get
Set(value As Single)
_Powierzchnia_na_samochod = value End Set
End Property
Public Function Liczba_samochodow() As Integer
Return Int(_Powierzchnia_uzytkowa / _Powierzchnia_na_samochod) End Function
End Class
Kod formularza
Private Sub ButtonOblicz_Click(sender As Object, e As EventArgs)
Handles ButtonOblicz.Click ' --- Obliczenia dla budynku mieszkalnego ---
Dim BlokDobra5 As New Budynek_mieszkalny
' Korzystamy z odziedziczonej właściwości:
' Powierzchnia użytkowa budynku mieszkalnego
BlokDobra5.Powierzchnia_uzytkowa = CSng(TextBoxBlokPowierzchnia.Text) ' Korzystamy z właściwości klasy potomnej:
' (całkowita) Liczba mieszkań w bloku
BlokDobra5.Liczba_mieszkan = CInt(TextBoxLiczbaMieszkan.Text)
' Korzystam z metody klasy potomnej, obliczam: Średnią pow. mieszkania TextBoxSredniaPowierzchniaMieszkania.Text = _
CStr(BlokDobra5.Srednia_powierzchnia) ' --- Obliczenia dla budynku garażowego ---
Dim GarazWesola7 As New Garaz
' Korzystam z odziedziczonej właściwości: Powierzchnia użytkowa Nieruchmości GarazWesola7.Powierzchnia_uzytkowa = CSng(TextBoxGarazPowierzchnia.Text) ' Korzystam z właściwości klasy potomnej: Powierzchnia na samochód
GarazWesola7.Powierzchnia_na_samochod = _
CSng(TextBoxPowierzchniaNaSamochod.Text) ' Korzystam z metody klasy potomnej: Liczba samochodów (w całym garażu) TextBoxLiczbaSamochodow.Text = CStr(GarazWesola7.Liczba_samochodow) End Sub
Rysunek 1. Postać formularza