Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   > 


Пример «События жизни кота»

Файлы:

  • Объектно-ориентированное программирование
    • События
      • События жизни кота.пфл

Пример программы на языке программирования Перфолента.Net:


/*
Этот пример написан на языке программирования Перфолента.Net
для демонстрации работы с событиями.

Автор: Рогаткин Сергей Анатольевич, 2026.
*/

#ТипСборки КонсольноеПриложение
#ИспользоватьСтандартнуюБиблиотеку

//***************************
Программа СобытияЖизниКота
    //---------------------------
    Процедура Старт
        
        ВыводСтроки "--- НАЧАЛО СМЕНЫ ---"
        
        //запомним время начала программы
        ДатаНачалаОпеки = ТекущаяДата()
        
        //создадим котов
        Васька = Новый Кот("Васька")
        ЭтаПрограмма.Пауза(1500) //разведем события по времени
        Жорик = Новый Кот("Жорик")
        
        //подпишемся на события жизни котов
        ДобавитьОбработчик Васька.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
        ДобавитьОбработчик Васька.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
        ДобавитьОбработчик Жорик.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
        ДобавитьОбработчик Жорик.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
        
        //следим за котами и ухаживаем за ними 30 секунд
        Пока ТекущаяДата()-ДатаНачалаОпеки < 30 Цикл
            Васька.ПроверитьСостояниеКота
            Жорик.ПроверитьСостояниеКота
            
            //притормозим, что бы лишний раз не нагружать процессор
            ЭтаПрограмма.Пауза(100)
        КонецЦикла
        
        //отпишемся от событий жизни котов
        УдалитьОбработчик Васька.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
        УдалитьОбработчик Васька.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
        УдалитьОбработчик Жорик.КотПроголодался, ПолучитьДелегат(,ОбработчикГолодногоКота)
        УдалитьОбработчик Жорик.КотХочетСпать, ПолучитьДелегат(,ОбработчикКотаЖелающегоСпать)
        
        //удаляем котов
        Васька = Неопределено
        Жорик = Неопределено

        ВыводСтроки "СМЕНА ОКОНЧЕНА!!!"
        
        Консоль.Пауза
        
    КонецПроцедуры
    
    //будем использовать одни и те же обработчики событий для разных экземпляров объектов класса Кот
    
    //---------------------------
    Процедура ОбработчикГолодногоКота(ЭтотКот тип Объект)
        //параметр ЭтотКот имеет тип Объект, что приведет к позднему связыванию,
        //при вызове свойств и методов, поэтому приведем объект к типу Кот
        Кот = ТипКТипу(ЭтотКот,"Кот")
        ВыводСтроки "Кот "+Кот.Имя+" голодный!!!"
        Кот.ПокормитьКота
    КонецПроцедуры    
    
    //---------------------------
    Процедура ОбработчикКотаЖелающегоСпать(ЭтотКот тип Объект)
        Кот = ТипКТипу(ЭтотКот,"Кот")
        ВыводСтроки "Кот "+Кот.Имя+" хочет спать!!!" 
        Кот.РазбудитьКота
    КонецПроцедуры   
    
КонецПрограммы    

//***************************
Класс Кот
    //---------------------------
    &ВидноВсем 
    Конструктор(ИмяКота тип Строка) 
        Имя = ИмяКота
        ВремяПоследнегоПитания = ТекущаяДата()
        ВремяПоследнегоСна = ТекущаяДата()
    КонецКонструктора    
    &ВидноВсем 
    Свойство Авто Имя тип Строка 
    &ВидноВсем
    События КотПроголодался, КотХочетСпать тип ОбработчикСобытияБезПараметров
    &ВидноВсем
    Поля ВремяПоследнегоПитания, ВремяПоследнегоСна тип Дата
    //---------------------------
    &ВидноВсем
    Процедура ПокормитьКота
        ВремяПоследнегоПитания = ТекущаяДата()
        ВыводСтроки "Кот "+Имя+" накормлен..."
    КонецПроцедуры    
    //---------------------------
    &ВидноВсем
    Процедура РазбудитьКота
        ВремяПоследнегоСна = ТекущаяДата()
        ВыводСтроки "Кот "+Имя+" разбужен..."
    КонецПроцедуры    
    //---------------------------
    &ВидноВсем
    Процедура ПроверитьСостояниеКота
        //каждые 3 секунды наш кот хочет есть
        Если ТекущаяДата()-ВремяПоследнегоПитания > 3
            ВызватьСобытие КотПроголодался(ЭтотОбъект)
        КонецЕсли
        //каждые 10 секунд наш кот хочет спать
        Если ТекущаяДата()-ВремяПоследнегоСна > 10
            ВызватьСобытие КотХочетСпать(ЭтотОбъект)
        КонецЕсли
    КонецПроцедуры    
КонецКласса





К началу статьи


Вернуться в раздел:
Примеры по языку Перфолента.Net

Перейти в раздел:
Примеры
  Поддержи проект!

Вы можете поддержать разработку Перфоленты, перечислив любую удобную сумму, которая пойдет на развитие языка и поддержку инфраструктуры сайта.

  Новости:
      21.01.2026 На сайт добавлена статья "Конструируем класс. События"
      20.01.2026 Опубликован новый релиз 0.4.18.0_NY языка программирования Перфолента.Net
      29.12.2025 Анонс: Новая возможность - разрабатываем веб-сайты, веб-приложения и веб-API на Перфоленте!
      07.06.2025 Небольшие дополнения к документации на сайте - описание атрибута поля &Атомарное
      09.05.2025 На сайте опубликован релиз 0.4.16.0_SE дистрибутива языка программирования Перфолента.Net
      27.04.2025 Дополнена статья про циклы
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости