Персональная страница Федора Езеева
Главная
Download
Ссылки
MS SQL
Обмен данными
Новости
Статьи
О себе
Крупные разделы...
Коллективная разработка
1С++, OOP, XP
FuncTest
FAQ
Структура 1cv7.md

ООП. Что такое инкапсуляция?

Часто, при работе с компонентой "Бухгалтерский учет", в конфигурациях встречается конструкция

Сч60_1 = СчетПоКоду("60.1")
Все бы ничего, но ровно до того момента, когда не меняется план счетов. Это происходит не так часто, но на моем веку такое счастье произошло :). И одно из изменений в новом плане счетов - смена кода у счета для учета реализации с 46 на 90. Пересматривать всю конфигурацию на предмет кода 46 для замены на 90 не очень хочется. Даже несмотря на возможности глобального поиска текста в конфигурации - задача не из самых благодарных. Объектный подход предлагает решение для таких проблем, и имя этому решению - инкапсуляция.

Суть счета не поменялась от смены его кода: он так и остался счетом для учета реализации. При грамотном использовании объектов - программист создаст объект "ПланСчетов", в котором будут определены методы СчетУчетаВыручки(), СчетУчетаТоваров(), СчетАвансовПоставщикам() и тому подобные. Для лучшего понимания ниже приведена реализация этих методов для нового ПС

Функция СчетРеализации() Экспорт
	Возврат СчетПоКоду("90.1");
КонецФункции
Функция СчетУчетаТоваров() Экспорт
	Возврат СчетПоКоду("41.1");
КонецФункции
Функция СчетАвансовПоставщикам() Экспорт
	Возврат СчетПоКоду("60.2");
КонецФункции
Таким образом мы отделяем суть происходящего от деталей реализации. В тот момент, когда наша выручка начинает разделятся на облагаемую и необлагаемую ЕНВД - мы меняет код одного метода:
Функция СчетРеализации() Экспорт
	Возврат СчетПоКоду("90.1.1");
КонецФункции
и добавляем еще один:
Функция СчетРеализацииЕНВД() Экспорт
	Возврат СчетПоКоду("90.1.2");
КонецФункции

Подобное скрытие параметров (в нашем случае - коды счетов) за интерфейсами (методами с человеческими именами) и называется инкапсуляцией.

Rambler's Top100 1C:TOP-100

© 1998-2004 Fedor Ezeev.

Last updated: 2005-09-05