Среда, 16.07.2025, 03:10
Приветствую Вас Гость | RSS

Основные принципы ООП

Меню сайта
Block title
Block content
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Признаки объектных языков

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

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

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

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

   Чем же существенно отличается объектная технология от объектно-ориентированной? Чтобы ответить на этот вопрос приведем определение объектно-ориентированного программирования с точки зрения Градия Буча:
   ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

   В соответствии с этим определением не все языки программирования являются объектно-ориентированными. Страуструп определил так: "если срок объектно-ориентированный язык вообще что-либо значит, то он должен означать язык, который имеет средства для поддержки объектно-ориентированного стиля программирования... Обеспечение такого стиля в свою очередь значит, что в языке удобно пользоваться этим стилем. Если написание программ в стиле объектно-ориентированного программирования требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям объектно-ориентированного программирования". Теоретически возможна имитация объектно-ориентированного программирования на обычных языках, таких, как Pascal и даже CLOS или ассемблер, но это крайне трудно.

   Главное отличие объектной технологии от объектно-ориентированной заключается в наличии механизма наследования, и всех механизмов, которые вытекают из этого. Наследование означает такое отношение между объектами (отношение отец/потомок), когда один объект позаимствует структурную или функциональную часть одного или нескольких других объектов. Использование наследования приводит к появлению таких понятий как класс, иерархия "is-a" и полиморфизм.

   Принцип наследования позволяет упростить выражение абстракций, делает проект менее громоздким и более выразительным за счет того, что для определенных объектов можно выделить какую-то общую часть (структуру или поведение) и не переписывать ее, а занести в какой-то общий фрагмент, который принадлежит ко всем этим объектам. При отсутствии наследования, каждый объект станет самостоятельным блоком, и всегда будет разрабатываться "из нуля". В качестве такого обобщающего фрагменту стал класс, как новая фундаментальная абстракция языка. Структуры классов стали образовывать иерархию "is-a". В наследственной иерархии общая часть структуры и поведения сосредоточена в наиболее общем суперклассе. Суперклассы при этом отбивают наиболее общие, а подклассы - более специализированы абстракции, в которых члены суперкласса могут быть дополнены, модифицированные и даже спрятанные. Без наследования не возможен также принцип полиморфизма, который является найпотужнішим механизмом объектно-ориентированного программирования.


All rights reserved. © 2025
Конструктор сайтовuCoz