Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на 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

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

Делегаты
Сборщик мусора
Towards Cleaner Code II, a C# GUI Invoke/Async Helper
Циклические ссылки
Реализация свойств
Редактор типов файлов
Изменение меню во время выполнения
Создание класса Demo
Рисование простых фигур
Реализация обработчиков событий
Защита приложений
Создание классов
Типы данных .NET Framework
Мемоизация (memoization)
Towards Cleaner Code, A C# Asynchronous Helper
| .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 31


     



Rambler

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

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