L2 - Object-Oriented programming.pptx
- Количество слайдов: 30
Лекция 2 Объектно-ориентированное программирование Банокин П. И. pavel 805@gmail. com
Парадигмы программирование • Процедурное программирование • Объектно-ориентированное программирование • Событийно-ориентированное программированние • Компонентно-ориентированное программирование
Объектно-ориентированное программирование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
ООП • • • Абстракция Инкапсуляция Наследование Полиморфизм Класс Объект класса
Абстракция • Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. • Абстракция — это набор всех таких характеристик
Наследование • Если класс-родитель не указывается, то базовым классом по умолчанию становится класс TObject • TChild. Class = class(TObject).
Наследование • Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя классародителя: • TChild. Class = class (TParent. Class) Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может дополнять их новыми.
Наследование
Инкапсуляция • Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя
Уровни инкапсуляции • Раздел public. Члены класса, находящиеся в данном разделе, доступны из любой точки программы. • Раздел private. Этот раздел накладывает самые жесткие ограничения на видимость указанных в нем членов класса. Они доступны внутри класса
Уровни инкапсуляции • Раздел protected. Видимость членов класса, расположенных в этом разделе, совпадает с видимостью раздела private с единственным отличием. Члены класса раздела protected доступны также внутри методов классов, являющихся наследниками данного класса и описанных в других модулях.
Полиморфизм • Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта
Полиморфизм • Полиморфизм - это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объектепотомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.
Класс • Класс – модель ещё не существующей сущности, описанная на языке программирования • Объект класса – сущность в памяти вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототип – Переменная с типом конкретного класса
Класс • Класс взаимодействуют путем обмена сообщений: – Вызывают методы других классов • Отправляют входные данные • Получают результат функции
Класс • type имя-класса = class(имя-родительского-класса) список-членов-класса; end;
Класс • Обращение к полям Class 1. First. Name : =First. Name; • Обращение к методам Name 1 : = Class 1. Get. Name();
• type TMy. Class = class Count: Integer; Name: String procedure Show. My. Class( Dis: Boolean ); function Get. Count: Integer; end;
UML-диаграмма классов (UML-class diagramm) • Используется для графического представления классов при создании документации
Реализации методов • При описании класса в нем указывается только сигнатура метода: • type TMy. Class = class public procedure Show. My. Class( param 1: Boolean ); function Get. Count: Integer; end;
Реализации методов • После того как в модуле описан новый класс, в нижеследующей части исходного текста необходимо описать реализацию всех его методов (если они есть). Чтобы компилятор понял, к какому классу относится конкретная подпрограмма, перед ее названием указывается имя соответствующего класса и точка
Реализации методов type TMy. Class = class public procedure Show. My. Class( param 1: Boolean function Get. Count: Integer; end; function TMy. Class. Get. Count: Integer; begin Result : = Count end; );
Указатель self – указатель на экземпляр класса function TMy. Class. Get. Count: Integer; begin Result : = Self. Count end;
Методы классов Особенность методов заключается в том, что методы классов разрешается вызывать, используя для этого вызова не объект, а класс. Это означает, что подобные методы немогут обращаться к полям класса — ведь поля существуют, только когда существует объект (экземпляр класса), а методы в виде программного кода, созданного на этапе компиляции, присутствуют в памяти компьютера постоянно. Однако вызывать таким образом можно только методы, описанные с помощью ключевого слова class, указываемого перед заголовком подпрограммы. Это нужно, чтобы компилятор проверил, насколько корректно реализован соответствующий метод, в частности, не происходит ли в нем обращения к полям и свойствам класса.
Методы классов • type TMy. Class = class Item: integer; public class function Get. Item: integer; end; • class function TMy. Class. Get. Item: integer; begin. . . end;
Конструкторы и деструкторы В состав любого класса входят два специальных метода – конструктор и деструктор. У класса TObject эти методы называются Create и Destroy. Конструктор распределяет объект в динамической памяти и помещает адрес этой памяти в переменную Self, которая автоматически объявляется в классе. Деструктор удаляет объект из кучи.
Конструкторы и деструкторы Обращение к конструктору должно предварять любое обращение к полям и некоторым методам объекта. По своей форме конструкторы и деструкторы являются процедурами, но объявляются с помощью зарезервированных слов Constructor и Destructor
Конструкторы и деструкторы • Type TNClass=class Age : Integer; Constructor Create(Value: Integer); Destructor Destroy; End;
Конструкторы и деструкторы • Var Soldjer: TNClass; Begin Soldjer: =TNClass. Create; Soldjer. Age: =20; . . . Soldjer. Free; End.
Конструкторы и деструкторы • constructor TFruit. Create; begin // Сначала выполняется родительский конструктор (TObject) inherited; // Вызов родительского метода Create // Теперь устанавливаем имя fruit, по умолчанию self. name : = 'Fruit'; end; // Создание объекта fruit - версия с параметрами constructor TFruit. Create(name: string); begin // Не cможет выполниться родительский конструктор - параметры отличаются // И сохраняем имя fruit self. name : = name; end;
L2 - Object-Oriented programming.pptx