Алгоритмическая и объектная декомпозиции Классы и объекты
Принципиально можно выделить 2 вида разбиения предметной области на составляющие элементы:
- Алгоритмическая декомпозиция (основные элементы программы - строительные блоки - алгоритмы).
- Объектная декомпозиция (основные элементы программы - виды абстракций (классы) и представители этих классов (объекты)).
В соответствии с алгоритмической декомпозицией предметной области мы при анализе задачи пытаемся понять, какие алгоритмы необходимо разработать для ее решения, каковы спецификации этих алгоритмов (вход, выход), и как эти алгоритмы связаны друг с другом. В языках программирования данный подход в полной мере поддерживается средствами модульного программирования (библиотеки, модули, подпрограммы).
В рамках объектной декомпозиции мы пытаемся выделить основные содержательные элементы задачи, разбить их на типы (классы). Далее для каждого класса абстракций мы определяем его свойства (данные) и поведение (операции), а также, как эти классы абстракций взаимодействуют друг с другом.
На сегодняшний день объектный подход и его основы - объектная модель и объектная декомпозиция - поддерживаются современными объектно-ориентированными языками программирования (Object Pascal, C++, Java, C#…).