VB.Net/Class/Property — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:42, 26 мая 2010
Содержание
Class Property Get and Set
Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Dim time As New CTime3()
" invoke time6 methods
time.Second = (time.Second + 1)
time.Minute = (time.Minute + 1)
time.Hour = (time.Hour + 1)
Console.WriteLine( "Hour: " & time.Hour & "; Minute: " & _
time.Minute & "; Second: " & time.Second )
End Sub
End Class
" Represents time in 24-hour format and contains properties.
Class CTime3
Inherits Object
" declare Integers for hour, minute and second
Private mHour As Integer
Private mMinute As Integer
Private mSecond As Integer
" CTime3 constructor: initialize each instance variable to zero
" and ensure that each CTime3 object starts in consistent state
Public Sub New()
SetTime(0, 0, 0)
End Sub " New
" CTime3 constructor:
" hour supplied, minute and second defaulted to 0
Public Sub New(ByVal hourValue As Integer)
SetTime(hourValue, 0, 0)
End Sub " New
" CTime3 constructor:
" hour and minute supplied; second defaulted to 0
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer)
SetTime(hourValue, minuteValue, 0)
End Sub " New
" CTime3 constructor: hour, minute and second supplied
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer, ByVal secondValue As Integer)
SetTime(hourValue, minuteValue, secondValue)
End Sub " New
" CTime3 constructor: another CTime3 object supplied
Public Sub New(ByVal timeValue As CTime3)
SetTime(timeValue.mHour, timeValue.mMinute, _
timeValue.mSecond)
End Sub " New
" set new time value using universal time;
" uses properties to perform validity checks on data
Public Sub SetTime(ByVal hourValue As Integer, _
ByVal minuteValue As Integer, ByVal secondValue As Integer)
Hour = hourValue " looks
Minute = minuteValue " dangerous
Second = secondValue " but it is correct
End Sub " SetTime
" property Hour
Public Property Hour() As Integer
" return mHour value
Get
Return mHour
End Get
" set mHour value
Set(ByVal value As Integer)
If (value >= 0 AndAlso value < 24) Then
mHour = value
Else
mHour = 0
End If
End Set
End Property " Hour
" property Minute
Public Property Minute() As Integer
" return mMinute value
Get
Return mMinute
End Get
" set mMinute value
Set(ByVal value As Integer)
If (value >= 0 AndAlso value < 60) Then
mMinute = value
Else
mMinute = 0
End If
End Set
End Property " Minute
" property Second
Public Property Second() As Integer
" return mSecond value
Get
Return mSecond
End Get
" set mSecond value
Set(ByVal value As Integer)
If (value >= 0 AndAlso value < 60) Then
mSecond = value
Else
mSecond = 0
End If
End Set
End Property " Second
End Class
Compare int property
Imports System.Collections.Generic
Public Class Car
Public PetName As String = String.Empty
Public Color As String = String.Empty
Public Speed As Integer
Public Make As String = String.Empty
Public Overloads Overrides Function ToString() As String
Return String.Format("Make={0}, Color={1}, Speed={2}, PetName={3}", _
Make, Color, Speed, PetName)
End Function
End Class
Module Program
Sub Main()
Dim myCars As New List(Of Car)(New Car() { _
New Car With {.PetName = "D", .Color = "Silver", .Speed = 100, .Make = "BMW"}, _
New Car With {.PetName = "C", .Color = "Tan", .Speed = 90, .Make = "BMW"}, _
New Car With {.PetName = "B", .Color = "Rust", .Speed = 5, .Make = "Yugo"}, _
New Car With {.PetName = "A", .Color = "White", .Speed = 43, .Make = "Ford"}})
Dim fastCars = From c In myCars Where c.Speed > 55 Select c
For Each car In fastCars
Console.WriteLine(car.PetName)
Next
End Sub
End Module
Declare Protected Properties
Imports System
Imports System.Collections
Imports System.Data
Imports System.IO
Imports System.Xml.Serialization
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Text
Imports System.Drawing.Printing
Public Class MainClass
Shared Sub Main()
Dim e As New Programmer("Joe", 15)
e.RaiseSalary(0.1D)
"Console.WriteLine(e.TheName & " salary is now " & e.Salary())
" Compile Error
End Sub
End Class
Public Class Employee
Private m_Name As String
Private m_Salary As Decimal
Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
m_Name = theName
m_Salary = curSalary
End Sub
Public ReadOnly Property TheName() As String
Get
Return m_Name
End Get
End Property
Protected ReadOnly Property Salary() As Decimal
Get
Return MyClass.m_Salary
End Get
End Property
Public Overridable Overloads Sub RaiseSalary(ByVal Percent As Decimal)
m_Salary = (1 + Percent) * m_Salary
End Sub
End Class
Public Class Programmer
Inherits Employee
Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
MyBase.New(theName, curSalary)
End Sub
Public Overloads Overrides Sub RaiseSalary(ByVal Percent As Decimal)
MyBase.RaiseSalary(1.2D * Percent)
End Sub
End Class
Define and use Class: Property
Imports System
Imports System.Collections
Imports System.ruponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.Configuration
Imports System.Resources
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Drawing.Printing
Public Class MainClass
Shared Sub Main()
Dim objCar As New Car
"Set the Color property to Red
objCar.Color = "Red"
"Show what the value of the property is
Console.WriteLine("My car is this color:")
Console.WriteLine(objCar.Color)
"Report the speed
Console.WriteLine("The car"s speed is:")
Console.WriteLine(objCar.Speed)
"Accelerate
objCar.Accelerate(5)
"Report the new speed
Console.WriteLine("The car"s speed is now:")
Console.WriteLine(objCar.Speed)
"Report the number of doors
Console.WriteLine("The number of doors is:")
Console.WriteLine(objCar.NumberOfDoors)
"Try changing the number of doors to 1000
objCar.NumberOfDoors = 1000
"Report the number of doors
Console.WriteLine("The number of doors is:")
Console.WriteLine(objCar.NumberOfDoors)
"Now try changing the number of doors to 2
objCar.NumberOfDoors = 2
"Report the number of doors
Console.WriteLine("The number of doors is:")
Console.WriteLine(objCar.NumberOfDoors)
"Accelerate the car to 25mph
objCar.Accelerate(25)
"Report whether or not the car is moving
If objCar.IsMoving = True Then
Console.WriteLine("The car is moving.")
Else
Console.WriteLine("The car is stopped.")
End If
End Sub
End Class
Public Class Car
Implements IDisposable
Public Color As String
Public HorsePower As Integer
Private _speed As Integer
Private _numberOfDoors As Integer
Public ReadOnly Property Speed() As Integer
Get
Return _speed
End Get
End Property
Public Sub Accelerate(ByVal accelerateBy As Integer)
"Adjust the speed
_speed += accelerateBy
End Sub
Public Property NumberOfDoors() As Integer
Get
Return _numberOfDoors
End Get
Set(ByVal value As Integer)
"Is the new value between two and five
If value >= 2 And value <= 5 Then
_numberOfDoors = value
End If
End Set
End Property
Public Function IsMoving() As Boolean
"Is the car"s speed zero?
If Speed = 0 Then
Return False
Else
Return True
End If
End Function
"Constructor
Public Sub New()
"Set the default values
Color = "White"
_speed = 0
_numberOfDoors = 5
End Sub
Public Overridable Function CalculateAccelerationRate() As Double
Return 4.2
End Function
Private disposed As Boolean = False
" IDisposable
Private Overloads Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposed Then
If disposing Then
" TODO: put code to dispose managed resources
End If
" TODO: put code to free unmanaged resources here
End If
Me.disposed = True
End Sub
#Region " IDisposable Support "
" This code added by Visual Basic to correctly implement the disposable pattern.
Public Overloads Sub Dispose() Implements IDisposable.Dispose
" Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
" Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(False)
MyBase.Finalize()
End Sub
#End Region
End Class
Get and set Properties
Imports System.IO
Module Module1
Sub Main()
Dim Palm As New Book("Book 1", "Author 1")
Dim Upgrading As New Book("Book 2", "Author 2")
Palm.Price = 49.99
Palm.Pages = 2000
Upgrading.Price = 119.99
Upgrading.Pages = 600
Console.WriteLine(Upgrading.Pages)
End Sub
End Module
Class Book
Public Title As String
Public Author As String
Private BookPrice As Double
Private BookPages As Integer
Public Property Price() As Double
Get
Return BookPrice
End Get
Set(ByVal Value As Double)
If (Value >= 0) And (Value <= 100) Then
BookPrice = Value
Else
Console.WriteLine("Invalid price for " & Title)
BookPrice = 0
End If
End Set
End Property
Public Property Pages() As Integer
Get
Return BookPages
End Get
Set(ByVal Value As Integer)
If (Value >= 0) And (Value <= 1500) Then
BookPages = Value
Else
Console.WriteLine("Invalid page count for " & Title)
BookPages = 0
End If
End Set
End Property
Public Sub New(ByVal Title As String, ByVal Author As String)
Me.Title = Title
Me.Author = Author
End Sub
End Class
Property Shadow during Inheritance
Imports System
Imports System.Diagnostics
Public Class MainClass
Shared Sub Main()
Dim mgr As New Manager
mgr.LastName = "Manager Last Name"
mgr.EmployeeId = 1
Dim emp As Employee = CType(mgr, Employee)
emp.LastName = "Employee Last Name"
emp.EmployeeId = 2
Dim per As Person = CType(mgr, Person)
per.LastName = "Person Last Name"
per.EmployeeId = "A"
Console.WriteLine(mgr.EmployeeId & ": " & mgr.LastName)
Console.WriteLine(emp.EmployeeId & ": " & emp.LastName)
Console.WriteLine(per.EmployeeId & ": " & per.LastName)
End Sub
End Class
Public Class Person
Public LastName As String
Public EmployeeId As String
End Class
Public Class Employee
Inherits Person
Public Shadows EmployeeId As Long
End Class
Public Class Manager
Inherits Employee
Public Shadows LastName As String
End Class
Imports System
Public Class MainClass
Shared Sub Main()
Dim e As New Employee("Joe", 100000)
Console.WriteLine(e.TheName & " is employee# " & e.EmployeeId & " with salary " & e.Salary())
Dim Sally As New Employee("Sally", 150000)
Console.WriteLine(Sally.TheName & " is employee# " & _
Sally.EmployeeId & " with salary " & Sally.Salary())
Console.WriteLine("Please press the Enter key")
End Sub
End Class
Public Class Employee
Private m_Name As String
Private m_Salary As Decimal
Private Shared m_EmployeeID As Integer = 10000
Private m_MyID As Integer
Public Sub New(ByVal thesName As String, ByVal curSalary As Decimal)
m_Name = thesName
m_Salary = curSalary
m_EmployeeID = m_EmployeeID + 1
m_MyID = m_EmployeeID
End Sub
ReadOnly Property EmployeeId() As Integer
Get
Return m_MyID
End Get
End Property
ReadOnly Property TheName() As String
Get
TheName = m_Name
End Get
End Property
ReadOnly Property Salary() As Decimal
Get
Salary = m_Salary
End Get
End Property
End Class