Объектно-ориентированный подход
Объектный подход к разработке информационных систем включает:
Объектно-ориентированный анализ – методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области;
Объектно-ориентированное проектирование – методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логической и физической, а так же статической и динамической модели проектирования системы;
Объектно-ориентированное программирование – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
При объектно-ориентированной декомпозиции предметной области поставленная задача представляется совокупностью автономных действующих объектов, которые взаимодействуют друг с другом, чтобы обеспечить поведение системы. Следование концепции ООП предполагает выполнение такого анализа решаемой задачи, при котором в первую очередь идентифицируются объекты и их поведение. Для объектов необходимо выявить:
Данные, описывающие их свойства и состояния;
Функции, которые должны выполнять объекты;
Сообщения, которые могут получать объекты.
Объект – описание некоторой сущности, которая имеет конкретное состояние и поведение и может быть однозначно идентифицирован.
Каждый объект системы обладает своим соответствующим поведением и каждый из них моделирует некоторый объект реального мира. Объекты некоторой системы имитируют процессы, происходящие в предметной области поставленной задачи. Состояние объекта определяют данные, входящие в состав объекта, которые и задают его текущее состояние. Таким образом, объект представляет собой структурный элемент программы, в котором локализована определенная часть знаний предметной области. Объект выполняет свои функции только в ответ на получение сообщений.
Поведение объекта определяет, как объект меняет свое состояние и взаимодействует с другими объектами. Взаимодействие объектов осуществляется посредством сообщений. Под передачей сообщения понимается вызов некоторой функции к нему, входящей в состав класса, и эта функция манипулирует данными объекта. В такой системе каждый объект, получив некоторое входное воздействие (сообщение), выполняет заранее определенные действия.
Объект является экземпляром класса.
Класс – тип данных, введенный разработчиком.
Основная цель класса – определение пространства, описывающего состав, основные свойства и поведение будущих объектов данного типа данных.
Class “Name” // тип данных, Объект - экземпляр
{
Данные; // атрибуты и свойства
Функции для работы с данными; // методы
};
Пример:
Class man
{
Ф;
И;
О;
ДАТА РОЖДЕНИЯ;
ДОМАШНИЙ АДРЕС;
ВЫВЕСТИ СОСТОЯНИЕ (); // функция
};
Man a; // man – класс, a – объект
Вывести состояние
…
Базовые концепции ооп
абстрагирование – процесс введения описания класса, т.е. таких существенных характеристик некоторых будущих объектов, которые и отличают их от других видов объектов, т.е. четко определяют особенности объекта класса. Абстрагирование порождает так называемые абстрактные типы данных. Выбор существенных атрибутов зависит от предметной области поставленной задачи, например: для класса «человек» можно выделить следующие атрибуты: ФИО, дата рождения, домашний адрес. Так для системы ГАИ существенными атрибутами будут: ФИО, дата рождения, номер водительского удостоверения и т.д. А для системы «поликлиника» набор существенных атрибутов будет другой: ФИО, домашний адрес, пол, рост, вес и др.
наследование – такое соотношение между классами, когда один класс использует часть свойств другого класса, добавляя этому классу нечто свое, новое и таким образом расширяет возможности этого класса. Тот класс, который расширяет возможности, называется производным, а тот, на основании которого создан производный класс, называют базовым. Тот класс, на основании которого строится, называется базовым, тот класс, который строится, называется производным.
Построение нового класса, наследуя его из существующего, предполагает добавление в новый класс новых компонентов:
данных;
функций.
Либо замену в новом классе наследуемой из старого класса компоненты:
атрибуты;
функции.
Наследование может быть:
одиночным – у производного класса только один базовый класс;
множественным – производный класс имеет более одного базового класса
Одиночное. Множественное.
Базовый класс
Базовый класс
Производный класс
Таким образом, строится иерархия классов. Механизм наследования помогает сделать разработку более экономной и читабельной, т.к. объекты классов используют одни и те же атрибуты и формы поведения без дублирования реализующих их программных кодов.
Например:
Класс «человек» имеет атрибуты: ФИО, дата рождения, домашний адрес. Производный от него класс «водитель» имеет атрибуты: серия и номер водительского удостоверения, дата выдачи.
Это пример одиночного наследования и объект класса «водитель» будет обладать следующими атрибутами: ФИО, дата рождения, домашний адрес, серия и номер водительского удостоверения, дата выдачи.
Пример 2:
Имеется класс «водитель» и класс «транспортное средство» с атрибутами: марка, цвет, номер кузова, номер двигателя. На основании этих классов создадим производный класс «автомобиль» с атрибутами: государственный номер, дата регистрации. Данный пример показывает множественное наследование.
ТКР по темам: распределенные информационные системы, модель представления данных
Повторить материал к срезам
Инкапсуляция – объединение в пространстве класса элементов, определяющих внутреннее устройство функций для манипулирования этими элементами, которые и определяют поведение будущих объектов
Инкапсуляция представляет собой механизм, обрабатывающий эти данные и сохраняющий их от внешнего воздействия. Инкапсуляция объединяет данные и код.
Полиморфизм – возможность создания множественных определений для операций и функций. Какое определение будет использовано, зависит от контекста программного кода. Он повышает степень абстрагирования при создании программных продуктов, т.к. в этом случае задача программиста указать правильные действия, а не то, как его выполнять. Реализуется полиморфизм в С++ через механизм перегрузки функций, и через механизм перегрузки операций языка.