Помогни ни да направим Uroci.net по - богат! Добави урок

Свободна последователност на нишките - Free Threading

bubust   трудност:    видян: 5070



Пример 2 Изчисляване обхвата на превозни средства

'Класът "превозно средство - vehicle class" е базов (или родителски) `клас, който съдържа представянето на общите свойства и методи на `превозното средство (vehicle).

'MustInherit ключовата дума в декларацията означава, че този клас не `може да се създаде директно като обект.

Namespace VehicleDemo

Public MustInherit Class Vehicle

'Променливи членове на свойствата (Property holders).

Private mLitriNaSto As Integer

Private mRezervoar As Integer

Public Property Rezervoar() As Integer

Set(ByVal Value As Integer)

mRezervoar = Value

End Set

Get

Rezervoar = mRezervoar

End Get

End Property

Public Property LitriNaSto() As Integer

Set(ByVal Value As Integer)

mLitriNaSto = Value

End Set

Get

LitriNaSto = mLitriNaSto

End Get

End Property



'Функцията ComputeRange е маркирана като Overridable (достъпна за предефиниране прeнаследяване), което означава, че класове, които наследяват Vehicle class могат да използват (override) изпълнението на тази функция.

Public Overridable Function ComputeRange() As Integer

ComputeRange = mLitriNaSto * mRezervoar

End Function

End Class

End Namespace

`Това е класът Sailboat

Namespace VehicleDemo

Public Class Sailboat

'Наследява клас Vehicle.

Inherits Vehicle

'необходимо е да предефинираме - override функция ComputeRange

`за да направим изчисления за платноходки (sailboats).

'За платноходки - sailboats трябва да утроим изчисления обхват.

'Извикваме функция ComputeRange на MyBase, което е клас Vehicle.

Overrides Function ComputeRange() As Integer

'Това е sailboat така че утрояваме изчисления обхват.

ComputeRange = MyBase.ComputeRange * 3

End Function

End Class

End Namespace

`Това е класът Car

Namespace VehicleDemo

'Класът Car просто наследява (inherits)клас Vehicle.

Public Class Car

Inherits Vehicle



End Class

End Namespace

`Това е класът Boat


Namespace VehicleDemo

Public Class Boat

'Наследява клас Vehicle.

Inherits Vehicle


'Необходимо е да предефинираме (override) функция ComputeRange.

'За лодки (boats) искаме да преизчислим обхвата.

'Ще извикаме функция ComputeRange с MyBase, което е всъщност Vehicle клас.

Overrides Function ComputeRange() As Integer

'Това е лодка - boat така че удвояваме изчисления обхват.

ComputeRange = MyBase.ComputeRange * 2

End Function


End Class


End Namespace

Imports System.ComponentModel

Imports System.Drawing

Imports System.Windows.Forms

Imports VehicleDemoBO.VehicleDemo


Public Class Form1



Inherits System.Windows.Forms.Form


Public Sub New()

MyBase.New()

'This call is required by the Win Form Designer.

InitializeComponent()


'Add any initialization after the InitializeComponent() call.


'Set the default vehicleType to Car.

Me.cboVehicleType.SelectedIndex = 0


End Sub


#Region " Windows Form Designer generated code "


'Required by the Windows Form Designer

Private components As System.ComponentModel.Container

Private WithEvents lblComputedRange As System.Windows.Forms.Label

Private WithEvents chxSailboat As System.Windows.Forms.CheckBox


Private WithEvents lblVehicleType As System.Windows.Forms.Label

Private WithEvents cmdComputeRange As System.Windows.Forms.Button


Private WithEvents cboVehicleType As System.Windows.Forms.ComboBox


Dim WithEvents Form1 As System.Windows.Forms.Form


'NOTE: The following procedure is required by the Windows Form Designer

'It can be modified using the Windows Form Designer.

'Do not modify it using the code editor.

Private WithEvents lblLitriNaSto As System.Windows.Forms.Label

Private WithEvents txtRezervoar As System.Windows.Forms.TextBox

Private WithEvents lblRezervoar As System.Windows.Forms.Label

Private WithEvents txtLitriNaSto As System.Windows.Forms.TextBox

<System.Diagnostics.DebuggerStepThrough()>

Private Sub InitializeComponent()

Me.cmdComputeRange = New System.Windows.Forms.Button

Me.chxSailboat = New System.Windows.Forms.CheckBox

Me.lblLitriNaSto = New System.Windows.Forms.Label

Me.txtRezervoar = New System.Windows.Forms.TextBox

Me.lblComputedRange = New System.Windows.Forms.Label

Me.lblRezervoar = New System.Windows.Forms.Label

Me.lblVehicleType = New System.Windows.Forms.Label

Me.txtLitriNaSto = New System.Windows.Forms.TextBox

Me.cboVehicleType = New System.Windows.Forms.ComboBox

Me.SuspendLayout()


'cmdComputeRange


Me.cmdComputeRange.Location = New System.Drawing.Point(24, 144)

Me.cmdComputeRange.Name = "cmdComputeRange"

Me.cmdComputeRange.Size = New System.Drawing.Size(96, 23)

Me.cmdComputeRange.TabIndex = 15

Me.cmdComputeRange.Text = "Изчисли обхват"

'chxSailboat


Me.chxSailboat.Enabled = False

Me.chxSailboat.Location = New System.Drawing.Point(166, 128)

Me.chxSailboat.Name = "chxSailboat"

