- •1.Понятие жизненного цикла программного обеспечения (по). Этапы разработки по.
- •Сравнение стратегий конструирования по.
- •4. Спиральная модель жизненного цикла разработки программного обеспечения б. Боэма.
- •5.Основные приемы экстремального программирования (xp).
- •1.Короткий цикл обратной связи:
- •7. Структура оконного приложения в среде Delphi.
- •8.Модули. Структура модуля. Использование модулей в приложении
- •9.Основные типы данных языка Delphi
- •10. Структурированные типы данных. Записи. Обращение к полям записей. Оператор with. Тип "запись" (record)
- •11. Структурированные типы данных. Записи. Вариантная часть записей.
- •Описание и использование подпрограмм в языке Паскаль. Формальные и фактические параметры. Параметры-значения и параметры-переменные.
- •Описание и вызов процедур и функций
- •13. Библиотека визуальных компонентов Delphi. Назначение vcl
- •Структура vcl
- •14. Основные события Delphi. Методы обработки событий.
- •15. Объектно-ориентированный подход при разработке программы. Основные принципы объектно-ориентированного программирования.
- •16. Определение класса и объекта.
- •Примеры Классов: Класс фигур:
- •17. Атрибуты доступа к элементам класса.
- •Пример: пример “атрибуты доступа” (лекция №__)
- •Структура проекта
- •Описание классов
- •Модуль Unit1
- •Модуль Unit2
- •18. Методы как составляющие элементы класса. Конструкторы и деструкторы.
- •Пример: пример № 1. “точка на прямой”
- •19. Методы как составляющие элементы класса. Модификаторы и селекторы пример № 3. Класс “товар”
- •20. Принцип инкапсуляции. (Забавная статья, но вроде понятно)
- •21. Принцип наследования.
- •Типы наследования
- •Простое наследование
- •Множественное наследование
- •Реализация наследования на примере языка Delphi.
- •Create; begin Inherited; // Всегда вызывается в начале конструктора ... End; Иерархия стандартных классов Delphi
- •Совместимость типов для классов в иерархии наследования. Преобразование и приведение типов.
- •Совместимость объектов различных классов
- •Контроль и преобразование типов
- •Обработка исключительных ситуаций. Стандартные классы исключений на примере языка Delphi.
- •Блок try … except
- •Блок try … finally
- •Описание и обработка пользовательских исключений на примере языка Delphi.
20. Принцип инкапсуляции. (Забавная статья, но вроде понятно)
Инкапсуляция
Инкапсуляция - первая парадигма объектно-ориентированного подхода. Парадигма - совокупность идей и понятий, определяющих стиль программирования. Объектно-ориентированный язык (например, Delphi) позволяет использовать соответствующие парадигмы, т.е. писать в объектно-ориентированном стиле.
Можно уподобить парадигмы программирования правилам спортивной игры. Совокупность идей и понятий, определяющих стиль игры. Мяч, ворота, игровое поле. Или: ворота, клюшка, шайба, коньки. Класс, объект, поле, метод, свойство. Таковы понятия объектно-ориентированной игры мозга.
Я иду в школу. Я (объект) иду (вызов метода) в школу (параметр метода, другой объект). Гоблин нападает на эльфа. Гоблин (объект) нападает (метод) на эльфа (параметр метода, другой объект). Мы воспринимаем образы, мы мыслим образами, мы разговариваем образами. Что тут нужно объяснять?
Инкапсуляция - «в капсуле». В оболочке. Нет более бесхозных переменных и функций. Они находятся внутри какого-нибудь класса. Класс - та самая оболочка. Класс в программном коде отражает образ и содержит в себе составляющие объекта. Проекция образа в мозге на программный код.
Код на Delphi скажет лучше длинных предложений.
Goblin1.Attack(Elf1); // Гоблин № 1 атакует Эльфа №1
А что такое «гоблин»?
Из чего формируется образ «гоблина»? Сила атаки, здоровье, возможность перемещаться, возможность атаковать другие объекты. Две переменные и две функции, объединенные общим понятием. Что такое: объединены общим понятием? С точки зрения написания объектно-ориентированного кода эти две переменные и две функции объявлены внутри класса.
В нашей голове нет бесхозных переменных (неких ячеек памяти с именем, способных хранить значение). Мы не думаем в категориях «функция» - набор действий, выполняемых над абстрактным набором входных параметров.
Мышление образами, программирование образами (классами и объектами) - более естественно, чем оперирование переменными и функциями. Нас так задумала природа.
А что такое «сокрытие»?
Странно, но тут единого мнения нет. Порой складывается впечатление, что сокрытие и есть инкапсуляция, а инкапсуляция нужна для сокрытия переменных или методов класса. Наверное, логично (исходя из значения слов) считать следующим образом.
Инкапсуляция - принцип программирования, когда переменные и функции (процедуры) помещаются в класс. Класс - ограниченная область программного кода, имеющая название, в которую помещены переменные и функции (процедуры). А смысл делать класс? Смысл только в том, чтобы максимально приблизить структуру программного кода к тем образам, которые у нас в голове. Как ни странно - для того, чтобы было проще программировать. Естественнее. Удобнее. Приятнее. Не надо ходить на руках или скакать на одной ноге. Делаем так, как нас задумала природа.
Поместили мы что-то в оболочку. В нашем случае переменные и функции (процедуры). Но часть из них нужно закрыть, чтобы не испортить работу. В автомобиле есть двигатель. Снаружи он закрыт капотом, а от салона изолирован различными панелями. Чтобы грязь не попадала. И чтобы пальцы в него не совали. Для блага же пассажиров. Двигатель находится в своем закрытом отсеке. А «наружу» выведены лишь кнопки, рычаги и педали. Их можно (и безопасно) трогать. С их помощью мы управляем автомобилем. Также и с классами. Часть переменных и функций скрываются во имя безопасности. Другая часть - специально делается доступной, открытой. Сокрытие - изоляция содержимого класса от внешнего мира (остального программного кода). Программист (создатель) класса сам должен решить, что спрятать для соблюдения безопасности, а что «вывести наружу» в качестве органов управления. Для Delphi часть содержимого класса прячется в разделе private (закрытый раздел), а часть - располагается под директивой public (открытый раздел).
Интерфейс
Интерфейс - открытая, доступная часть содержимого класса. Зачем часть содержимого класса открывается (делается доступной)? Чтобы с объектом можно было взаимодействовать. Взаимодействие с автомобилем выполняется посредством его интерфейса - руль, педали, рычаги, кнопки. Если неправильным образом спроектировать интерфейс, класс не будет работать. Если убрать педаль газа, то автомобиль не сдвинется с места. Однако выводить выхлопную трубу в салон тоже не стоит. Подобные рассуждения выглядят тривиально. Но это лишний раз доказывает всю тривиальность (в позитивном значении) сокрытия в рамках объектно-ориентированного подхода.