
- •Определение. История
- •Этапы разработки программы
- •Состав языка Pascal
- •Типы данных в Pascal
- •Операции над переменными целого типа
- •16 Вопрос
- •17 Вопрос
- •18 Вопрос
- •19.Конструкторы и деструкторы классов. Синтаксис, пример применения.
- •Свойства
- •20.Зоны видимости полей и методов. Понятие «свойства» класса.
16 Вопрос
Концепция объектной модели
Объектно-ориентированный анализ (ООА) –> объектно-ориентированный дизайн (ООД) –> объектно-ориентированное программирование (ООП)
ООА – это те методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выделенных в предметной области.
ООД – это методология проектирования, соединяющая в себе процесс объектной декомпозиции системы, а также приемы представления логической и физической, статической и динамической модели проектируемой системы.
ООП – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром ориентированного класса, а классы образуют иерархию наследования.
ОО подход использует в качестве базовых элементов объекты, а не алгоритмы.
Каждый объект является экземпляром некоторого множества объектов. Множество – класс. Элемент массива – объект.
Классы организованны иерархически.
Описание принципов объектного подхода
Базовые 1-4, дополнительные 5-7:
Абстрагирование
Инкапсуляция
Модульность
Иерархия
Типизация
Параллелизм
Сохранность
Базовые элементы объектного подхода
Абстракция выделяет существенные характеристики некоторого объекта, отличающих его от всех других видов объектов, и таким образом определяет его концептуальные границы сточки зрения работодателя.
«бритва» Оката – незачем множить сущности без надобности.
Если уже существует абстракция удовлетворяющая исследователя, не нужно создавать новую.
Виды абстракций:
Сущности – объект представляет собой полезную модель некоторой сущности в предметной области.
Поведения – объект состоит из обобщенного множества операций.
Виртуальной машины – объект включает в себя операции, которые используются более высоким уровнем управления, либо сами используют операции более низкого уровня.
Произвольная – объект включает в себя некоторые операции не имеющие друг с другом ничего общего.
Контрактная модель программирования
Объект клиент – тот, кто пользуется услугами сервера.
Объект сервер – тот, кто оказывает услуги другим объектам.
Для каждой операции, которая совершается объектом можно выделить 2 условия:
Предусловие –
Постусловие –
x>=0 – предусловие;
y>=0 – постусловие.
Инкапсуляция
(разделение)
Интерфейс
Реализация
- недоступная секция;
Инкапсуляция – процесс отделения друг от друга элементов объекта отвечающих за его устройство и поведение. Инкапсуляция служит для того, чтобы изолировать контрактное обязательство абстракции от их реализации.
Модульность
Модульность – это разделение программы на фрагменты, которые компилируются по-отдельности, но могут устанавливать связи с другими объектами.
Модульность – это свойство системы, которое было разделено на внутренне-связанные, но слабо связанные между собой модули.
Принципы...
Типизация
Тип – способ защиты от использования объектов одного класса вместо другого или способ хотя бы управлять таким использованием.
Выделяют языки сильной типизации и слабой типизации.
Сильная типизация – контроль типов на этапе компилирования.
Слабая типизация – контроль типов не производится. (язык Eiffel)
Плюсы сильной типизации:
Предохранение от ошибки типов;
Механизм связывания устанавливает конкретный момент, в который происходит ассоциирование переменных с их типами;
Раннее связывание – память выделяется по ходу компиляции и не меняется в ходе выполнения программы.
Позднее связывание – выделение памяти по ходу выполнения программы.
Преимущество строго типизированных языков
Отсутствие контроля типов может приводить к загадочным событиям (сбоям в программе) в программе при ее выполнении.
В большинстве систем процессы редактирования, компиляция, отладка утомительные, поэтому раннее обнаружение ошибок очень полезно.
Объявление типов облегчит процесс документирования программы.
Многие компиляторы генерируют код быстрее, если заранее знают типы.
Полиморфизм – это механизм, в котором одно и то же имя может обозначать объекты разных типов, но, имея общего предка, все они имеют общее подмножество операций, которое над ними можно выполнять.
Параллелизм – это способность программы выполнять несколько вычислительных потоков одновременно.
Сохраняемость – это способность объекта существовать во времени, переживая породивший его процесс, и в пространстве, перемещаясь из своего начального адресного пространства.