Пример «События жизни кота»
Файлы:
- Объектно-ориентированное программирование
- События
- События жизни кота.пфл
- События
Пример программы на языке программирования Перфолента.Net:
/*
Этот пример написан на языке программирования Перфолента.Net
для демонстрации работы с событиями.
Автор: Рогаткин Сергей Анатольевич, 2026.
*/
#ТипСборки КонсольноеПриложение
#ИспользоватьСтандартнуюБиблиотеку
//***************************
Программа СобытияЖизниКота
//---------------------------
Процедура Старт
ВыводСтроки "--- НАЧАЛО СМЕНЫ ---"
//запомним время начала программы
ДатаНачалаОпеки = ТекущаяДата()
//создадим котов
Васька = Новый Кот("Васька")
ЭтаПрограмма.Пауза(1500) //разведем события по времени
Жорик = Новый Кот("Жорик")
//подпишемся на события жизни котов
ДобавитьОбработчик Васька.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
ДобавитьОбработчик Васька.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
ДобавитьОбработчик Жорик.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
ДобавитьОбработчик Жорик.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
//следим за котами и ухаживаем за ними 30 секунд
Пока ТекущаяДата()-ДатаНачалаОпеки < 30 Цикл
Васька.ПроверитьСостояниеКота
Жорик.ПроверитьСостояниеКота
//притормозим, что бы лишний раз не нагружать процессор
ЭтаПрограмма.Пауза(100)
КонецЦикла
//отпишемся от событий жизни котов
УдалитьОбработчик Васька.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
УдалитьОбработчик Васька.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
УдалитьОбработчик Жорик.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
УдалитьОбработчик Жорик.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
//удаляем котов
Васька = Неопределено
Жорик = Неопределено
ВыводСтроки "СМЕНА ОКОНЧЕНА!!!"
Консоль.Пауза
КонецПроцедуры
//будем использовать одни и те же обработчики событий для разных экземпляров объектов класса Кот
//---------------------------
Процедура ОбработчикГолодногоКота(ЭтотКот тип Объект)
//параметр ЭтотКот имеет тип Объект, что приведет к позднему связыванию,
//при вызове свойств и методов, поэтому приведем объект к типу Кот
Кот = ТипКТипу(ЭтотКот,"Кот")
ВыводСтроки "Кот "+Кот.Имя+" голодный!!!"
Кот.ПокормитьКота
КонецПроцедуры
//---------------------------
Процедура ОбработчикКотаЖелающегоСпать(ЭтотКот тип Объект)
Кот = ТипКТипу(ЭтотКот,"Кот")
ВыводСтроки "Кот "+Кот.Имя+" хочет спать!!!"
Кот.РазбудитьКота
КонецПроцедуры
КонецПрограммы
//***************************
Класс Кот
//---------------------------
&ВидноВсем
Конструктор(ИмяКота тип Строка)
Имя = ИмяКота
ВремяПоследнегоПитания = ТекущаяДата()
ВремяПоследнегоСна = ТекущаяДата()
КонецКонструктора
&ВидноВсем
Свойство Авто Имя тип Строка
&ВидноВсем
События КотПроголодался, КотХочетСпать тип ОбработчикСобытияБезПараметров
&ВидноВсем
Поля ВремяПоследнегоПитания, ВремяПоследнегоСна тип Дата
//---------------------------
&ВидноВсем
Процедура ПокормитьКота
ВремяПоследнегоПитания = ТекущаяДата()
ВыводСтроки "Кот "+Имя+" накормлен..."
КонецПроцедуры
//---------------------------
&ВидноВсем
Процедура РазбудитьКота
ВремяПоследнегоСна = ТекущаяДата()
ВыводСтроки "Кот "+Имя+" разбужен..."
КонецПроцедуры
//---------------------------
&ВидноВсем
Процедура ПроверитьСостояниеКота
//каждые 3 секунды наш кот хочет есть
Если ТекущаяДата()-ВремяПоследнегоПитания > 3
ВызватьСобытие КотПроголодался(ЭтотОбъект)
КонецЕсли
//каждые 10 секунд наш кот хочет спать
Если ТекущаяДата()-ВремяПоследнегоСна > 10
ВызватьСобытие КотХочетСпать(ЭтотОбъект)
КонецЕсли
КонецПроцедуры
КонецКласса
К началу статьи
Вернуться в раздел:
Примеры по языку Перфолента.Net
Перейти в раздел:
Примеры