Основная идея объектно-ориентированного анализа(ООА) и проектирования: рассмотрение предмет обл-ти и логического реш-я задачи с т. зр. объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется опред-ю и описанию объектов (или понятий) в терминах предмет обл-ти. В процессе объектно-ориентированного проектирования определяются логические программные объекты (включают в себя атрибуты и методы), кот. будут реализованы средствами объектно-ориентированного языка программирования. В процессе объектно-ориентированного программирования(ООП) обеспечивается реализация разработанных компонентов и классов.
Основные принципы объектно-ориентированного анализа и проектирования.
1 Сначала производится анализ требований, во время кот выделяются основные процессы, происходящие в моделируемой сис-ме и их формулировка в виде прецедентов. Прецедент- это текстовое описание процессов, происходящих в предмет обл-ти.
2 ООА предмет обл-ти. Задача: опред-е видов дея-ти участников процесса (и относящиеся к делу понятия) и составление концептуальной модели , кот отражает различ категории эл-тов предмет обл-ти.
3 Объектно-ориентированным проектирование, при кот основное внимание сосредоточено на распределении обязанностей, кот означает выделение задач и обязанностей различ программных объектов в приложении.
Наиб важным моментом ООА и проектирования явл-ся квалифицированное распределение обязанностей между компонентами программной сис-мы. Оно оказывает определяющее влияние на масштабируемость, расширяемость и возможность повторного использования компонентов.
Объектно-ориентированное программирование (ООП) — парадигма(пример, образец) программирования, в кот основными концепциями явл-ся понятия объектов и классов.
Объекты
Основополагающей идеей объектно-ориентированного подхода явл-ся объединение данных и действий, производимых над этими данными, в единое целое, кот наз-ся объектом.
Понятию “объект” сопоставляют ряд дополняющих друг друга определений:
- Объект - это осязаемая реальность, характеризующаяся четко определяемым поведением.
- Объект - особый опознаваемый предмет, блок или сущность (реальная или абстрактная), имеющая важное ф-циональное назначение в данной предмет обл-ти.
Объект м.б. охарактеризован структурой, состоянием объекта, его поведением и индивидуальностью.
Состояние объекта определяется перечнем всех возможных (обычно статических) св-в и текущими знач-ями динамич) кажд из этих св-в. Св-ва объекта хар-ются знач-ями его параметров.
Поведение объекта описывает, как объект воздействует на др объекты или как он подвергается воздействию со стороны др объектов с т. зр. изменения его собственного состояния и состояния др объектов. Поведение объекта определяется его действиями.
Определенное воздействие одного объекта на др с целью вызвать соответствующую реакцию наз-ют операцией. В объектно-ориентированных языках программирования операции наз-ют методами. М. выделить 5 типов операций:
- конструктор, создание и инициализация объекта;
- деструктор, разрушающий объект;
- модификатор, изменяющий состояние объекта;
- селектор для доступа к переменным объекта без их изменения;
- итератор для доступа к содержанию объекта по частям в опред послед-ти.
Сущ-ет и др классификация методов объекта:в ней выделяют ф-ции управления, реализации, доступа и вспомог ф-ции.
Классы
Объекты явл-ся экземплярами классов.
Класс - своего рода форма, определяющая, какие данные и ф-ции будут включены в объект класса. Др словами, класс описывает состав объекта – переменные и ф-ции (методы), кот обрабатывают переменные и тем самым определяют поведение объекта.
Данные и методы разбиваются по уровням доступа, напр-р, выделяются уровни доступа public, protected и private.
У класса 2 различные роли: модуля и типа данных.
1 Класс - это модуль, архитектурная единица построения программной сис-мы. В ООП программная сис-ма, строящаяся по модульному принципу, состоит из классов, являющихся основным видом модуля. Размер и содерж-е модуля определяется архитектурными соображениями.
2 Класс - это тип данных, задающий реализацию некотор абстракции данных, характерной для задачи, в интересах кот создается программная сис-ма (объекты-экземпляры класса представляют собою упрощенное, идеализированное описание реальных сущностей предмет обл-ти).
Поля класса явл-ся обычными переменными (объектами) языка. Их описание удовлетворяет обычным правилам объявления переменных. Содержательно поля задают представление той самой абстракции данных, кот реализует класс. Поля хар-ют св-ва объектов класса.
Методы класса явл-ся обычными процедурами и ф-циями языка. Их описание удовлетворяет обычным правилам объявления процедур и ф-ций. Содержательно методы определяют ту самую абстракцию данных, кот реализует класс. Методы содержат описания операций, доступных над объектами класса. 2 объекта одного класса имеют один и тот же набор методов.
Основные принципы ООП
Абстракция данных
Возможность создавать абстрактные типы данных, позволяющая наряду с предопределенными типами данных вводить свои собственные типы данных (классы) и объявлять «переменные» таких типов данных (объекты). Создавая свои собственные типы данных, программист оперирует не машинными терминами (переменная, ф-ция), а объектами реального мира, поднимаясь тем самым на новый абстрактный уровень.
Инкапсуляция
Инкапсуляция — принцип, согласно кот любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых св-в и методов класса) и не вникать в его внутр реализацию. Поэтому данные принято инкапсулировать в классе так, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Сокрытие данных
Сокрытие данных — неотделимая часть ООП, управляющая обл-тями видимости. Явл-ся логическим продолжением инкапсуляции. Цель сокрытия: невозможность для пользователя узнать или испортить внутреннее состояние объекта.
Наследование
Наследование- возможность порождать 1 класс от др с сохранением всех св-в и методов класса-предка (прародителя, суперкласса) и добавляя, при необходимости, новые св-ва и методы. Набор классов, связанных отнош-ем наследования, наз-ют иерархией. Наследование призвано отобразить такое св-во реального мира, как иерархичность.
Полиморфизм
Полиморфизм –явл-е, при кот ф-ции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зав-ти от того, объект какого класса использ-ся при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязат сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм наз-ся динамич (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.