logo search
шпоры по ООП

61.Функциональное замыкание при разработке приложений.

Идея функционального замыкания заключается в реализации кода типа.

Инициализация

Выполнение

Деинициализация

Данный тип встречается часто особенно. Например, открыть записать закрыть файл. Или открыть контекст устройства вывести в контекст закрыть. Данный тип кода встречается на каждом шагу. Мы постоянно отрываем потом используем а потом. вот в последних действиях может и быть ошибка. Забыть закрыть что то это нормально. Для программиста, а для системы болезненно. Нужный метод это использовать конструктор и деструктор класса. В конструкторе мы открываем, а в деструкторе закрываем. Например, как можно из хотя из этой идеи создать класс для доступа к COM порту на основе функций API. Слабое место в работе с портом, что после его открытия и использования нужно его закрыть, обязательно. Итак, создаем конструктор с параметрами. Никакого конструктора по умолчанию не будет. При разрушении класса пройдет закрытие указателя. Это может произойти при выходе за область видимости например из функции в которой он объявлен или при удалении динамического объекта.

class CComPort {

public:

CComPort(LPCTSTR PortName,DWORD dwDesiredAccess,DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile);

virtual ~CComPort();

private:

HANDLE ComPort; };

Замыкания в функциональных языках интересны тем, что позволяют

а) создавать много экземпляров одинаковых функций, которые

б) сохраняют состояние между вызовами.