OOAD - объектно-ориентированные принципы
Принципы объектно-ориентированных систем
Концептуальная основа объектно-ориентированных систем основана на объектной модели. В объектно-ориентированной системе есть две категории элементов:
Major Elements- Под мажором подразумевается, что если в модели нет ни одного из этих элементов, она перестает быть объектно-ориентированной. Четыре основных элемента:
- Abstraction
- Encapsulation
- Modularity
- Hierarchy
Minor Elements- Под второстепенными подразумевается, что эти элементы являются полезной, но не обязательной частью объектной модели. Три второстепенных элемента:
- Typing
- Concurrency
- Persistence
Абстракция
Абстракция означает сосредоточение внимания на основных характеристиках элемента или объекта в ООП, игнорирование его посторонних или случайных свойств. Существенные особенности относятся к контексту, в котором используется объект.
Грэди Буч определил абстракцию следующим образом:
«Абстракция обозначает основные характеристики объекта, которые отличают его от всех других видов объектов и, таким образом, обеспечивают четко определенные концептуальные границы относительно точки зрения зрителя».
Example - При создании класса «Студент» атрибуты enrolment_number, name, course и address включаются, в то время как такие характеристики, как pulse_rate и size_of_shoe, исключаются, поскольку они не имеют значения с точки зрения учебного заведения.
Инкапсуляция
Инкапсуляция - это процесс связывания атрибутов и методов вместе в классе. Благодаря инкапсуляции внутренние детали класса могут быть скрыты извне. У класса есть методы, которые предоставляют пользовательские интерфейсы, с помощью которых могут использоваться услуги, предоставляемые классом.
Модульность
Модульность - это процесс декомпозиции проблемы (программы) на набор модулей с целью уменьшения общей сложности проблемы. Буч определил модульность как -
«Модульность - это свойство системы, разложенной на набор связанных и слабо связанных модулей».
Модульность неразрывно связана с инкапсуляцией. Модульность может быть визуализирована как способ отображения инкапсулированных абстракций в реальные физические модули, обладающие высокой связностью внутри модулей, а их межмодульное взаимодействие или связь низка.
Иерархия
По словам Грэди Буча, «Иерархия - это ранжирование или упорядочение абстракций». Посредством иерархии система может состоять из взаимосвязанных подсистем, которые могут иметь свои собственные подсистемы и так далее, пока не будут достигнуты компоненты самого низкого уровня. Он использует принцип «разделяй и властвуй». Иерархия допускает повторное использование кода.
В OOA есть два типа иерархий:
“IS–A” hierarchy- Он определяет иерархические отношения в наследовании, посредством чего от суперкласса может быть получено несколько подклассов, которые снова могут иметь подклассы и так далее. Например, если мы производим класс Rose от класса Flower, мы можем сказать, что роза «есть» цветок.
“PART–OF” hierarchy- Он определяет иерархические отношения в агрегации, посредством которых класс может состоять из других классов. Например, цветок состоит из чашелистиков, лепестков, тычинок и плодолистиков. Можно сказать, что лепесток - это «часть» цветка.
Набор текста
Согласно теориям абстрактного типа данных, тип - это характеристика набора элементов. В ООП класс визуализируется как тип, обладающий свойствами, отличными от любых других типов. Типизация - это реализация представления о том, что объект является экземпляром одного класса или типа. Это также предписывает, что объекты разных типов не могут быть взаимозаменяемыми; и могут быть заменены только очень ограниченным образом, если это абсолютно необходимо.
Есть два типа набора текста:
Strong Typing - Здесь операция над объектом проверяется во время компиляции, как в языке программирования Eiffel.
Weak Typing- Здесь сообщения можно отправлять любому классу. Операция проверяется только во время выполнения, как в языке программирования Smalltalk.
Параллелизм
Параллелизм в операционных системах позволяет одновременно выполнять несколько задач или процессов. Когда в системе существует один процесс, говорят, что существует единственный поток управления. Однако в большинстве систем есть несколько потоков, некоторые из которых активны, некоторые ждут ЦП, некоторые приостановлены, а некоторые завершены. Системы с несколькими процессорами по своей природе допускают одновременные потоки управления; но системы, работающие на одном ЦП, используют соответствующие алгоритмы, чтобы предоставить потокам равное время ЦП, чтобы обеспечить параллелизм.
В объектно-ориентированной среде есть активные и неактивные объекты. Активные объекты имеют независимые потоки управления, которые могут выполняться одновременно с потоками других объектов. Активные объекты синхронизируются друг с другом, а также с чисто последовательными объектами.
Упорство
Объект занимает область памяти и существует в течение определенного периода времени. В традиционном программировании продолжительность жизни объекта обычно равна продолжительности выполнения программы, которая его создала. В файлах или базах данных продолжительность жизни объекта больше, чем продолжительность процесса создания объекта. Это свойство, благодаря которому объект продолжает существовать даже после того, как его создатель перестает существовать, известно как постоянство.