Показать сообщение отдельно
Старый 19.12.2010, 11:00   #25  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от kuntashov Посмотреть сообщение
Как часто приходится применять на практике наследование и полиморфизм? Приведете примеры?
Ээээ для АХ (в частности) без этого также нельзя жить, как в 1С без написания хоть каких-нибудь процедур/функций
Цитата:
Полиморфи́змязыках программирования) — возможность объектов с одинаковой спецификацией иметь различную реализацию.
...
Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода.
Полиморфизм, как и наследование - позволяет чаще повторно использовать уже написанный код.
Цитата:
Насле́дование — позволяет описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
Пример. В АХ журналы документов делятся на журналы складских документов и журналы финансовых документов. В свою очередь - журналы складских (равно как и финансовых документов делятся по типу документа. Для склада - это приход / списание / спецификация / инвентаризация и т.д. Для финансов - это клиентские / поставщиковые платежи, журналы для операций с ОСами и т.д.

У всех журналов есть общие свойства. Ну, к примеру, все журналы имеют по фильтр журналов Все/Открыто/Разнесено, который по умолчанию устанавливается в Открыто. Соответственно - этот код лежит в самом родительском классе.
Для финансовых журналов есть "валютные поля" - валюта, курс и т.д. Функционал, обслуживающий эти поля - может быть вынесен в класс, управляющий всеми финансовыми журналами.
Для складских журналов есть складская аналитика - соответственно обслуживание этих полей - также находится в классе, управляющем всеми складскими журналами.
Ну и дальше - у каждого документа естественно есть свои нюансы, которые реализуются индивидуальным наследником.

Другой пример. Работа с Excel. Для разных версий Excel (конкретно для 2000, XP и 2007) есть свои классы-наследники, про которых программист может и не знать, однако вызывает он методы общего родительского класса, а там уже на уровне конструирования класса - система сама, в зависимости от версии инициализирует нужного наследника. Без этого было бы неприятно узнать, что код, который работал в 2003-м офисе перестал работать в 2007-м (к примеру).

Конечно - никто не говорит, что без этого нельзя обойтись. Всегда можно создать большой метод (процедуру в 1С) и внутри нее делать кучу if нв предмет - версии, на предмет типа журналов и т.д. Но речь-то идет и максимальном использовании уже написанного кода и (как следствие) уменьшение количества кода в котором нужно разбираться. Собственно для этого и нужны ООП-принципы
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 19.12.2010 в 11:06.
За это сообщение автора поблагодарили: driller (2).