z3 - Polimorfizm – Pola figur
Copyright © 2017, mgr inż. Jacek Jusis 1
z3 Polimorfizm – Pola figur
Polimorfizm - w informatyce pojęcie dla określenia różnych sposobów zachowania się metody o tej samej nazwie w zależności od obiektu, na którym jest wykonywana. Polimorfizm wiąże się ściśle z
dziedziczeniem.
Zadanie
Utwórzmy klasę bazową Figura. Niech klasa ta nie posiada żadnych właściwości. Niech posiada jedynie metodę o nazwie o Pole_figury o argumencie Pole.
Klasa ta niech będzie klasa abstrakcyjną (czyli nie będzie miała żadnej treści i jej metoda Pole_figury nie będzie miała treści i będzie miała atrybut „musi być nadpisywana” – MustOverride.
Nadpisywanie metody klasy bazowej będzie następowało w 2 klasach dziedziczących po klasie bazowej:
Kolo i Prostokat. Klasy te będą posiadały własne konstruktory tworzące wymiary promienia koła oraz długości i szerokości prostokąta.
Class1.vb
Public MustInherit Class Figura
Public MustOverride Sub Pole_figury(ByRef pole As Single) End Class
Public Class Kolo Inherits Figura
Private _promien As Single
Sub New(ByVal promien_kola As Single) _promien = promien_kola
End Sub
Public Overrides Sub Pole_figury(ByRef pole As Single) pole = Math.PI * _promien * _promien
End Sub End Class
Public Class Prostokat Inherits Figura
Private _dlugosc As Single Private _wysokosc As Single
Sub New(ByVal dlugosc_prostokata As Single, ByVal wysokosc_prostokata As Single) _dlugosc = dlugosc_prostokata
_wysokosc = wysokosc_prostokata End Sub
Public Overrides Sub Pole_figury(ByRef pole As Single) pole = _dlugosc * _wysokosc
End Sub End Class
Form1.vb
Public Class Form1
Private Sub ButtonPoleKola_Click(sender As Object, e As EventArgs) _
Handles ButtonPoleKola.Click Dim pole As Single
Dim mojeKolo As Figura
mojeKolo = New Kolo(CSng(TextBoxPromien.Text)) mojeKolo.Pole_figury(pole)
TextBoxPole.Text = CStr(pole) End Sub
z3 - Polimorfizm – Pola figur
Copyright © 2017, mgr inż. Jacek Jusis 2
Private Sub ButtonPoleProstokata_Click(sender As Object, e As EventArgs) _ Handles ButtonPoleProstokata.Click Dim pole As Single
Dim mojProstokat As Figura mojProstokat = _
New Prostokat(CSng(TextBoxDlugosc.Text), CSng(TextBoxWysokosc.Text)) mojProstokat.Pole_figury(pole)
TextBoxPole.Text = CStr(pole) End Sub
End Class Diagram klas
Rysunek 1. Diagram klas
Rysunek 2. Aplikacja w działaniu