Сложность программного обеспечения

Сложность программного обеспечения представляет неотъемлемое свойство программирования и программ, которое проявляется во времени и стоимости создания программ, в объеме или длине текста программ, характеристиках ее логической структуры, задаваемой операторами передачи управления (ветвления, циклы, вызовы подпрограмм и т.д.).

Можно выделить 5 следующих источников сложности программирования:

решаемая задача;

язык программирования;

среда выполнения программы;

технологический процесс коллективной разработки;

стремление к универсальности и эффективности алгоритмов и типов данных.

От сложности нельзя избавиться, но можно изменить характеристики ее проявления.

ОБЪЕКТНО - ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Сложность программного обеспечения - student2.ru Сложность программного обеспечения - student2.ru

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

Введение типов данных обозначило еще одно направление развития технологии программирования. Типизация данных предназначена для облегчения составления программ и для автоматизации выявления ошибок использования данных в виде фактических параметров при вызове функций.

Результатом обобщения понятия «тип данных» являются классы объектов (С++) или объектные типы Object Pascal ), которые могут содержать в качестве элементов не только данные определенного типа, но и методы их обработки – функции и процедуры.

Классы

Классами называются специальные типы, которые содержат поля, методы и свойства. Конкретный экземпляр класса называется объектом. В основе классов лежат три фундаментальных принципа: инкапсуляция, наследование и полиморфизм.

Инкапсуляция

Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его самодостаточным для решения конкретной задачи. Например, в объектно-ориентированном языке программирования Object Pascal класс TForm содержит все необходимое для создания Windows -окна, класс TMemo представляет собой полнофункциональный текстовый редактор, класс обеспечивает работу программы с таймером и т. д. Инкапсуляция представляет собой мощное средство обмена готовыми к работе программными заготовками.

Наследование

Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса родителя.Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может дополнять их новыми.

Полиморфизм

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

Поля

Полями называются инкапсулированные в классе данные. Поля могут быть любого типа, в том числе – классами. Каждый объект получает уникальный набор полей, но общий для всех объектов данного класса набор методов и свойств. Фундаментальный принцип инкапсуляции требует обращаться к полям только с помощью методов и свойств класса.

Методы

Инкапсулированные в классе процедуры и функции называются методами.

В состав любого класса входят два специальных метода конструктор и деструктор, Конструктор распределяет объект в динамической памяти и помещает адрес этой памяти в специальную переменную, которая автоматически объявляется в классе. Деструктор удаляет объект из динамической памяти.

Свойства

Свойства – это специальный механизм классов, регулирующий доступ к полям. Обычно свойство связано с некоторым полем и указывает те методы класса, которые должны использоваться при записи в это поле или при чтении из него.

Компоненты и события

В визуальных системах программирования каркас программы, во всяком случае – ее видимые на экране внешние проявления: окна, кнопки, списки выбора и т.д. создаются программистом из компонентов. Под компонентом понимается некий функциональный элемент, содержащий определенные свойства и размещаемый программистом в специальном окне (окне формы). Способность программы выполнять полезную работу определяется совокупностью ее реакций на те или иные события. В связи с этим каждый компонент помимо свойств характеризуется также набором событий, на которые он может реагировать. Например, компонент формы «кнопка» может по разному реагировать на однократный щелчек мыши и двойной щелчек мыши.

Лекция 10

Наши рекомендации