• Nie Znaleziono Wyników

Zadanie Utworzy

N/A
N/A
Protected

Academic year: 2021

Share "Zadanie Utworzy"

Copied!
2
0
0

Pełen tekst

(1)

z3 – Polimorfizm, pole kwadratu i kola

Copyright © 2017, mgr inż. Janusz Bonarowski 1

z3 - Polimorfizm – (z greckiego) wielopostaciowość; w informatyce pojęcie dla określenia różnych sposobów zachowania 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

Utworzyć aplikację obliczającą pola 2 figur: kwadratu i koła.

Obliczenia wykonamy posługując się metodami o tej samej nazwie Pole.

Realizacja zadania

Zbudujmy klasę bazową Figura_plaska posiadającą

• właściwość Wymiar, pozwalającą zdefiniować długość jednego wymiaru oraz

metodę Pole zwracającą (jakąkolwiek) wartość. Metoda w tej formie nie będzie wykorzystywana do obliczeń, ponieważ w klasach potomnych zamierzamy zastąpić (mówimy: nadpisać) tę metodę - metodami o tej samej nazwie, ale innej treści.

W takiej sytuacji w klasie bazowej Figura_plaska, w definicji metody Pole musimy użyć słowa kluczowego nadpisywana: Overridable.

Następnie utwórzmy dwie klasy potomne Kwadrat i Kolo (nazwy klas bez polskich znaków diakrytycznych) dziedziczące po klasie Figura_plaska właściwość Wymiar. Obie potomne klasy (Kwadrat i Kolo) będą posiadały swoje metody Pole.

Ponieważ te metody nadpisują metodę klasy bazowej Figura_plaska, o tej samej nazwie,

w deklaracji tych metod (czyli w funkcjach) w klasach potomnych musi być użyte słowo kluczowe

"nadpisuje" Overrides.

Class1.vb

Public Class Figura_plaska

'Klasa bazowa, po niej będzie dziedziczenie.

Private _Wymiar As Single

Public Property Wymiar As Single Get

Return _Wymiar End Get

Set(ByVal value As Single) _Wymiar = value

End Set End Property

Public Overridable Function Pole() As Single ' =========== (tzn. będzie nadpisywana)

Return 1 'Nie ważne jaka wartość, może być 1 lub nic.

End Function End Class

Public Class Kwadrat

Inherits Figura_plaska

Public Overrides Function Pole() As Single ' ========= (nadpisująca)

Return MyBase.Wymiar ^ 2 End Function

End Class

Public Class Kolo

Inherits Figura_plaska

Public Overrides Function Pole() As Single ' ========= (nadpisująca)

Return Math.PI * MyBase.Wymiar ^ 2 End Function

End Class

(2)

z3 – Polimorfizm, pole kwadratu i kola

Copyright © 2017, mgr inż. Janusz Bonarowski 2

Form1.vb

Public Class Form1

Dim mojaFigura As Figura_plaska

Private Sub Button1_Click(sender As Object, e As EventArgs) _

Handles Button1.Click mojaFigura = New Kwadrat

mojaFigura.Wymiar = CSng(textBoxWymiar.Text) txtPoleKwadratu.Text = mojaFigura.Pole

mojaFigura = New Kolo

mojaFigura.Wymiar = CSng(textBoxWymiar.Text) txtPoleKola.Text = mojaFigura.Pole

End Sub End Class

Cytaty

Powiązane dokumenty

Borowo (dawniej Borówko Nowe),

Każde ćwiczenie wykonujemy 30 sekund, po czym przechodzimy do kolejnego, w razie potrzeby robiąc sobie bardzo krótką przerwę (do max.. 7.Wejdź na

Co nie pasuje do tej

rachunek prawdopodobieństwa i statystyka matematyczna (4inf, rpism,

Wyniki badañ pierwszy opis zespo³u objawów zwi¹zanych z zamkniêciem têtnicy mó¿d¿kowej przedniej dolnej, w którym wystêpowa³y: zawroty g³owy, niedos³uch, niedow³ad

Istotą tego aforyzmu jest po- stulat, by liczby naturalne traktować jako pojęcia pierwotne, nie wymagające definicji, wszystkie zaś pozostałe typy liczb powinny być definiowane, a

As a result, using a factorized demand distribution is preferred for artificial leak localization campaigns, particularly when the objective is to localize small leaks or deter-

Jak widać największym pod względem powierzchni powiatem wśród obję- tych ustaleniami i porównaniami był powiat nowotarski (MRS 1939 podaje obszar i liczbę ludności