Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_лекции.docx
Скачиваний:
1
Добавлен:
16.11.2019
Размер:
27.2 Кб
Скачать

Литература

  1. Гради Буч «Объектно-ориентированный анализ и проектирование (с примерами на с++)»

  2. Подбельский

  3. Троелсен (с#), Шилдт(c++), Лафоре

  4. Страуструп (основатель С++)

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

Разработка объектно-ориентированной программы включает в себя следующее этапы:

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

  2. Объектно-ориентированное проектирование предполагает разработку статической и динамической модели предметной области. Статическая модель отражает отношение между отдельными объектами, а динамическая – взаимодействие объектов.

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

На втором этапе разработки объектно-ориентированных программ при построении модели требуется для каждого объекта выделить существенные для него в рамках конкретной свойства и поведения. Этот процесс называется абстрагированием.

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

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

Класс описывается следующей конструкцией в С++

ключ_класса имя_класса

{список_компонентов};

Список компонентов- определение и описание типизированных данных и функций, принадлежащих к классу:

Описание класса - описание типа

Память при определении объекта (переменной) выделяется только под определение данные.

Определение объекта:

Имя_класса имя_объекта

Обращаться к компонентом класса можно следующим образом:

Имя объекта.имя_компонента

Имя_объекта.имя класса::имя_компонента

Если объект определен динамически, то есть используется указатель на объект, то обращение к компонентам имеет следующий вид:

Указатель_на. объект->имя_компонента.

Функции в описании класса могут быть представлены на уровне описания (прототип функции) или на уровне определения (программный код функции записывается непосредственно в теле класса). В первом случае определение компонентной функции выполняется вне класса с использованием следующего синтаксиса:

тип имя_класса::имя_компонентной_функции(список_формальных_параметров)

{операторы;}

При описании класса не допускается инициализация отдельных данных определенных в классе в силу того, что память под класс не выделяется. Для инициализации компонентных данных используется специальная функция конструктор, которая определяется следующим образом:

имя_класса (список_параметров)

Имя конструктора всегда совпадает с именем класса. Конструктор не имеет типа возвращаемого результата. Конструктор может быть определен в теле класса или вне его. Конструктор всегда присутствует в классе, даже если он не определен программистом, то конструктор автоматически генерируется компилятором. Автоматически сгенерированный конструктор инициализирует компонентные данные нулевыми значениями, параметров он не имеет. Конструкторы можно перегружать, т.е. один класс может иметь несколько конструкторов, но один конструктор может иметь параметры со значением по умолчанию. Конструктор нельзя вызвать как обычную компонентную функцию, вызывается конструктор при создании объекта:

имя_класса имя_объекта (фактические_параметры_конструктора);

имя_класса (фактические_параметры_конструктора);

Ограничение прямого доступа к компонентам класса.

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

public- ощедоступный

private- собственный

protected- защищенный

Public компоненты, видные в любом месте программы (или доступные)

Private компоненты доступны только внутри класса, вне класса их система не видит

Protected компоненты доступны, как внутри данного класса, так и во всех его потомках.

Если класс объявлен с помощью слова struct то по умолчанию его компоненты получают статус public. Если класс объявлен с помощью слова class, то его компоненты имеют статус private. Если класс объявлен словом union то в любой момент времени доступен только один компонент, из компонентов данных, поэтому по умолчанию, компоненты имеют статус public.

Изменить статус используемый по умолчанию можно в программе, используя спецификатор доступа (public,private,protected). Тогда определение и описание компонентов производиться в отдельных разделах, каждый из которых начинается со спецификатора доступа с двоеточием. Все что попадает в этот раздел, имеет статус доступа.