Выбери формат для чтения
Загружаем конспект в формате docx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Тема лекции: «Использование объектно-ориентированного подхода при разработке приложений»
Развитие современного информационного общества предъявляет значительные требования к автоматизированным системам, которые становятся реальным активом, неотъемлемой частью и залогом нормального функционирования и работы организаций. Процесс разработки и внедрения автоматизированных информационных систем становится все более сложной задачей, что связано как с применением современных способов разработки, так и необходимостью соблюдения требований по защите информации.
1. История развития технологий разработки программ
Технологии программирования включают совокупность методик и средств разработки (написания) программ и порядка использования данных методов и средств.
На ранних стадиях развития технологий разработки программ, когда их разработка проводилась в виде последовательно записанных машинных команд, отсутствовали специализированные технологии программирования.
Первые элементы технологии разработки программ были связаны с представлением кода через последовательность операторов. Написанию программного кода в форме последовательности команд предшествовала разработка алгоритма в форме блок-схемы, в которая отражалась последовательность использования операторов и описывались переходы между ними. Использование операторного подхода позволило проводить разработку первых программ для автоматизации разработки ПО.
С ростом сложности программных кодов программ получил распространение подход, связанный с разделением программ на обособленные элементы с оформлением их в форме подпрограмм. Некоторые из типовых подпрограмм, выполняющих стандартные операции, объединялась в библиотеки, модули которых можно было вызывать из рабочих программ и далее использовать для проведения вычислений.
Принцип использования библиотек при разработке программ используется в процедурном программировании, согласно которому разработка программ проводится через комбинацию множества библиотек.
Дальнейшее развитие технологий программирования было связано с принципами структурного программирования, в соответствии с которыми программы в целом и отдельные процедуры рассматриваются как последовательность канонических элементов, включающих линейные участки, циклы и разветвления. Появились возможности чтения и проверки программ как последовательного текста, что позволило ускорить процесс разработки приложений программистами. С целью повышения уровня структурированности программы выдвигались требования к большему уровню независимости подпрограмм, которые связываются с вызывающими их программами только через передачу им аргументов. Использование в подпрограммах переменных, которые принадлежат другим процедурам или главной программе, стало неэффективным.
Принципы процедурного и структурного программирования затронули прежде всего процессы, связанные с описанием алгоритмов в форме последовательности команд, которые посредством проводимых вычислений приводят к необходимому результату. Для решения специальных задач были разработаны языки программирования, которые ориентировались на определенный класс задач: например, СУБД, задачи имитационного моделирования, поддержки принятия решений и др.
При проведении разработки трансляторов больший приоритет отдавался процессу обнаружения ошибок в исходных кодах программ, что обеспечивало сокращение временных затрат на отладку программ.
Применение программ в самых разных областях человеческой деятельности привело к необходимости повышения надежности всего программного обеспечения. Одним из направлений совершенствования языков программирования стало повышения уровня типизации данных. Теория типов данных исходит из того, что каждое используемое в программе данное принадлежит одному и только одному типу данных. Тип данного определяет множество возможных значений данного и набор операций, допустимых над этим данным. Данное конкретного типа в ряде случаев может быть преобразовано в данное другого типа, но такое преобразование должно быть явно представлено в программе. В зависимости от степени выполнения перечисленных требований можно говорить об уровне типизации того или иного языка программирования. Стремление повысить уровень типизации языка программирования привело к появлению языка Паскаль, который считается строго типизированным языком, хотя и в нем разрешены некоторые неявные преобразования типов, например, целого в вещественное. Применение строго типизированного языка при написании программы позволяет еще при трансляции исходного текста выявить многие ошибки использования данных и этим повысить надежность программы. Вместе с тем строгая типизация сковывала свободу программиста, затрудняла применение некоторых приемов преобразования данных, часто используемых в системном программировании. Практически одновременно с Паскалем был разработан язык Си, в большей степени ориентированный на системное программирование и относящийся к слабо типизированным языкам.
Все универсальные языки программирования, несмотря на различия в синтаксисе и используемых ключевых словах, реализуют одни и те же канонические структуры: операторы присваивания, циклы и разветвления. Во всех современных языках присутствуют предопределенные (базовые) типы данных (целые и вещественные арифметические типы, символьный и, возможно, строковый тип), имеется возможность использования агрегатов данных, в том числе массивов и структур (записей). Для арифметических данных разрешены обычные арифметические операции, для агрегатов данных обычно предусмотрена только операция присваивания и возможность обращения к элементам агрегата. Вместе с тем при разработке программы для решения конкретной прикладной задачи желательна возможно большая концептуальная близость текста программы к описанию задачи. Например, если решение задачи требует выполнения операций над комплексными числами или квадратными матрицами, желательно, чтобы в программе явно присутствовали операторы сложения, вычитания, умножения и деления данных типа комплексного числа, сложения, вычитания, умножения и обращения данных типа квадратной матрицы. Решение этой проблемы возможно несколькими путями:
- Построением языка программирования, содержащего как можно больше типов данных, и выбором для каждого класса задач некоторого подмножества этого языка. Такой язык иногда называют языком-оболочкой. На роль языка-оболочки претендовал язык ПЛ/1, оказавшийся настолько сложным, что так и не удалось построить его формализованное описание. Отсутствие формализованного описания, однако, не помешало широкому применению ПЛ/1 как в Западной Европе, так и в СССР.
- Построением расширяемого языка, содержащего небольшое ядро и допускающего расширение, дополняющее язык типами данных и операторами, отражающими концептуальную сущность конкретного класса задач. Такой язык называют языком-ядром. Как язык-ядро были разработаны языки Симула и Алгол-68, не получившие широкого распространения, но оказавшие большое влияние на разработку других языков программирования.
Дальнейшим развитием второго пути явился объектно-ориентированный подход к программированию, рассматриваемый в следующем параграфе.
2 Принципы объектно-ориентированного подхода при разработке программного обеспечения
Основное отличие структурного и объектно-ориентированного подхода связано со способом декомпозиции системы. При использовании объектно-ориентированного подхода применяется объектная декомпозиция, описание статической структуры системы проводится в терминологии объектов и связей между ними, а описание поведения системы проводится с использованием терминологии обмена информацией между объектами. Каждому объекту системы свойственно собственное поведение, моделирующее поведение объекта реального мира. Термин "объект" первоначально был использован в 1990г. в технической документации, когда делались попытки модернизации традиционных подходов фон Неймана и преодоления барьера разработками высокого и низкого уровней абстрагирования.
Объектный подход использовался в языках программирования Simula, Smalltalk, C++, Object Pascal. Данный подход предполагает использование моделей данных типа «Сущность - Связь».
Концептуальная основа объектно-ориентированного подхода включает следующие элементы [7]:
• алгоритмы абстрагирования (abstraction);
• алгоритмы инкапсуляции (encapsulation);
• принципы модульности (modularity);
• принципы иерархичности (hierarchy).
Помимо основных применяются также дополнительные элементы разработки программ, не являющиеся в отличие от основных строго обязательными [4]:
• принципы типизации (typing);
• принципы параллелизма (concurrency);
• принципы устойчивости (persistence).
Принципы абстрагирования связаны с выделением основных характеристик объекта предметной области, отличающих его от всех других типов объектов, что позволяет четко определять его концептуальные границы относительно дальнейшего рассмотрения и анализа. С помощью абстрагирования выделяется основные свойства объекта предметной области, что позволяет выделять самые существенные особенности его поведения от особенностей их реализации. Выбор правильного набора абстракций для моделируемой предметной области является главной задачей при объектно-ориентированном проектировании [8].
Инкапсуляция – процесс, связанный с отделением друг от друга отдельных составляющих объекта, которые определяют его устройство и принципы поведения. Инкапсуляция используется для изоляции интерфейса объекта, отражающего особенности его внешнего поведения, способов внутренней реализации объекта. При использовании объектного подхода предполагается, что собственные ресурсы, которые используются только методами самого класса, являются скрытыми от внешней среды. При абстрагировании и инкапсуляции используются взаимодополняющие операции: при абстрагировании фокусируется внимание на внешних свойствах объекта, при инкапсуляции (или, иначе, ограничении доступа) устанавливаются ограничения для объектов-пользователей на различие внутреннего устройства объекта.
1.2.1 Объектно-ориентированный подход
Модульность – это свойство систем, которое предполагает возможности их декомпозиции на ряд внутренних составляющих, не имеющих связей между собой модулей. Посредством инкапсуляции и модульности проводится создание барьеров между абстракциями.
Иерархия представляет собой ранжированную или упорядоченную систему абстракций, с расположением их по уровням в соответствии с заданными принципами. Основные виды иерархических структур для сложных систем включают структуру классов (классификация по номенклатуре) и структуру объектов (классификация по составу). В качестве примеров иерархии классов можно рассматривать задачи простого и множественного наследования (в которых в одном классе используется структурная или функциональная части соответственно одного или нескольких других классов). Примерами иерархии объектов являются задачи агрегации.
Типизация представляет собой совокупность ограничений, накладываемых на класс объектов и препятствующих взаимозаменяемости разных классов (либо значительно сужающих их возможности). С помощью типизации возможно реализовать защиту от использования объектов одного класса вместо другого, либо создать возможности управления таким использованием.
Параллелизм – свойство объектов, связанное с нахождением в активном либо пассивном состоянии, связанное с различением активных и пассивных объектов между собой.
Устойчивость – свойство объекта, связанное с существованием во времени (независимо от процесса, который создал данный объект) и/или в пространстве (в случае перемещения объектов из адресного пространства, где он создавался).
Основные понятия объектно-ориентированного подхода - объект и класс
Основой объектно-ориентированного подхода является систематическое использование моделей для проведения языково-независимой разработки программ на основе прагматичного подхода.
Прагматичный подход связан с целями разработки программного обеспечения, соответствующих специфике моделируемой предметной области. В процессе постановки задач разработки ПО задействована терминология реального мира, имеющая отношение к разрабатываемому программному обеспечению (рисунок 1). При использовании принципов объектно-ориентированного подхода проводится замена данных предметов и терминов на их модели, т.е. определенные формальные конструкции, представляющие их в программной системе.
Рисунок 1 – Схема принципов ООП
Семантика – включает описание смысла программы с позиции ее исполнения компьютером.
Прагматика - смысл работы программы с позиции работы пользователей.
В модели включаются не все признаки и свойства представляемых ею предметов (понятий), а только являющиеся существенными для разрабатываемого программного продукта. Таким образом, модель представляет собой упрощенное представление объекта.
При этом модель представляет собой формальную конструкцию, что позволяет установить формальные зависимости между объектами и проводить формальные операции над ними. Это позволяет упростить как процесс разработки и изучения (анализа) моделей, так и их провести их реализацию на языках программирования. В частности, формальность моделей позволяет получать формальные модели разрабатываемых программных продуктов в форме композиции формальных моделей ее составляющих.
Основными задачами использования объектно-ориентированного подхода к разработке программного обеспечения являются [8]:
◦ сокращение уровня сложности кодов при разработке программного обеспечения;
◦ повышение уровня надежности разработанного программного обеспечения;
◦ возможность модификации отдельных модулей ПО без внесения изменений в остальные его компоненты;
◦ обеспечение возможности многократного использования отдельных модулей ПО.
При систематическом использовании объектно-ориентированного подхода возможно проведение разработки достаточно структурированных, надежных в эксплуатации, легко модифицируемых программных систем. Этим объясняется распространенность указанного подхода среди программистов.
Существуют следующие аспекты объектно-ориентированного подхода [12]:
• разработка ПО с использованием ООП;
• реализация ПО с использованием ООП.
В ООП объект рассматривается в качестве осязаемой реальности (tangible entity) – предмета или явления, имеющего четко определяемую модель поведения. Для объекта характерны характеристики состояния, поведения и индивидуальности; в структуре и поведении схожих объектов определяется общий для них класс. Понятия "экземпляр класса" и "объект'' являются эквивалентными. Описание состояния объекта осуществляется через перечень всех возможных (статических) характеристик данного объекта и текущих значений (динамических) по каждому из указанных свойств. Поведение характеризуется спецификой воздействия объекта на другие объекты и, наоборот - при относительном изменении состояния данных объектов и передаче сообщений. Таким образом, особенности поведения объекта полностью охарактеризуются его действиями.
Индивидуальность – это свойства объекта, посредством которых возможно нахождение отличий его от всех иных объектов.
Определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию называется операцией. Как правило, в объектных и объектно-ориентированных языках операции, выполняемые над данным объектом, называются методами и являются составной частью определения класса. Класс – это множество объектов, связанных общностью структуры и поведения. Любой объект является экземпляром класса. Определение классов и объектов – одна из самых сложных задач объектно-ориентированного проектирования.
Следующая группа терминов объектного подхода включает наследование и полиморфизм. Термин полиморфизма может интерпретироваться как способность класса к принадлежности более чем к одному типу. Наследование предполагает возможности построения новых классов на базе существующих с возможностями добавления или изменения свойств данных и методов.
Построение объектно-ориентированных систем изначально проводится с учетом их эволюции. С помощью наследования и полиморфизма обеспечиваются возможности определения новых функций через реализацию производных классов, являющихся потомками базовых. В классах-потомках наследуются параметры родительских классов без модификации их первоначального описания с добавлением в случае необходимости собственных структур данных и методов. При определении производных классов, в которых определяется перечень различий или уточнений, в значительной степени сокращается время при разработке и спецификациях в программном коде.
Важное свойство объектного подхода связано с обеспечением согласованности моделей деятельности компаний и моделей проектируемых систем от этапа формирования требований до этапа реализации. Выполнение требований согласованности моделей обеспечивается благодаря возможностям использования таких методов, как абстрагирование, модульность, полиморфизм на всех этапах работы с программным кодом. Модели ранних этапов могут быть непосредственно подвергаться сравнению с моделями реализации. По объектным моделям может прослеживаться отображение реальных сущностей в модели предметных областей (организации) в объекты и классы информационной системы.
Заключение
В раках данного лекционного занятия проведен анализ принципов разработки программного обеспечения с использованием ООП.
Аналитическая часть включает описание комплекса принципов разработки программ в контексте их эволюции. Принципы ООП рассмотрены как наиболее современные в технологиях моделирования предметных областей и создания программных продуктов.
Далее проведен анализ средств разработки и СУБД, средств программной реализации систем. Показано, что в настоящее время существует большое количество инструментов, позволяющих проводить разработку на основе объектно-ориентированного подхода.
Подводя итог анализа проекта, можно сказать, что поставленная цель создания информационной системы оценки финансовой устойчивости достигнута.
Список использованных источников
1. Иванова Л. Н. Объектно-ориентированный подход в разработке приложений: учебное пособие / Л. Н. Иванова. - Новосибирск: Сибирский институт управления - филиал РАНХиГС, 2016. – 197с.
2. Базаров Т. Ю. Основы программирования: учебник / Т.Ю. Базаров. - 15-е изд., стер. - Москва : Академия, 2018. – 314с.
3. Мелихова Н. В. Объектно-ориентированное программирование: учебное пособие / Н. В. Мелихова. - Челябинск : Издательство Челябинского государственного университета, 2014. - 214 с.