Me.chxSailboat.Size = New System.Drawing.Size(98, 24)

Me.chxSailboat.TabIndex = 18

Me.chxSailboat.Text = "Платноходка"

'lblLitriNaSto


Me.lblLitriNaSto.Location = New System.Drawing.Point(16, 64)

Me.lblLitriNaSto.Name = "lblLitriNaSto"

Me.lblLitriNaSto.Size = New System.Drawing.Size(136, 16)

Me.lblLitriNaSto.TabIndex = 11

Me.lblLitriNaSto.Text = "Литри на 100 километра"

'txtRezervoar

Me.txtRezervoar.Location = New System.Drawing.Point(167, 96)

Me.txtRezervoar.Name = "txtRezervoar"

Me.txtRezervoar.TabIndex = 10

Me.txtRezervoar.Text = "13"

'lblComputedRange

Me.lblComputedRange.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))

Me.lblComputedRange.ForeColor = System.Drawing.Color.Red

Me.lblComputedRange.Location = New System.Drawing.Point(8, 176)

Me.lblComputedRange.Name = "lblComputedRange"

Me.lblComputedRange.Size = New System.Drawing.Size(280, 72)

Me.lblComputedRange.TabIndex = 19

Me.lblComputedRange.Text = "Кликнете <Изчисли обхват>, за да видите обхвата на вашето превозно средство"

Me.lblComputedRange.TextAlign = System.Drawing.ContentAlignment.MiddleCenter

'lblRezervoar


Me.lblRezervoar.Location = New System.Drawing.Point(16, 96)

Me.lblRezervoar.Name = "lblRezervoar"

Me.lblRezervoar.Size = New System.Drawing.Size(136, 16)

Me.lblRezervoar.TabIndex = 12

Me.lblRezervoar.Text = "Капацитет на горивото:"

'

'lblVehicleType

'

Me.lblVehicleType.Location = New System.Drawing.Point(16, 24)

Me.lblVehicleType.Name = "lblVehicleType"

Me.lblVehicleType.Size = New System.Drawing.Size(136, 16)

Me.lblVehicleType.TabIndex = 16

Me.lblVehicleType.Text = "Вид превозно средство"

'

'txtLitriNaSto

'

Me.txtLitriNaSto.Location = New System.Drawing.Point(167, 64)

Me.txtLitriNaSto.Name = "txtLitriNaSto"

Me.txtLitriNaSto.TabIndex = 9

Me.txtLitriNaSto.Text = "24"

'

'cboVehicleType

'

Me.cboVehicleType.DropDownStyle= _

System.Windows.Forms.ComboBoxStyle.DropDownList

Me.cboVehicleType.DropDownWidth = 104

Me.cboVehicleType.Items.AddRange(New Object() {"Car", "Boat"})

Me.cboVehicleType.Location = New System.Drawing.Point(167, 24)

Me.cboVehicleType.Name = "cboVehicleType"

Me.cboVehicleType.Size = New System.Drawing.Size(104, 21)

Me.cboVehicleType.TabIndex = 8

'

'Form1

'

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Me.ClientSize = New System.Drawing.Size(290, 255)

Me.Controls.Add(Me.lblComputedRange)

Me.Controls.Add(Me.chxSailboat)

Me.Controls.Add(Me.lblVehicleType)

Me.Controls.Add(Me.cmdComputeRange)

Me.Controls.Add(Me.lblRezervoar)

Me.Controls.Add(Me.lblLitriNaSto)

Me.Controls.Add(Me.txtRezervoar)

Me.Controls.Add(Me.txtLitriNaSto)

Me.Controls.Add(Me.cboVehicleType)

Me.Name = "Form1"

Me.Text = "PrevozDemo"

Me.ResumeLayout(False)

End Sub



'Form overrides dispose to clean up the component list.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub



#End Region



Private Sub cboVehicleType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboVehicleType.SelectedIndexChanged

'Enable/Disable Разрешава/Забранява полето за отметка Sailboat в зависимост от типа превозно средство - VehicleType.

If Me.cboVehicleType.Text = "Boat" Then

Me.chxSailboat.Enabled = True

Else

Me.chxSailboat.Enabled = False

End If

End Sub



Private Sub cmdComputeRange_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdComputeRange.Click

Dim Vehicle As Object

Dim Range As Integer



'Създава обектния тип базиран на избраното превозно средство.

'Имаме късно свързване - late binding на обект objVehicle, така че можем да го създадем по-късно като кола - car или лодка - boat.

If Me.cboVehicleType.Text = "Boat" Then

If Me.chxSailboat.Checked Then

' Това е платноходка - sailboat.

Vehicle = New Sailboat

Else

Vehicle = New Boat

End If

Else

Vehicle = New Car

End If



'Определя свойства Rezervoar и LitriNaSto.

'Повикванията са същите независимо от типа превозно средство

Vehicle.Rezervoar = CInt(Me.txtRezervoar.Text)

Vehicle.LitriNaSto = CInt(Me.txtLitriNaSto.Text)

'Викаме функция ComputeRange. Отбележете, че ще осъществим

`различни изпълнения на този метод в зависимост

` от типа превозно средство.

Range = Vehicle.ComputeRange()



'Извеждане на изчисления обхват.

Me.lblComputedRange.Text = "Обхватът на превозното средство е: " & Range.ToString()



End Sub

End Class


Фигура
63Форма на пример 2


Страници: «1 2

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com