* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Создание компонента DoughnutMachine
8 февраля 2009

Сейчас вы создадите компонент, представляющий аппарат для производ-
ства пончиков. Этот класс создает экземпляры класса Doughnut и управ-
ляет ими, а также открывает доступ к набору объектов, представляющих
разные виды пончиков. У него также будут события, уведомляющие ком-
понент-контейнер о том, что пончик готов.
^ Создание компонента DoughnutMachine
1. В меню Project выберите команду Add Component — откроется окно Add New
Item. Назовите новый компонент DoughnutMachine.vh или DoughnutMachiiie.cs в
соответствии с используемым языком программирования и щелкните ОК — ком-
понент будет открыт в окне дизайнера.
2. На панели Toolbox перейдите на вкладку Windows Forms и дважды щелкните
компонент Timer — этот компонент Timer появится в окне дизайнера.
3. В окне Solution Explorer щелкните правой кнопкой объект DoughnutMachine и
выберите View Code.
4. Добавьте к компоненту DoughnutMachine перечисление, представляющее различ-
ные сорта пончиков. Оно выглядит примерно так:
Visual Basic .NET
Public Enum DoughnutType
Glazed
Sugar
Chocolate
ChocolateCake
Custard
Grape
Lemon
PlainCake
SugarCake
End Enum
Visual C#
public enum DoughnutType
i
Glazed,
Sugar.
Chocolate,
ChocolateCake.
Custard,
Grape,
Lemon,
PlainCake,
SugarCake
5. Добавьте к созданному классу свойство, представляющее сорт пончика, кото-
рый он «печет» в данный момент. Для этого объявите в нем закрытую перемен-
ную для хранения значения этого свойства. Новое свойство класса будет возвра-
щать значение перечислимого типа DoughnutType. Вот код этого свойства:
Visual Basic .NET
Private mFlavor As DoughnutType
Public Property Flavor{) As DoughnutType
Get
Return mFlavor
End Get
Set {ByVal Value As DoughnutType)
mFlavor - Value
End Set
End Property
Visual C#
arivate DoughnutType mFlavor;
public DoughnutType Flavor
get
return mFlavor;
set
6. Объявите внутри класса Doughnut Machine класс Doughnut, который будет пред-
ставлять пончик. У него должны быть свойства flavor (сорт пончика), price (его
цена), а также свойство, доступное только для чтения, — для хранения времени
изготовления пончика. Поскольку единственное место, где разрешается >стано-
вить свойство, доступное только для чтения, — это конструктор, необходимо
написать для класса Doughnut конструктор, записывающий в это свойство теку-
щее время на момент создания экземпляра пончика. Код класса может бить та-
ким:
Visual Basic .NET
Public Class Doughnut
Это переменные для хранения значений свойств.
Private mFlavor As DoughnutType
Цена по умолчанию,
Private mPrice As Single - .50
Private Readonly mTirneOfCreation As Date
Это свойства класса,
Public Property FlavorO As DoughnutType
Get
Returr rnFlavor
End Get
Set(ByVal Value As DoughnutType)
mFlavor - Value
End Set
End Property
Public Property PriceO As Single
Get
Return mPrice
End Get
Sei(ByVal Value As Single)
•TiPrice = Value
End Set
End Property
Public Readonly Property TimeOfCreation() As Date
Get
Return mTirneOfCreation
End Get
End Property
Это конструктор, з котором устанавливается значение
' свойства mTirneOfCreation.
Public Sub New(ByVal Flavor As DoughnutType)
Date.Now - это свойство класса Date,
возвращающее текущее время.
mTirneOfCreation = Date. Now
mFlavor = Flavor
End Sub
End Class
Visual C#
public class Doughnut
{
// Это переменные для хранения значений свойств.
private DoughnutType rnFlavor;
// Цена по умолчанию.
private float mPrice - .50F;
private readonly System. DateTime mTimeOfCreation;
// Это свойства класса,
public DoughnutType Flavor
{
get
{
return mFlavor;
>
set
{
mFlavor == value;
}
}
public float Price
{
get
{
return Price;
}
set
{
mPrice - value;
}
}
public System. DateTime TimeOfCreation
{
get
!
return mTimeOf Creation;
// Это конструктор, а котором устанавливается значение
public Doughnut (DoughnutType Flavor)
{
// System. DateTime. Now - это свойство класса System. DateTime,
// возвращающее текущее время
inTimeOfCreation = System. DateTime. Now;
riFlavor = Flavor;
7. Объявите в классе DoughnutMackine закрытый набор и свойство по умолчанию
(в Visual Basic .NET, в Visual C# его нужно заменить индексатором), открываю-
щее доступ к элементам набора. Созданный набор хранит экземпляры класса
Doughnut, созданные объектом Doughnut Machine, Вот код этого свойства:
Visual Basic .NET
Private rnDoughnuts As New System. Collections. ArrayList()
Public Default Property Doughnuts(Index As Integer) As Doughnut
Get
Return CType(mDoughnuts(Index), Doughnut)
End Get
Set (Value As Doughnut)
TiDoughnuts(Index) = Value
End Set
End Property
Visual C#
orivate System. Collections. ArrayList rnDoughnuts = new
System. Col lections. Ar ray List():
oublic Doughnut this[int Index]
{
get
:
return ( Doughnut )fflDoughnuts[ Index];
}
set
i
mDoughnuts[Index] = value;
8. Добавьте к классу открытое (public) событие. Оно сгенерируется к моменту го-
товности очередного пончика (то есть когда будет создан представляющий его
объект). В Visual C# следует также объявить открытый делегат,
Visual Basic .NET
Public Event DoughnutComplete()
Visual Ctt
public delegate void DoughnutCompleteOelegateO;
public event DoughnutCompleteDelegate DoughnutComplete;
9. При помощи раскрывающегося списка в окне редактора кода (Visual Basic NET)
или кнопки Events в окне дизайнера (Visual C#) добавьте обработчик события
TimerLTick (см. код ниже), который создает новые объекты Doughnut, добавляет
их к набору mDoughnuts и генерирует событие DoughnutComplete.
Visual Basic .NET
Private Sub Tiiner1_Tick(ByVal sender As Object, ByVal e As
System, EventArgs) Handles Ti.mer1.Tick
Din aDoughnut As New Doughnut(Me. Flavor)
rnDoughnuts. Add(aDoughnut)
RaiseEvent DoughnutCompleteO
End Sub
Visual C#
orivate void timer1_Tick(object sender, System. EventArgs e)
10. Создайте два свойства, доступных только для записи: Enabled и Interval с типами
Boolean и Integer соответственно — они потребуются для установки внутренних
свойств таймера. Вот код этих свойств:
Visual Basic .NET
Public WriteQnly Property EnabledC) As Boolean
Set(ByVal Value As Boolean)
Timer! . Enabled = Value
End Set
End Property
Public WriteQnly Property Intervalf) As Integer
Set(ByVal Value As Integer)
Timed .Interval - Value
End Set
End Property
Visual C#
timerl.Enabled - value;
}
}
pjblic int Interval
set
tirrier!. Interval = value;
:
!
11. Добавьте к классу DoughnutMachine метод, настраивающий виртуальный аппа-
рат, чтобы тот «пек» нужный сорт пончиков через заданные интервалы, и вклю-
чающий этот аппарат. Этот метод должен принимать в качестве параметра
объект, представляющий сорт пончика (DoughnutType). Вот этот метод:
Visual Basic .NET
Public Sub MakeDoughnuts(ByVal dFlavor As DoughnutType)
Flavor = dFlavor
Select Case dFlavor
Case DoughnutType.Chocolate
Interval = 15000
Case DoughnutType.ChocolateCake
Interval - 12000
Case DoughnutType.Custard
Interval = 10000
Case DoughnutType.Glazed
Interval = 10000
Case DoughnutType.Grape
Interval = 10000
Case DoughnutType.Lemon
Interval = 10000
Case DoughnutType.PlainCake
Interval = 5000
Case DoughnutType.Sugar
Interval = 8000
Case DoughnutType.SugarCake
Interval = 6000
End Select
Enabled - True
End Sub
Visual C#
public void MakeDoughnuts(DoughnutType dFlavor)
{
Flavor = dFlavor;
switch(dFlavor)
{
case DoughnutType.Chocolate:
Interval = 15000;
break;
case DoughnutType.ChocolateCake:
Interval = 12000;
break;
case DoughnutType.Custard:
Interval = 10000;
break;
case DoughnutType.Glazed:
Interval = 10000;
break;
case DoughnutType.Grape:
Interval = 10000;
break;
case DoughnutType.Lemon:
Interval = 5000;
break;
case DoughnutType.PlainCake:
Interval = 5000;
break;
case DoughnutType.Sugar:
Interval = 8000;
break;
case DoughnutType.SugarCake:
Interval = 6000;
break;
}
Enabled = true;
}

Теги: .NET

Статьи по теме:

Интерфейсы CTS
Оповещение пользователя об ошибках ввода
Обзор ADO.NET
Параметризованные свойства
Обработка и генерация исключений
Отображение сообщений об ошибках
Промежуточный язык
Применение класса XmlDataDocument
Обработка исключений и императивная защита
Формирование запросов SQL во время выполнения
Обзор .NET Framework
Работа с фокусом ввода
События жизненного цикла формы
Создание DataAdapter с помощью окна Server Explorer
Параметры
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Создание компонента DoughnutMachine. Регион сайта: Москва и Санкт-Петербург