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

Объектно-ориентированные модели. Составные части объектного подхода

ООП- новый подход к созданию программ, который аккумулирует лучшие идеи, воплощённые в структурном подходе и сочетает их с новыми концепциями, которые позволяют оптимально организовать программу.

Существует два способа организации программ:

  1. Положить в основу код, т.е. какие действия происходят

  2. Положить в основу данные, т.е. что изменяется в результате действия

В рамках структурного подхода главным является код, т.е. его принцип можно сформулировать как «код изменяет данные»

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

Ооп строится на трёх базовых концепциях- инкапсуляция, полиморфизм и наследование.

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

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

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

В более общем смысле концепцией полиморфизма является идея- один интерфейс, множество методов.

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

Класс «пища» класс «фрукты»  класс «яблоки»  объект «антоновка»

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

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

  2. ограничение доступа- создание абстракции какого-либо объекта должны предшествовать определённые решения по способу его реализации. Выбранный способ реализации должен быть скрыт или защищён для большинства объектов пользователей, обращающихся к данной абстракции

  3. модульность- разделение программы на части( модули) позволяет частично уменьшить её сложность

  4. типизация- строится на понятии типов абстрактных данных. Тип- это точное определение свойств строения и поведения, которые присущи некоторой совокупности объектов

  5. параллелизм- каждая программа включает как минимум один канал управления. В параллельных системах таких каналов может быть много. Каналы управления бывают временными либо постоянными

  6. устойчивость- свойство объектов существовать во времени не зависимо от процесса породившего данный объект или пространства, в котором он был создан.

Виды устойчивости:

  1. Промежуточные результаты вычислений

  2. Локальные переменные

  3. Данные, сохраняющиеся между вызовами основной программы

  4. Данные, остающиеся неизменными в различных версиях программы

  5. Данные, которые переживают саму программу

Классы

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

Объявление выглядит следующим образом:

Class имя {

Закрытые данные и ф-ции

Спецификатор доступа: данные и методы

….

}список объектов;

Class employee;

{ char name [80];

Public:

Void putname (char *n);

Void getname (char *n);

Void putname (char n);

Ouble getwage ();

Private;

Double wage;

}

Void employee::putname (char *n)

{strcpy (name,n);

}

Void employee:: get name (char *n)

{ strcpy (n,name);}

Void employee::putwage (double w)

{wage =w;}

Double employee::getwage (return wage)}

Int main()

{employee teg;

Teg,putname (“ted jons”);

Return 0;

}

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

  1. Объявление класса не может содержать объявление своего объекта

  2. Члены класса не могут быть объявлены с ключевыми словами auto, register и extern

  3. Данные слова + static определяют четыре класса памяти. Класс памяти идентификатора определяет его время жизни .

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

  1. Автоматический класс памяти с локальным временем жизни (auto,extern)

  2. Класс памяти с глобальным временем жизни

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

  1. Область действия- функция

  2. Область действия- файл

  3. Область действия- блок

  4. Область действия- прототип функции

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

Единственными идентификаторами, у которых область действия прототип функции, являются те, которые объявлены в списке параметров прототипов функции