Субъектно-ориентированное программирование (англ. subject - oriented programming, SOP; в дальнейшем СОП) — метод построения объектно-ориентированных систем, как композиции субъектов. Однозначный общепринятый перевод термина subject-oriented programming на русский язык на сегодняшний момент не выработан.
В целом СОП включает:
- разбиение системы на субъекты;
- написание правил для их правильной композиции.
СОП дополняет объектно-ориентированное программирование (в дальнейшем ООП), решая проблемы, возникающие при разработке больших систем, при решении задач интеграции и переносимости.
Субъект в СОП — это коллекция классов или фрагментов классов, представляющих свою (субъективную) иерархию классов. Субъектом может быть само приложение, либо часть приложения, объединение которой с другими субъектами даёт приложение целиком. Композиция субъектов комбинирует иерархию классов так, что получаются новые субъекты, включающие функциональность существующих субъектов.
Сравнение с ООП
- Объекту необходимо конкретно указать, какие он должен выполнить методы, чтобы достичь результата.
- Субъекту необходимо конкретно указать какого результата необходимо ему достичь, при этом субъект сам выбирает методы, позволяющие это сделать.