23 (ч1). Понятие объектно-ориентированного анализа. Классы и объекты. Основные отношения между классами и объектами.

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

Основные принципы объектно-ориентированного анализа и проектирования.

1 Сначала производится анализ требований, во время кот выделяются основные процессы, происходящие в моделируемой сис-ме и их формулировка в виде прецедентов. Прецедент- это текстовое описание процессов, происходящих в предмет обл-ти.

2 ООА предмет обл-ти. Задача: опред-е видов дея-ти участников процесса (и относящиеся к делу понятия) и составление концептуальной модели , кот отражает различ категории эл-тов предмет обл-ти.

3 Объектно-ориентированным проектирование, при кот основное внимание сосредоточено на распределении обязанностей, кот означает выделение задач и обязанностей различ программных объектов в приложении.

Наиб важным моментом ООА и проектирования явл-ся квалифицированное распределение обязанностей между компонентами программной сис-мы. Оно оказывает определяющее влияние на масштабируемость, расширяемость и возможность повторного использования компонентов.

Объектно-ориентированное программирование (ООП) — парадигма(пример, образец) программирования, в кот основными концепциями явл-ся понятия объектов и классов.

Объекты

Основополагающей идеей объектно-ориентированного подхода явл-ся объединение данных и действий, производимых над этими данными, в единое целое, кот наз-ся объектом.

Понятию “объект” сопоставляют ряд дополняющих друг друга определений:

- Объект - это осязаемая реальность, характеризующаяся четко определяемым поведением.

- Объект - особый опознаваемый предмет, блок или сущность (реальная или абстрактная), имеющая важное ф-циональное назначение в данной предмет обл-ти.

Объект м.б. охарактеризован структурой, состоянием объекта, его поведением и индивидуальностью.

Состояние объекта определяется перечнем всех возможных (обычно статических) св-в и текущими знач-ями динамич) кажд из этих св-в. Св-ва объекта хар-ются знач-ями его параметров.

Поведение объекта описывает, как объект воздействует на др объекты или как он подвергается воздействию со стороны др объектов с т. зр. изменения его собственного состояния и состояния др объектов. Поведение объекта определяется его действиями.

Определенное воздействие одного объекта на др с целью вызвать соответствующую реакцию наз-ют операцией. В объектно-ориентированных языках программирования операции наз-ют методами. М. выделить 5 типов операций:

- конструктор, создание и инициализация объекта;

- деструктор, разрушающий объект;

- модификатор, изменяющий состояние объекта;

- селектор для доступа к переменным объекта без их изменения;

- итератор для доступа к содержанию объекта по частям в опред послед-ти.

Сущ-ет и др классификация методов объекта:в ней выделяют ф-ции управления, реализации, доступа и вспомог ф-ции.

Классы

Объекты явл-ся экземплярами классов.

Класс - своего рода форма, определяющая, какие данные и ф-ции будут включены в объект класса. Др словами, класс описывает состав объекта – переменные и ф-ции (методы), кот обрабатывают переменные и тем самым определяют поведение объекта.

Данные и методы разбиваются по уровням доступа, напр-р, выделяются уровни доступа public, protected и private.

У класса 2 различные роли: модуля и типа данных.

1 Класс - это модуль, архитектурная единица построения программной сис-мы. В ООП программная сис-ма, строящаяся по модульному принципу, состоит из классов, являющихся основным видом модуля. Размер и содерж-е модуля определяется архитектурными соображениями.

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

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

Методы класса явл-ся обычными процедурами и ф-циями языка. Их описание удовлетворяет обычным правилам объявления процедур и ф-ций. Содержательно методы определяют ту самую абстракцию данных, кот реализует класс. Методы содержат описания операций, доступных над объектами класса. 2 объекта одного класса имеют один и тот же набор методов.

Основные принципы ООП

Абстракция данных

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

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

Инкапсуляция — принцип, согласно кот любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых св-в и методов класса) и не вникать в его внутр реализацию. Поэтому данные принято инкапсулировать в классе так, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.

Сокрытие данных

Сокрытие данных — неотделимая часть ООП, управляющая обл-тями видимости. Явл-ся логическим продолжением инкапсуляции. Цель сокрытия: невозможность для пользователя узнать или испортить внутреннее состояние объекта.

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

Наследование- возможность порождать 1 класс от др с сохранением всех св-в и методов класса-предка (прародителя, суперкласса) и добавляя, при необходимости, новые св-ва и методы. Набор классов, связанных отнош-ем наследования, наз-ют иерархией. Наследование призвано отобразить такое св-во реального мира, как иерархичность.

Полиморфизм

Полиморфизм –явл-е, при кот ф-ции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зав-ти от того, объект какого класса использ-ся при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязат сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм наз-ся динамич (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.