Разработка объектной программы для обработки данных о авторах издательства». 4 этап переделанный 2. Разработка объектной программы для обработки данных о авторах издательства
![]()
|
Краткие сведения об объектном подходеОбъект В широком смысле слова объект – это любая сущность, имеющая некоторый набор свойств (параметров, характеристик) и обладающая некоторым поведением (функциональностью). Под объектом в узком смысле можно понимать некоторое формализованное описание рассматриваемой сущности, т.е. модель исходного объекта Класс Класс представляет собой формализованный способ описания однотипных объектов, т.е. объектов с одинаковым набором свойств и методов. При описании класса перечисляются свойства и реализуются методы соответствующих объектов. На основе одного класса можно создать любое число объектов, называемых экземплярами этого класса. Для использования классов необходимо объявить объектную переменную. Для каждой переменной вводится уникальное имя и указывается принадлежность к одному из известных классов. Это позволяет называть объектные переменные переменными классового типа. Инкапсуляция Инкапсуляция позволяет рассматривать объект в виде некоторой достаточно самостоятельной программной единицы, полностью отвечающей за хранение и обработку своих данных Объединение в рамках объекта некоторых данных и соответствующего программного кода рассматривается как проявление одного из базовых принципов объектного подхода – принципа инкапсуляции. В соответствии с принципом инкапсуляции элементы данных рекомендуется делать недоступными для прямого использования за пределами объекта Контейнер Контейнером называется объект, позволяющий хранить и обрабатывать набор некоторых объектов. Вариантами реализации контейнера могут быть на основе: • на основе массива • на основе динамических списков разных типов • на основе поисковых деревьев • на основе хеш-таблиц Наследование Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование может быть двух видов: простое и множественное. Наследование называется простым, когда у дочернего класса существует только один родитель, множественным - когда дочернего класса существует более одного родителя. Полиморфизм Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами - из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием - в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции. Переопределение методов - это возможность объявления в дочернем классе метода, заголовок которого полностью совпадает с родительским методом, но для этого метода существует своя программная реализация. Переопределение методов основано на двух важных понятиях: динамическая компоновка программного кода, т.е. подключение необходимых программных модулей непосредственно во время работы программы. информация о переопределенных в классе методах, доступная механизму динамической компоновки Динамическая компоновка позволяет создавать такие программные коды, которые могут динамически подключаться в процессе выполнения программы. Данная программа отличается своей гибкостью, но имеет достаточно медленную скорость выполнения. Методы данного класса делятся на две группы: неизменяемые методы (реализация по схеме раннего связывания), изменяемые переопределенные (виртуальные) методы. Статическая компоновка - это создание полностью готового к выполнению программного кода на этапе разработки программы. При разработке программы компилятор переводит набор программ в машинный код, а компоновщик объединяет остальные программные модули в единое целое. Данный код содержит все необходимые адресные связи и может выполняться без каких - либо дополнительных действий. Преимуществами этого способа являются быстрая скорость выполнения программного кода, а недостатком - жесткость программы. Интерфейсные классы Интерфейсный класс - полностью абстрактный класс, в котором все его методы представляют собой только заголовки. Основные значения интерфейсных классов - это построение гибких объектных моделей с возможностью создания обычных классов на основе нескольких интерфейсных классов с обязательной реализацией всех заявленных методов. Существуют некоторые отличия интерфейсных классов от абстрактных классов: абстрактные классы могут содержать реализацию некоторых методов, а в интерфейсных исключена всякая реализация; абстрактные классы поддерживают только простое наследование, а интерфейсные – множественное; обычный класс может в качестве родителя иметь только один абстрактный класс, а вот интерфейсов-родителей может быть и несколько; абстрактный класс может содержать поля данных, а интерфейсный – либо вообще не может, либо только статические неизменяемые поля Обобщенные или параметризованные классы Обобщенный класс – это класс, при описании свойств и методов которого вместо конкретных типов данных можно использовать условные заменители - обобщенные типы данных. Количество используемых обобщенных типов при описании класса может быть любым. Каждый обобщенный тип имеет условное имя, которое и используется при описании полей данных, параметров методов и возвращаемых значений. На основе одного обобщенного класса можно создавать объекты с разными типами данных. Взаимодействие объектов и классов Любая программа в объектно-ориентированном программировании реализует ту или иную поставленную задачу с помощью взаимодействия объектов разных классов. Различают два способа взаимодействия: агрегация (композиция) обобщение (наследование) Агрегация возникает в тех случаях, когда один объект, включает в себя в качестве составных частей другие объекты, т.е. моделирует отношение часть - целое. Строгая агрегация или, композиция возникает тогда, когда существование составного объекта зависит от существования входящих в него частей. Обобщение возникает в том случае, когда один из классов описывает некоторое достаточно общее понятие, а другие – более конкретные разновидности этого понятия. |