Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Основные термины и положения ООП

Читайте также:
  1. A.6.4 Основные операторы пакетных файлов
  2. A.6.6 Основные команды разных версий DOS.
  3. I. OБЩИЕ ПОЛОЖЕНИЯ
  4. I. ОБЩИЕ ПОЛОЖЕНИЯ
  5. I. ОБЩИЕ ПОЛОЖЕНИЯ
  6. I. Основные расходы
  7. II. Основные положения по организации практики

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

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

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

Множество объектов с одинаковым набором свойств и поведением называется классом.

Инкапсуляция данных

Этот термин включает в себя логическое связывание данных с конкретной операцией. Она так же означает, что они являются не -глобальными доступными всей программе, а локальными – доступными только малой ее части. Инкапсуляция также автоматически подразумевает защиту данных. Именно для этого предназначена структура class в С++. В классе управление функциональными деталями объекта осуществляется при помощи спецификаторов private, public, protected. Для создания объектов класса служат специальные методы, которые называют конструкторами. Они необходимы для корректной инициализации объекта. Например, при создании матрицы заданных размеров конструктор должен выделить память для хранения элементов этой матрицы. Уничтожением объекта также занимается специальный метод класса, который называют деструктором. Его задача – освободить ресурсы, занимаемые объектом (закрыть используемые файлы, соединения с базами данных и пр.). Одним из принципов объектно-ориентированного программирования (ООП) – инкапсуляция. Этот термин характеризует сокрытие отдельных деталей внутреннего устройства класса от внешних по отношению к нему объектов или пользователей.

Класс «Матрица» (Matrix) содержит переменные, доступ к которым может быть осуществлен только из методов класса. Такой подход используется для того, чтобы защитить переменные от несанкционированного доступа. Например, если дать возможность программисту, который будет работать с объектом класса Matrix, изменять напрямую значения переменных для хранения размера матрицы, то эти значения могут стать некорректными (отрицательными, очень большими, или не соответствующими действительным размерам). А, выполняя то же самое с помощью методов класса, можно включить в них проверку корректности введенных значений. Для нашего класса таким методом может быть метод ввода матрицы.

 

Иерархия классов

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

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

Наследование в ООП позволяет классу получать совйства другого класса объектов. Родительский класс служит шаблоном для производного класса; этот шаблон можно менять различными способами. Наследование является важным положением, поскольку оно позволяет повторно использовать определение класса без значительных изменений в коде.

Полиморфизм

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

Виртуальные функции

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

Конструктор вызывается каждый раз, когда создается объект его класса. Задача конструктора в данном случае состоит в связывании виртуальной функции с таблицей адресной информации. Во время компиляции адрес виртуальной функции неизвестен; вместо этого ей отводится позиция в таблице адресов. Эта позиция будет содержать адрес функции [5].

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

 


Дата добавления: 2015-08-27; просмотров: 55 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Введение| Структура данных

mybiblioteka.su - 2015-2024 год. (0.006 сек.)