Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике все.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
986.62 Кб
Скачать

Алгоритмическая и объектная декомпозиция

Известно, что при проектировании сложной системы ее необходимо представить совокупностью небольших подсистем, каждая из которых может разрабатываться независимо от других. Всякое систематическое решение задачи, какой бы сложной или простой она не была, основано на принципе разбиения на уровни абстракции. Мы привыкли связывать такое разбиение с алгоритмической декомпозицией, в ходе которой осуществляется структурное проектирование по методу "сверху-вниз" и алгоритм задачи разбивается на отдельные модули. Каждый модуль системы реализует один из алгоритмов общей задачи. Принципы алгоритмической декомпозиции поддерживаются языком Турбо-Паскаль, являющимся хорошим инструментом структурного программирования. Наряду с декомпозицией по алгоритмам существует декомпозиция по объектам или объектно-ориентированная декомпозиция, когда в качестве критерия выбирается принадлежность элементов к различным абстракциям, т.е. идентифицируются объекты различного типа. Иллюстрацией объекта может служить запись, список полей которой объединяет не только данные, но также методы обработки этих данных. Турбо-Паскаль позволяет представить задачу как совокупность взаимодействующих объектов.

Какую декомпозицию использовать при разработке сложной системы?

Г. Буч в [1] считает: "... и по алгоритмам, и по объектам". Опыт показывает, что сначала полезнее применить объектно-ориентированный подход, который позволит лучше понять структуру программной системы. Кроме того существует возможность использовать общие методы для различных объектов и, следовательно, создавать системы меньшего размера. Алгоритмическая декомпозиция проиллюстрирует связи между различными функциональными элементами системы. Объектно-ориентированное программирование (ООП) определяется как методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса. Можно построить новые объекты, наследующие свойства (данные и методы их обработки) предшественника, т.е. создать иерархию объектов. Кроме того один и тот же метод (процедура или функция) может быть использован различными объектами, связанными наследованием. Это свойство объектов называют полиморфизмом. Таким образом объектно-ориентированное программирование базируется на трех основных понятиях:

- объединение данных и методов в объекте, - наследование, - полиморфизм.

Многие специалисты считают, что объектно-ориентированное программирование, появившееся в начале 80-х годов, будет занимать такое же место, которое занимало структурное программирование в 1970-х годах, поскольку при разработке сложных программ возможно расширять область их применения, не переделывая программу, а добавляя в нее новые уровни иерархии. Не все языки программирования являются объектно-ориентированными. Известны три условия принадлежности языка к группе объектно-ориентированных языков:

- имеется поддержка объектов в виде абстракций данных. - объекты относятся к соответствующим типам (классам). - типы (классы) могут наследовать атрибуты от ранее определенных типов (классов) – родителей; под атрибутами понимают структуру данных и их поведение, т.е. методы обработки.

Впервые понятия классов и объектов были введены в языке Simula 67. В дальнейшем идеи ООП нашли реализацию в следующих языках: Smalltalk, Object Pascal, C++, CLOS, Ada. Остановимся на новых возможностях языка Турбо-Паскаль, появившихся впервые в версии 5.5, в которую был введен новый тип - объект. Ограничимся изложением средств реализации основных концепций объектно-ориентированного подхода и проиллюстрируем его конкретной программой.