Файл: Основные понятия объектно-ориентированного программирования (Главные понятия и разновидности).pdf
Добавлен: 02.04.2023
Просмотров: 559
Скачиваний: 5
Введение
Ещё совсем недавно, никто и подумать не мог, что наступит то время, когда компьютер будет решать столько задач, что станет важной частью жизни человека, и будет приносить пользу в огромных количествах. Но сам по себе компьютер ничто. Для того что бы он был полезен, нужно поставить перед ним задачу, и что немаловажно сделать это нужно правильно. В этом нам помогают различные способы по проектированию программного обеспечения (ПО). В начале 70-х гг. 20 века был отмечен кризис программирования (software crisis). Выражалось тем, что масштабные проекты стали выполнятся с существенными задержками или с перерасходом средств на разработку. При этом достаточно большое количество программ не обладали требуемыми функциональными возможностями, в следствие чего их качество не устраивало потребителей. Это стимулировало проведение ведущими зарубежными аналитиками множества аналитических исследований, но результаты их были не слишком обнадеживающие. В заданный срок на тот момент были завершены только 16% проектов. Из остальных проектов примерно 53% сданы заказчику с существенным опозданием или разработчике превысили запланированные расходы. Чаще всего причинами неудач являлись нечеткая или неполная формулировка требований к ПО, неудовлетворительное планирование, недостаточное вовлечение пользователей в работу над проектом и т.п. Исходя из этого потребовался существенно новый подход к проектированию ПО. Этим подходом стал объектно–ориентированный, который в короткие сроки завоевал огромную популярность. Объектно-ориентрованный подход полностью устраняет те недостатки, с которыми ранее столкнулись разработчики ПО. Вот почему, целью курсовой работы является раскрытие современных методов и средств проектирования, в частности в объектно-ориентированном подходе к проектированию ПО.
Глава 1. Основные понятия объектно-ориентированного подхода
Объектно-ориентированный подход основан на систематическом использовании моделей для языково-независимой разработки программной системы, на основе из ее прагматики.
Последний термин нуждается в пояснении. Прагматика определяется целью разработки программной системы: для обслуживания клиентов банка, для управления работой аэропорта, для обслуживания чемпионата мира по футболу и т.п. В формулировке цели участвуют предметы и понятия реального мира, имеющие отношение к разрабатываемой программной системе (см. рисунок 1.1). При объектно-ориентированном подходе эти предметы и понятия заменяются их моделями, т.е. определенными формальными конструкциями, представляющими их в программной системе.
Рис. 1.1. Семантика (смысл программы с точки зрения выполняющего ее компьютера) и прагматика (смысл программы с точки зрения ее пользователей)
Модель содержит не все признаки и свойства представляемого ею предмета (понятия), а только те, которые существенны для разрабатываемой программной системы. Тем самым модель "беднее", а, следовательно, проще представляемого ею предмета (понятия). Но главное даже не в этом, а в том, что модель есть формальная конструкция: формальный характер моделей позволяет определить формальные зависимости между ними и формальные операции над ними. Это упрощает как разработку и изучение (анализ) моделей, так и их реализацию на компьютере. В частности, формальный характер моделей позволяет получить формальную модель разрабатываемой программной системы как композицию формальных моделей ее компонентов.
Таким образом, объектно-ориентированный подход помогает справиться с такими сложными проблемами, как
уменьшение сложности программного обеспечения;
повышение надежности программного обеспечения;
обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования. Объектно-ориентированный подход является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
Цель данного курса лекций - введение в объектно-ориентированный подход к разработке и реализации прикладных программных систем. Я попытаюсь убедить вас в целесообразности и плодотворности систематического применения объектно-ориентированного подхода на всех этапах жизненного цикла прикладной программной системы (см. рисунок 1.2), начиная с анализа требований к программной системе и ее предварительного проектирования, и кончая ее реализацией, тестированием и последующим сопровождением.
Рис. 1.2. Жизненный цикл программной системы
Объектно-ориентированный подход имеет два аспекта:
объектно-ориентированная разработка программного обеспечения;
объектно-ориентированная реализация программного обеспечения.
1.1 Главные понятия и разновидности
Структура данных «класс», представляющая собой объектный тип данных, внешне похожа на типы данных процедурно-ориентированных языков, такие как структура в языке Си или запись в Паскале или QuickBasic. При этом элементы такой структуры (члены класса) могут сами быть не только данными, но и методами (то есть процедурами или функциями). Такое объединение называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.
Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм.
Язык Self, соблюдая многие исходные положения объектно-ориентированного программирования, ввёл альтернативное классам понятие прототипа, положив начало прототипному программированию, считающемуся подвидом объектного. В таблице 1.1 представлены основные понятия
Таблица 1.1 — Основные понятия в ООП
|
Понятие |
Определение |
|
|
Абстракция |
Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик. |
|
|
Инкапсуляция |
Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя. |
|
|
Наследование |
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом. |
|
|
Полиморфизм |
Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. |
Глава 2: Структура объектно-ориентированного подхода
Структурный подход к разработке является классическим и предполагает последовательную реализацию следующих этапов разработки:
· анализа предметной области,
· проектирования,
· создания программных модулей,
· объединения модулей в единую систему,
· тестирования,
· внедрения.
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые, в свою очередь, делятся на подфункции, подразделяемые на задачи и т. д. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны.
Однако эта технология не лишена некоторых недостатков. В соответствии с классическим подходом основное внимание должно уделяться информации, с которой работает система. Разработчик спрашивает пользователей, какая информация им нужна, проектирует БД для хранения этой информации, создает экранные формы для ее вывода, встраивает возможность распечатывать отчеты. Иначе говоря, разработчик «фокусируется» на самой информации, а тому, что с ней делать, т. е. поведению системы уделяется меньше внимания. Такой подход называется «ориентированным на данные (data centric)», он применялся при разработке тысяч различных систем много лет. Он неоценим при проектировании БД и систем обработки информации, но при разработке бизнес-приложений возникают проблемы, главная из которых состоит в том, что требования к системе могут меняться со временем. Система, ориентированная на данные легко приспосабливается к изменениям БД, однако изменить деловые правила или поведение такой системы значительно труднее.
Это обусловлено тем, что на основе информации о структуре БД генерируется клиентское приложение. Поскольку БД должна быть обязательно нормализована, данные хранятся в таблицах БД не всегда в той же форме, в которой они должны появляться на экранных формах. Другими словами, если код приложения генерируется не на основе описания предметной области, невозможно построить эффективное приложение со сложной бизнес-логикой.
Вторым недостатком структурного подхода является большая вероятность обнаружения ошибок на последнем этапе разработки, например этапе тестирования. В случае обнаружения ошибки необходимо вернуться на тот этап, где она допущена, и заново пройти все последующие этапы.
Для решения этой проблемы и были созданы объектно-ориентированныеметоды разработки ИС, при применении которых внимание уделяется как информации, так и поведению, что позволяет создавать гибкие системы, допускающие изменение их поведения и/или содержащейся в них информации. Эти методы основаны на использовании объектно-ориентированного программирования(ООП).
Объектно-ориентированное программирование– это новая методология, созданная во второй половине 1980-х гг. Она позволяет решить проблему появления новых акцентов в программировании, обусловленных распространением персональных компьютеров в мелком и среднем бизнесе, в котором вычислительные и расчетно-алгоритмические задачи уступили первое место задачам обработки и манипулирования данными. ООП предполагает представление программы как набора взаимодействующих объектов,наделенных определенным поведением и реакцией на изменение внешних условий. В то время как классический процедурно-ориентированный стиль программирования направлен на представление программы в виде множества поочередно вызываемых процедур.
Объектно-ориентированные методы разработки основаны на объектно-ориентированной концепции или, как часто говорят, парадигме. Парадигма – теория (или модель, тип постановки проблемы), принятая в качестве образца решения исследовательских задач. Объектно-ориентированная парадигма – способ описания приложений, при котором приложение предварительно делится на множество маленьких кусочков или объектов относительно независимых друг от друга. Готовое приложение можно затем создать, сложив эти объекты вместе. Преимуществом такого решения является возможность разработки компонентов только один раз с последующим многократным их использованием для создания абсолютно различных по назначению систем.
Снижение риска в объектно-ориентированной технологии достигается за счет реализации технологии итерационной разработки, когда используется спиральная модель жизненного цикла разработки. Разработка состоит из ряда этапов (итераций), которые в дальнейшем приводят к созданию информационной системы. Каждая итерация может приводить к созданию фрагмента или новой версии и включает все необходимые этапы: этапы выработки требований, анализа, проектирования, реализации и тестирования. Поскольку тестирование проводится на каждой итерации, риск снижается уже на начальных этапах жизненного цикла.