Объектная модель совокупности. Главные понятия
Объектная модель обрисовывает структуру объектов, составляющих совокупность, их атрибуты, операции, связи с другими объектами. В объектной модели должны быть отражены объекты и те понятия настоящего мира, каковые ответственны для разрабатываемой совокупности. В объектной модели отражается в первую очередь прагматика разрабатываемой совокупности, что выражается в применении терминологии прикладной области, которая связана с применением разрабатываемой совокупности.
Абстракция
Абстрагирование — это метод выделить комплект значимых черт объекта, кроме из рассмотрения незначимые. Соответственно, абстракция — это комплект всех таких черт.[
Инкапсуляция
Инкапсуляция — это свойство совокупности, разрешающее объединить методы и данные, трудящиеся с ними, в классе и скрыть подробности реализации от пользователя.
Наследование
Наследование — это свойство совокупности, разрешающее обрисовать новый класс на базе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, именуется базисным, родительским либо суперклассом. Новый класс — потомком, наследником либо производным классом.
Полиморфизм
Полиморфизм — это свойство совокупности применять объекты с однообразным интерфейсом без информации о внутренней структуре и типе объекта.[1]
Класс
Класс есть обрисовываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Практически он обрисовывает устройство объекта, являясь собственного рода чертежом. Говорят, что объект — это экземпляр класса. Наряду с этим в некоторых выполняющих совокупностях класс кроме этого может представляться некоторым объектом при исполнении программы при помощи динамической идентификации типа данных. В большинстве случаев классы разрабатывают так, дабы их объекты соответствовали объектам предметной области.
Объект
Сущность в адресном пространстве вычислительной совокупности, появляющаяся при создании экземпляра класса либо копирования прототипа (к примеру, по окончании связывания результатов и запуска компиляции исходного кода на исполнение).
Прототип
Прототип — это объект-пример, по подобию и образу которого создаются другие объекты. Объекты-копии смогут сохранять сообщение с родительским объектом, машинально наследуя трансформации в прототипе; эта особенность определяется в рамках конкретного языка.
Объекты. Определение, свойства и использование.
По определению будем именовать объектом понятие, абстракцию либо любую вещь с четко очерченными границами, имеющую суть в контексте разглядываемой прикладной неприятности. Введение объектов преследует две цели:
• познание задачи (неприятности);
• введение базы для реализации на компьютере.
Объекты смогут быть
материальными (явления и предметы) и нематериальными (идеи и
образы), к примеру, стол, стул, собака, сердце – это материальные
объекты; матрица, теория относительности, законы Ньютона,
философское учение Платона – примеры нематериальных объектов.
Раздельно возможно выделить объекты, каковые добавляются в ходе
программной реализации и не имеют никакого отношения к
окружающей нас действительности – вектор, динамический перечень, двоичное
дерево, хэш-таблица и пр.
Любой объект характеризуется множеством особенностей.
Информационная модель объекта выделяет из этого множества лишь
кое-какие свойства, значительные для ответа конкретной задачи,
разрешающие отделить данный объект от вторых. Объекты смогут
быть в разных состояниях. Состояние объекта
характеризуется списком всех его особенностей и их текущими значениями.
Примеры объектов: форточка, Банк Империал, Петр Сидоров, дело № 7461, сберкнижка и т.д.
Классы. Определение, свойства и способы. Примеры
Класс
Класс есть обрисовываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Практически он обрисовывает устройство объекта, являясь собственного рода чертежом. Говорят, что объект — это экземпляр класса. Наряду с этим в некоторых выполняющих совокупностях класс кроме этого может представляться некоторым объектом при исполнении программы при помощи динамической идентификации типа данных. В большинстве случаев классы разрабатывают так, дабы их объекты соответствовали объектам предметной области.
Наиболее значимым свойством классов в ООП и их принципиальным отличием от абстрактных типов данных (встроенных в язык программирования) есть наследование. Наследование — это отношение между классами, при котором один класс разделяет структуру либо поведение одного либо нескольких вторых классов.
Механизм наследования классов в ООП разрешает выделить неспециализированные части различных классов.
Атрибуты объектов. Виды атрибутов. Примеры
Атрибут — это значение, характеризующее объект в его классе. Примеры атрибутов: категория, баланс, кредит (атрибуты объектов класса счет); имя, возраст, вес (атрибуты объектов класса человек) и т.д.
Среди атрибутов различаются постоянные атрибуты (константы) и переменные атрибуты. Постоянные атрибуты характеризуют объект в его классе (к примеру, номер счета, категория, имя человека и т.п.). Текущие значения переменных атрибутов характеризуют текущее состояние объекта (к примеру, баланс счета, возраст человека и т.п.); изменяя значения этих атрибутов, мы изменяем состояние объекта.
Время от времени указывается тип атрибутов (так как любой атрибут — это некое значение) и начальное значение переменных атрибутов (совокупность начальных значений этих атрибутов задает начальное состояние объекта).
Атрибуты связаны с изюминками неспециализированной реализации. К примеру, в случае, если как мы знаем, что будет употребляться база данных, в которой любой объект имеет неповторимый идентификатор, то включать данный идентификатор в число атрибутов объекта на данном этапе не нужно. Дело в том, что, вводя такие атрибуты, мы ограничиваем возможности реализации совокупности. Так, вводя в качестве атрибута неповторимый идентификатор объекта в базе данных, мы уже в начале проектирования отказываемся от применения СУБД, каковые таковой идентификатор не поддерживают.
Классы. Операции и способы. примеры и Использование
Класс в ООП — это в чистом виде слишком общий тип данных, создаваемый программистом. С данной точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт набор операций и внутреннюю структуру значений, каковые над этими значениями смогут быть выполнены.
В современных объектно-ориентированных языках программирования любой объект есть значением, относящимся к определённому классу. Класс представляет собой заявленный программистом составной тип данных, имеющий в составе.
Классы смогут наследоваться друг от друга. Класс-потомок приобретает все поля и способы класса-родителя, но может дополнять их собственными или переопределять уже имеющиеся. Большая часть языков программирования поддерживает лишь единичное наследование (класс может иметь лишь один класс-родитель), только в некоторых допускается множественное наследование — порождение класса от двух либо более классов-родителей. Множественное наследование создаёт множество неприятностей, как логических, так и чисто реализационных, исходя из этого полностью его помощь не распространена. Вместо этого в девяностых показалось и стало деятельно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий лишь заголовки способов. В случае, если некоторый класс наследует (либо, как говорят, реализует) интерфейс, он обязан реализовать все входящие в него способы. Применение интерфейсов предоставляет довольно недорогую альтернативу множественному наследованию.
Атрибуты зависимостей
Зависимости, как и классы, смогут иметь атрибуты: к примеру, при организации доступа пользователя к файлу разрешение_на_доступ есть атрибутом зависимости дешёв: атрибут зависимости обозначается прямоугольником, связанным дугой с прямой, изображающей зависимость. Такое обозначение атрибутов зависимостей принято в технологии OMT. Разрешение на доступ связано как с пользователем, так и с файлом, и не может быть атрибутом ни пользователя, ни файла в отдельности. Время от времени зависимости, имеющие довольно много атрибутов, воображают посредством классов. Такие зависимости в базах данных представляются временными таблицами, организуемыми в ходе обращения с БД. Пример зависимости, представленной через класс, продемонстрирован на рисунке, на котором представлена информация о регистрации пользователей на рабочих станциях.
Пользователь возможно зарегистрирован на нескольких рабочих станциях, любая регистрация содержит его привилегии и приоритет пользователя доступа (атрибуты зависимости). Пользователь может иметь собственную директорию для каждой зарегистрированной рабочей станции, но одинаковая директория может принадлежать в один момент нескольким пользователям либо нескольким рабочим станциям.
Агрегация
Агрегация — это зависимость между классом составных объектов и классами, воображающими компоненты этих объектов (отношение целое-часть). Агрегация обозначается ромбиком: на рисунке приведен пример агрегации; данный пример интерпретируется следующим образом: документ имеет несколько (нуля, либо более) абзацев; любой абзац имеет несколько (нуля, либо более) предложений
Имена ролей, квалификаторы
Роль определяет одну сторону зависимости. В двоичной зависимости выяснены две роли. Имя роли конкретно определяет одну сторону зависимости. Роли позволяют разглядывать двоичную зависимость как связь между множеством и объектом зависимых объектов: любая роль есть обозначением объекта либо множества объектов, связанных зависимостью с объектом на втором финише зависимости. Имя роли возможно разглядывать как производный атрибут, множеством значений которого есть множество связанных с данной ролью объектов. В двоичной зависимости пара имен ролей может употребляться для идентификации данной зависимости. Пользователь возможно или обладателем, или зарегистрированным пользователем директории; директория может содержать в себе другие директории.
Имена ролей направляться непременно показывать в тех случаях, в то время, когда зависимость устанавливается между объектами одного и того же класса. Имена ролей должны быть неповторимы, поскольку они употребляются для различения объектов, участвующих в зависимости.
Квалификатором именуется некий атрибут, что разрешает снизить действенную кратность зависимости. Квалификаторы используются в зависимостях типов один-ко-многим либо много-ко-многим. Квалификаторы указываются на схемах в прямоугольничках, пририсованных к прямоугольнику, изображающему соответствующий класс.
наследование и Обобщение.
наследование и Обобщение разрешают распознать аналогии между разными классами объектов, определяют многоуровневую классификацию объектов. Так, в графических совокупностях смогут существовать классы, определяющие обрисовку разных фигур : точек, линий, многоугольников, кругов и т.п.
Обобщение разрешает выделить класс одномерные фигуры и вычислять классы прямая, сплайн и дуга подклассами класса одномерные фигуры, а класс одномерные фигуры — суперклассом классов прямая, сплайн и дуга. В случае, если наряду с этим принять соглашение, что операции и атрибуты суперкласса настоящи в каждом из его подклассов, то операции и одинаковые атрибуты классов прямая, сплайн и дуга (подклассов) смогут быть вынесены в класс одномерные фигуры (суперкласс). Подобно возможно поступить и с двумерными фигурами, выяснив для классов круг и многоугольник суперкласс двумерная фигура. На схемах обобщение (наследование) изображается треугольничком (рисунок). Треугольничек направляться ставить кроме того в том случае, в то время, когда суперкласс имеет всего один подкласс. Слово размерность, следующее за верхним треугольничком на рисунке, есть дискриминатором.
Дискриминатор — это атрибут типа перечисление, показывающий, по какому из особенностей объектов сделано данное обобщение.
Абстрактные классы
Слишком общий класс не имеет возможности иметь объектов, поскольку в нем не выяснены операции над объектами; объекты должны принадлежать конкретным подклассам абстрактного класса. Абстрактные классы употребляются для спецификации интерфейсов операций. Абстрактные классы эргономичны на фазе анализа требований к совокупности, поскольку они разрешают распознать аналогию в разных, на первый взгляд, операциях, определенных в разбираемой совокупности. Разглядим пример, представленный на рисунке. В нем рассмотрена операция подсчет выплат для разных категорий служащих компании: временных служащих с почасовой зарплатой , постоянных служащих с понедельной зарплатой и руководящих работников компании с помесячной оплатой. Любая из категорий служащих представлена своим подклассом класса служащий, от которого они наследуют атрибут годовой_доход и операцию подсчет_выплат. Но подсчет выплат для каждой категории служащих производится по-своему, с учетом значений их собственных (неунаследованных) атрибутов; исходя из этого в каждом из подклассов операция подсчет_выплат переопределяется. Следовательно, в суперклассе операция подсчет_выплат возможно выяснена произвольным образом, поскольку она ни при каких обстоятельствах не будет выполняться. Одновременно с этим сигнатуры всех операций подсчет_выплат в суперклассе и в подклассах должны быть однообразными (в противном случае это будут различные операции). Из сообщённого направляться, что в суперклассе возможно задать лишь сигнатуру операции подсчет_выплат, это обеспечит однообразные сигнатуры данной операции во всех подклассах. Способы, реализующие операцию подсчет_выплат, достаточно выяснить лишь в подклассах класса служащий. Суперкласс, в котором заданы лишь сигнатуры и атрибуты операций, но не выяснены способы, реализующие его операции, именуется абстрактным классом. Способы, реализующие операции абстрактного класса, определяются в его подклассах, каковые именуются конкретными классами.
Множественное наследование
Множественное наследование разрешает классу иметь более одного суперкласса, наследуя свойства (операции и атрибуты) всех собственных суперклассов. Класс, имеющий пара суперклассов, именуется объединенным классом. Свойства класса-предка, видящегося более чем один раз, в графе наследования, наследуются лишь в одном экземпляре. Конфликты между параллельными определениями порождают неясности, каковые должны разрешаться на протяжении реализации. На практике направляться избегать таких неясностей либо нехорошего понимания кроме того в тех случаях, в то время, когда конкретный язык программирования, выбранный для реализации совокупности, предоставляет возможность их разрешения, применяя приоритеты либо какие-либо другие средства.
Пример множественного наследования приведен на рисунке, на котором рассмотрена классификация транспортных средств. Класс транспортное средство имеет два подкласса сухопутное_ТС и водное_ТС (зачерненный треугольник, применяемый для обозначения наследования, свидетельствует, что подклассы имеют непустое пересечение). Класс амфибии имеет два суперкласса сухопутное_ТС и водное_ТС, наследуя все свойства (операции и атрибуты) как класса сухопутное_ТС, так и класса водное_ТС.
Ограничения
Ограничения — это функциональные зависимости между сущностями объектной модели. Под термином сущности подразумеваются объекты, классы, атрибуты, зависимости и связи. Ограничение уменьшает количество вероятных значений, каковые может принимать некая сущность.
На рисунке представлены ограничения, накладываемые на объекты:
(а) заработная плат служащего не имеет возможности быть больше зарплаты его начальника (ограничение на значения одного атрибута различных объектов);
(б) никакое окно (на экране дисплея) не имеет возможности иметь отношение длины к ширине, не лежащее в промежутке от 0.8 до 1.5 (ограничение на значения различных атрибутов одного объекта);
(в) возраст человека не имеет возможности убывать (ограничение на трансформацию значения атрибута во времени).
Ограничения указываются в фигурных скобках под изображением соответствующего класса на объектной диаграмме (они относятся ко всем объектам этого класса). В большинстве случаев ограничения смогут быть выражены в виде логических функций (предикатов), каковые и воображают их в программе. Ограничения дают один из параметров качества объектной модели: хорошая объектная модель в большинстве случаев содержит довольно много ограничений.
Ограничения на зависимости уменьшают количество объектов, которые связаны с данным объектом (соответствующие обозначения уже рассматривались нами ранее.
Рисунок 1
Рисунок 2
Гомоморфизм между двумя зависимостями. Определение, примеры и использование.
Гомоморфизм — это отображение между двумя зависимостями.К примеру, подробность, обрисованная в каталоге деталей автомобиля, может содержать в себе другие подробности (составная подробность), кроме этого обрисованные в этом каталоге. Любая позиция каталога снабжена номером модели; любая подробность характеризуется своим серийным номером, причем любая составная подробность содержит в себе соответствующие подробности, кроме этого имеющие собственные серийные номера.
На рисунке 1. продемонстрированы классы, соответствующие физическим подробностям (класс подробность) и их описаниям в каталоге (класс модель_детали), и зависимости между такими классами (потому, что речь заходит о сложных подробностях, эти зависимости являются агрегациями зависимости содержит). На рисунке 1. продемонстрировано отображение диаграмм объектных моделей, соответствующих физическим подробностям, в диаграмму объектной модели, соответствующей каталогу. Наряду с этим направляться иметь в виду, что потому, что различным физическим подробностям одного вида (номенклатуры) соответствует одно описание в каталоге, разглядываемое отображение как бы склеивает все диаграммы объектных моделей, соответствующих физическим подробностям, в одну диаграмму объектной модели, соответствующей каталогу. Обрисованное отображение имеется один из самые типичных примеров гомоморфизма. Неспециализированный случай гомоморфизма продемонстрирован на рисунке 2. Гомоморфизм отображает связи, определяемые зависимостью u, в связи, определяемые зависимостью t, являясь отображением типа много-в-один. Гоморфизмы в большинстве случаев употребляются при изучении связей между метаобъектами и порождаемыми ими объектами (описание подробности в каталоге может рассматриваться как метадеталь)
методика и Принципы определения классов
Анализ внешних требований к проектируемой прикладной совокупности разрешает выяснить классы и объекты объектов, которые связаны с прикладной проблемой, которую обязана решать эта совокупность. Все классы должны быть осмыслены в разглядываемой прикладной области; классов, которые связаны с компьютерной реализацией, как к примеру перечень, стэк и т.п. на этом этапе вводить не нужно.
Начать необходимо с выделения вероятных классов из письменной постановки задачи (другой документации и технического задания, предоставленной клиентом). направляться иметь в виду, что это сверхсложный и важный этап разработки, поскольку от него сильно зависит дальнейшее будущее проекта.
При определении вероятных классов необходимо попытаться выделить как возможно больше классов, выписывая имя каждого класса, что приходит на ум. В частности, каждому существительному, видящемуся в предварительной постановке задачи, может соответствовать класс. Исходя из этого при выделении вероятных классов каждому такому существительному в большинстве случаев сопоставляется вероятный класс.
Потом перечень вероятных классов должен быть проанализирован с целью исключения из него ненужных классов. Такими классами являются:
- избыточные классы: в случае, если два либо пара классов высказывают однообразную данные, направляться сохранить лишь один из них;
- нерелевантные (не имеющие прямого отношения к проблеме) классы: для каждого имени вероятного класса оценивается, как он нужен в будущей совокупности (оценить это часто бывает очень непросто); нерелевантные классы исключаются;
- нечетко определенные (с позиций разглядываемой неприятности) классы (см. примеры таких классов в п. 2.3.1);
- атрибуты: некоторым существительным больше соответствуют не классы, а атрибуты; такие существительные, в большинстве случаев, обрисовывают свойства объектов (к примеру, имя, возраст, вес, адрес и т.п.);
- операции: некоторым существительным больше соответствуют не классы, а имена операций (к примеру, телефонный_вызов вряд ли свидетельствует какой-либо класс);
- роли: кое-какие существительные определяют имена ролей в объектной модели (к примеру, обладатель, шофер, глава, служащий; все эти имена связаны с ролями в разных зависимостях объектов класса человек);
- реализационные конструкции: именам, больше связанным с компьютерной аппаратурой и программированием, не нужно на разрешённом этапе сопоставлять классов, поскольку они не отражают изюминок проектируемой прикладной совокупности; примеры таких имен: подпрограмма, процесс, метод, прерывание и т.п.
По окончании исключения имен всех ненужных (лишних) вероятных классов будет взят предварительный перечень классов, составляющих проектируемую совокупность.
Определение зависимостей. примеры и Методика.
В первую очередь из классов исключаются атрибуты, являющиеся явными ссылками на другие классы; такие атрибуты заменяются зависимостями. Суть таковой замены в том, что зависимости являются абстракцией того же уровня, что и классы, и потому не оказывают яркого влияния на будущую реализацию (ссылка на класс только один из способов реализации зависимостей). После этого необходимо исключать зависимости, каковые возможно выразить через другие зависимости, поскольку они избыточны. При исключении избыточных (производных) зависимостей необходимо быть особенно осмотрительным, поскольку не все дублирующие одна другую зависимости между классами избыточны; в некоторых случаях другие зависимости разрешают установить лишь существование еще одной производной зависимости, но не разрешают установить кратность данной зависимости; к примеру, при, представленном на рисунке, компания имеет довольно много служащих и обладает многими компьютерами; каждому служащему предоставлено для персонального применения пара компьютеров, помимо этого, имеются компьютеры неспециализированного пользования; кратность зависимости предоставлен_для_использования не может быть выведена из зависимостей помогает и обладает; не смотря на то, что производные зависимости и не додают новой информации, они довольно часто бывают эргономичны; в этих обстоятельствах их возможно показывать на диаграмме, пометив косой чертой.
Удалив избыточные зависимости, необходимо уточнить семантику оставшихся зависимостей следующим образом:
- неверно названные зависимости: их направляться переименовать, дабы суть их стал понятен;
- имена ролей: необходимо добавить имена ролей в том месте, где это нужно; имя роли обрисовывает роль, которую играется соответствующий класс в данной зависимости с позиций другого класса, участвующего в данной зависимости; в случае, если имя роли светло из имени класса, его возможно не показывать;
- квалификаторы: додавая квалификаторы в том месте, где это нужно, мы вносим элементы контекста, что разрешает добиться однозначной идентификации объектов; квалификаторы разрешают кроме этого упростить кое-какие зависимости, понизив их кратность;
- неучтенные зависимости должны быть распознаны и добавлены в модель.
Объектная модель совокупности. Главные понятия
Объектная модель обрисовывает структуру объектов, составляющих совокупность, их атрибуты, операции, связи с другими объектами. В объектной модели должны быть отражены объекты и те понятия настоящего мира, каковые ответственны для разрабатываемой совокупности. В объектной модели отражается в первую очередь прагматика разрабатываемой совокупности, что выражается в применении терминологии прикладной области, которая связана с применением разрабатываемой совокупности.
Абстракция
Абстрагирование — это метод выделить комплект значимых черт объекта, кроме из рассмотрения незначимые. Соответственно, абстракция — это комплект всех таких черт.[
Инкапсуляция
Инкапсуляция — это свойство совокупности, разрешающее объединить методы и данные, трудящиеся с ними, в классе и скрыть подробности реализации от пользователя.
Наследование
Наследование — это свойство совокупности, разрешающее обрисовать новый класс на базе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, именуется базисным, родительским либо суперклассом. Новый класс — потомком, наследником либо производным классом.
Полиморфизм
Полиморфизм — это свойство совокупности применять объекты с однообразным интерфейсом без информации о внутренней структуре и типе объекта.[1]
Класс
Класс есть обрисовываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Практически он обрисовывает устройство объекта, являясь собственного рода чертежом. Говорят, что объект — это экземпляр класса. Наряду с этим в некоторых выполняющих совокупностях класс кроме этого может представляться некоторым объектом при исполнении программы при помощи динамической идентификации типа данных. В большинстве случаев классы разрабатывают так, дабы их объекты соответствовали объектам предметной области.
Объект
Сущность в адресном пространстве вычислительной совокупности, появляющаяся при создании экземпляра класса либо копирования прототипа (к примеру, по окончании связывания результатов и запуска компиляции исходного кода на исполнение).
Прототип
Прототип — это объект-пример, по подобию и образу которого создаются другие объекты. Объекты-копии смогут сохранять сообщение с родительским объектом, машинально наследуя трансформации в прототипе; эта особенность определяется в рамках конкретного языка.
Объекты. Определение, свойства и использование.
По определению будем именовать объектом понятие, абстракцию либо любую вещь с четко очерченными границами, имеющую суть в контексте разглядываемой прикладной неприятности. Введение объектов преследует две цели:
• познание задачи (неприятности);
• введение базы для реализации на компьютере.
Объекты смогут быть
материальными (явления и предметы) и нематериальными (идеи и
образы), к примеру, стол, стул, собака, сердце – это материальные
объекты; матрица, теория относительности, законы Ньютона,
философское учение Платона – примеры нематериальных объектов.
Раздельно возможно выделить объекты, каковые добавляются в ходе
программной реализации и не имеют никакого отношения к
окружающей нас действительности – вектор, динамический перечень, двоичное
дерево, хэш-таблица и пр.
Любой объект характеризуется множеством особенностей.
Информационная модель объекта выделяет из этого множества лишь
кое-какие свойства, значительные для ответа конкретной задачи,
разрешающие отделить данный объект от вторых. Объекты смогут
быть в разных состояниях. Состояние объекта
характеризуется списком всех его особенностей и их текущими значениями.
Примеры объектов: форточка, Банк Империал, Петр Сидоров, дело № 7461, сберкнижка и т.д.
Классы. Определение, свойства и способы. Примеры
Класс
Класс есть обрисовываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Практически он обрисовывает устройство объекта, являясь собственного рода чертежом. Говорят, что объект — это экземпляр класса. Наряду с этим в некоторых выполняющих совокупностях класс кроме этого может представляться некоторым объектом при исполнении программы при помощи динамической идентификации типа данных. В большинстве случаев классы разрабатывают так, дабы их объекты соответствовали объектам предметной области.
Наиболее значимым свойством классов в ООП и их принципиальным отличием от абстрактных типов данных (встроенных в язык программирования) есть наследование. Наследование — это отношение между классами, при котором один класс разделяет структуру либо поведение одного либо нескольких вторых классов.
Механизм наследования классов в ООП разрешает выделить неспециализированные части различных классов.
Атрибуты объектов. Виды атрибутов. Примеры
Атрибут — это значение, характеризующее объект в его классе. Примеры атрибутов: категория, баланс, кредит (атрибуты объектов класса счет); имя, возраст, вес (атрибуты объектов класса человек) и т.д.
Среди атрибутов различаются постоянные атрибуты (константы) и переменные атрибуты. Постоянные атрибуты характеризуют объект в его классе (к примеру, номер счета, категория, имя человека и т.п.). Текущие значения переменных атрибутов характеризуют текущее состояние объекта (к примеру, баланс счета, возраст человека и т.п.); изменяя значения этих атрибутов, мы изменяем состояние объекта.
Время от времени указывается тип атрибутов (так как любой атрибут — это некое значение) и начальное значение переменных атрибутов (совокупность начальных значений этих атрибутов задает начальное состояние объекта).
Атрибуты связаны с изюминками неспециализированной реализации. К примеру, в случае, если как мы знаем, что будет употребляться база данных, в которой любой объект имеет неповторимый идентификатор, то включать данный идентификатор в число атрибутов объекта на данном этапе не нужно. Дело в том, что, вводя такие атрибуты, мы ограничиваем возможности реализации совокупности. Так, вводя в качестве атрибута неповторимый идентификатор объекта в базе данных, мы уже в начале проектирования отказываемся от применения СУБД, каковые таковой идентификатор не поддерживают.
Классы. Операции и способы. примеры и Использование
Класс в ООП — это в чистом виде слишком общий тип данных, создаваемый программистом. С данной точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт набор операций и внутреннюю структуру значений, каковые над этими значениями смогут быть выполнены.
В современных объектно-ориентированных языках программирования любой объект есть значением, относящимся к определённому классу. Класс представляет собой заявленный программистом составной тип данных, имеющий в составе.
Классы смогут наследоваться друг от друга. Класс-потомок приобретает все поля и способы класса-родителя, но может дополнять их собственными или переопределять уже имеющиеся. Большая часть языков программирования поддерживает лишь единичное наследование (класс может иметь лишь один класс-родитель), только в некоторых допускается множественное наследование — порождение класса от двух либо более классов-родителей. Множественное наследование создаёт множество неприятностей, как логических, так и чисто реализационных, исходя из этого полностью его помощь не распространена. Вместо этого в девяностых показалось и стало деятельно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий лишь заголовки способов. В случае, если некоторый класс наследует (либо, как говорят, реализует) интерфейс, он обязан реализовать все входящие в него способы. Применение интерфейсов предоставляет довольно недорогую альтернативу множественному наследованию.