Zajęcia_01, vbWalek_obj_kolekcja
Copyright ©2015, mgr inż. Jacek Jusis, mgr inż.Janusz Bonarowski 1
Class1.vb
Budujemy klasę Stopien_walu_parametry.
Klasa ta pozwoli tworzyć kolejne instancje pojedynczego, niezależnego stopnia przechowując jego parametry
– czyli jego średnicę i długość
Public Class Stopien_walu_parametry Private _Srednica_stopnia As Single Private _Dlugosc_stopnia As Single
Public Property Srednica_stopnia As Single Get
Return _Srednica_stopnia End Get
Set(ByVal value As Single) _Srednica_stopnia = value End Set
End Property
Public Property Dlugosc_stopnia As Single Get
Return _Dlugosc_stopnia End Get
Set(ByVal value As Single) _Dlugosc_stopnia = value End Set
End Property End Class
Wał będzie się składał z wielu stopni. Kolejność stopni musi być zapamiętywana. Możemy to rozwiązać w różny sposób: (1) obiekt lista jednokierunkowa, (2) Collection. Obiekt lista jednokierunkowa musi być budowana przez programistę. Obiekt Collection jest dostarczany w bibliotece Visual Studio. Lista jednokierunkowa będzie się nazywała Stopien_walu_powiazania, a kolekcja przechowująca stopnie wału Kolekcja_stopni_walu.
Omówione zostaną oba sposoby, a ostatecznie do dalszej pracy pozostawiony zostanie obiekt Collection.
'Public Class Stopien_walu_powiazania ' Inherits Stopien_walu_parametry
' Public Stopien_walu_odziedziczony As Stopien_walu_parametry ' Public Adres_po As Stopien_walu_parametry
'End Class
Form1.vb
Public Class Form1 Dim x1 As Single Dim y1 As Single
Dim objRys As System.Drawing.Graphics
Dim objPioroOs As New System.Drawing.Pen(Color.Green, 1) Dim objPioroWal As New System.Drawing.Pen(Color.Red, 2) Dim X_osi As Integer = 50
Dim Y_osi As Integer = 200 Dim x_pocz As Integer = X_osi Dim Liczba_stopni As Integer
''Dim wsk_pocz_walka As Stopien_walu_powiazania ''Dim wsk_kon_walka As Stopien_walu_powiazania Dim Kolekcja_stopni_walu As New Collection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load objRys = Me.CreateGraphics
End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove LabelKoordynaty.Text = "X=" & e.X & " Y=" & e.Y
End Sub
Zajęcia_01, vbWalek_obj_kolekcja
Copyright ©2015, mgr inż. Jacek Jusis, mgr inż.Janusz Bonarowski 2
Private Sub Form1_MouseClick(sender As Object, e As MouseEventArgs) _
Handles Me.MouseClick Dim x_stopnia As Single
Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single
Dim mojStopien As New Stopien_walu_parametry
''Dim mojStopien_powiazania As New Stopien_walu_powiazania objRys.DrawLine(objPioroOs, X_osi, Y_osi, 600, Y_osi) objRys.DrawLine(objPioroOs, X_osi, X_osi, X_osi, 350) x1 = e.X
y1 = e.Y
x_stopnia = x_pocz y_stopnia = y1
szerokosc = x1 - x_pocz wysokosc = (Y_osi - y1) * 2
objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, wysokosc) x_pocz = x_pocz + szerokosc
Liczba_stopni = Liczba_stopni + 1 mojStopien.Dlugosc_stopnia = szerokosc mojStopien.Srednica_stopnia = wysokosc ''If Liczba_stopni = 1 Then
'' mojStopien_powiazania.Stopien_walu_odziedziczony = mojStopien '' wsk_pocz_walka = mojStopien_powiazania
'' wsk_kon_walka = mojStopien_powiazania ''Else
'' mojStopien_powiazania.Stopien_walu_odziedziczony = mojStopien '' wsk_kon_walka.Adres_po = mojStopien_powiazania
'' wsk_kon_walka = mojStopien_powiazania ''End If
Kolekcja_stopni_walu.Add(mojStopien) End Sub
Private Sub PokażToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles PokażToolStripMenuItem.Click Call Narysuj()
End Sub
Private Sub SkasujToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles SkasujToolStripMenuItem.Click objRys.Clear(SystemColors.Control)
End Sub
Private Sub Narysuj()
Dim x_stopnia As Single Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single
''Dim walek_tim As Stopien_walu_powiazania Dim wsk_kolekcji As Stopien_walu_parametry
objRys.DrawLine(objPioroOs, X_osi, Y_osi, 600, Y_osi) objRys.DrawLine(objPioroOs, X_osi, X_osi, X_osi, 350) x_pocz = X_osi
''walek_tim = wsk_pocz_walka ''For i = 1 To Liczba_stopni '' x_stopnia = x_pocz
'' y_stopnia = Y_osi - walek_tim.Stopien_walu_odziedziczony.Srednica_stopnia / 2
Zajęcia_01, vbWalek_obj_kolekcja
Copyright ©2015, mgr inż. Jacek Jusis, mgr inż.Janusz Bonarowski 3
'' szerokosc = walek_tim.Stopien_walu_odziedziczony.Dlugosc_stopnia '' wysokosc = walek_tim.Stopien_walu_odziedziczony.Srednica_stopnia
'' objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, wysokosc) '' x_pocz = x_pocz + szerokosc
'' walek_tim = walek_tim.Adres_po ''Next
For Each wsk_kolekcji In Kolekcja_stopni_walu x_stopnia = x_pocz
y_stopnia = Y_osi - wsk_kolekcji.Srednica_stopnia / 2 szerokosc = wsk_kolekcji.Dlugosc_stopnia
wysokosc = wsk_kolekcji.Srednica_stopnia
objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, wysokosc) x_pocz = x_pocz + szerokosc
Next End Sub End Class
Wywołanie diagramu UML
Diagram UML możemy wywołać klikając, w oknie Solution Explorer, na pliku Class1.vb, rys. 1 i z kontekstowego menu wybierając View Class Diagram.
Rysunek 1. Wywołanie diagramu UML
Rysunek 2. Diagram UML