* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Реализация метода RemoveStale
8 февраля 2009
Создание метода RemoveStale 1. В классе DoughnutMachine объявите структуру, которая способна представлять группу любого размера, включающую любые виды пончиков. Вот пример реа- лизации такой структуры:
Visual Basic .NET Public Structure DoughnutGroup Public RaisedGlazed As Integer Public RaisedSugar As Integer Public RaisedChocolate As Integer Public CakePlain As Integer Public CakeChocolate As Integer Public CakeSugar As Integer Public FilledLemon As Integer Public FilledGrape As Integer Public FilledCustard As Integer End Structure Visual C# public struct DoughnutGroup { public int RaisedGlazed; public int RaisedSugar; public int RaisedChocolate; public int CakePlain; public int CakeChocolate; public int CakeSugar; public int FilledLemon; public int FilledGrape; public int FilledCustard; } 2. Определите в классе DoughnutMachine метоп, проверяющий «срок годности» всех пончиков в наборе. Пончики, пролежавшие на складе слишком долго, следует удалить из набора. Этот метод должен возвращать экземпляр структуры DoughnutGroup, уведомляющий о количестве и видах удаленных пончиков. Visual Basic .NET Public Function RemoveStaleO As DoughnutGroup Dim myGroup As New DoughnutGroupO Dim Counter As Integer Dim UpperBound As Integer UpperBound = mDoughnuts.Count - 1 Dim myTimeSpan As TimeSpan For Counter - 0 To UpperBound myTimeSpan = Now.Subtract(inDoughnuts(UpperBound - Counter).TimeOfCreation) If myTimeSpan.TotalMinutes >= 10 Ther Select Case mDoughnutsdlpperBound - Counter).Flavor Case DoughnutType.Chocolate myGroup.RaisedChocolate += 1 Case DoughnutType.ChocolateCake myGroup.CakeChocolate += 1 Case DoughnutType.Custard myGroup.FilledCustard +- 1 Case DoughnutType.Glazed myGroup.RaisedGlazed += 1 Case DoughnutType.Grape myGroup.FilledGrape += 1 Case DoughnutType.Lemon myGroup. FilledLernon += 1 Case DoughnutType.PlainCake myGroup.CakePlain += 1 Case DoughnutType.Sugar myGroup.RaisedSugar += 1 Case DoughnutType.SugarCake myGroup,CakeSugar += 1 End Select m.Doughnuts.RemoveAt(UpperBound - Counter) End If Next Return myGroup End Function Visual C# public DoughnutGroup RemoveStaleO DoughnutGroup myGroup = new DoughnutGroupC); int UpperBound; UpperBound = mDoughnuts.Count - 1; TirneSpan myTimeSpan; for(int Counter = 0; Counter <= UpperBound; Counter++) myTimeSpan - System.DateTime.Now.Subtract(mDoughnutstUpperBound - Counter].TimeOfCreation); if(myTimeSpan.TotalMinutes >= 10) switch(mDoughnuts[l)pperBound - Counter]. Flavor) I case DoughnutType.Chocolate: myGroup.RaisedChocolate ++; break; case DoughnutType.ChocolateCake: myGroup.CakeChocolate ++; break; case DoughnutType. Custard: myGroup. FilledCustard ++; break; case DoughnutType. Glazed: myGroup. RaisedGlazed ++; break; case DoughnutType. Grape: myGroup. FilledGrape ++; break; case DoughnutType. Lemon: myGroup. FilledLemon ++; break; case DoughnutType. PlainCake: myGroup. CakePlain ++; break; case DoughnutType. Sugar: myGroup. RaisedSugar ++; break; case DoughnutType. SugarCake: myGroup. CakeSugar ++; break; } mDoughnuts. RemoveAt(UpperBound - Counter); 3. Добавьте к форме frmMain обработчик события Click элемента тпи Remove Stale, который при удалении пончиков будет вызывать метод RemoveState объекта Doughnut Machine и обновлять соответствующие элементы управления пользова- тельского интерфейса. Вот пример кода этого метода: Visual Basic .NET Private Sub mnuRemoveStale_Click(6yVal sender As System. Object, ByVal e As System. EventArgs) Handles mnuRemoveStale. Click Dim aDoughnutGroup As DoughnutMachine.DoughnutGroup aDoughnutGroup = myDoughnutMachine.RerrioveStale() mRaisedGlazed = mflaisedGlazed - aDoughnutGroup. RaisedGlazed rnRaiseaSugar - mRaisedSugar - aDoughnutGroup. RaisedSugar mRaisedCnocolate = rnRaisedChocolate - aDoughnutGroup. RaisedChocolate mCakePlain = mCakePlain - aDoughnutGroup. CakePlain nCakeChocolate = mCakeChocolate - aDoughnutGroup. CakeChocolate mCakeSugar = mCakeSugar - aDoughnutGroup. CakeSugar iiFilledLemon = mFilledLemon - aDoughnutGroup. FilledLemon mFilledGrape = mFilledGrape - aDoughnutGroup.FilledGrape rriFilledCustard - mFilledCustard - aDoughnutGroup. FilledCustard txtGlazedRaised.Text = mRaisedGlazed.ToString txtSugarRaised.Text = mRaisedSugar.ToString txtchocolateRaised.Text = rnRaisedChocolate.ToString txtcustardFilled.Text = mFilledCustard.ToString txtGrapeFilled.Text = mFilledGrape.ToString txtLemonFilled.Text = mFilledLemon.ToString txtChocolateCake.Text = niCakeChocolate.ToString txtPlainCake.Text = mCakePlain.ToString txtSugarCake.Text = mCakeSugar.ToString End Sim Visual C# private void mnuRemoveStale_Click(ob3ect sender, System.EventArgs e) { DoughnutMachine.DoughnutGroup aDoughnutGroup; aDoughnutGroup = myDoughnutMachine.RemoveStale(); mRaisedGlazed = mRaisedGlazed - aDoughnutGroup.RaisedGlazed; mRaisedSugar - mRaisedSugar - aDoughnutGroup.RaisedSugar; mRaisedChocolate ~ tnRaisedChocolate - aDoughnutGroup.RaisedChocolate; mCakePlain = mCakePlain - aDoughnutGroup.CakePlain; rnCakeChocolate = mCakeChocolate - aDoughnutGroup.CakeChocolate; mCakeSugar = mCakeSugar - aDoughnutGroup.CakeSugar; rnFilledLemon - m Filled Lemon - aDoughnutGroup. FilledLemon; mFilledGrape = mFilledGrape - aDoughnutGroup.FilledGrape; mFilledCustard = mFilledCustard - aDoughnutGroup.FilledCustard; txtGlazedRaised.Text - mRaisedGlazed.ToStringO; txtSugarRaised.Text = mRaisedSugar.ToStringO; txtchocolateRaised.Text = mRaisedCnocolate. ToStringO; txtcustardFilled.Text = mFilledCustard.ToStringO; txtGrapeFilled-Text - mFilledGrape.ToStringO; txtLemonFilled.Text - mFilledLemon.ToStringO; txtChocolateCake.Text = mCakeChocolate.ToStringO; txtPlainCake.Text = mCakePlain.ToStringO; txtSugarCake.Text = mCakeSugar.ToStringO; } 4. Сохраните проект и протестируйте его.