Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

РЕАЛИЗАЦИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА В ТУРБО-ПАСКАЛЕ

При разработке больших программных систем возникают трудности, связанные с четырьмя основными причинами: "... сложностью проблемы, сложностью управления процессом разработки, сложностью обеспечения гибкости конечного программного продукта и сложностью описания поведения отдельных подсистем." [1]. Г. Буч предлагает пять признаков сложной системы:

1. Сложная система состоит, как правило, из взаимосвязанных подсистем, т.е. имеет иерархическую структуру.
2. Выбор низшего уровня иерархии достаточно произволен.
3. Связи внутри структуры обычно сильнее связей между структурами.
4. Иерархические системы состоят из нескольких подсистем разного типа, реализованных в различном порядке и в разнообразных комбинациях.
5. Работающая сложная система неизбежно оказывается результатом развития работающей простой системы, а сложные объекты становятся элементами низших уровней абстракции.

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

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

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

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

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

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

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

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

 

 

<== предыдущая лекция | следующая лекция ==>
 | Объектный тип в Турбо-Паскале
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 3760; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.