
- •Объектно-ориентированное программирование.
- •ОБЪЕКТНООРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.
- •Способ борьбы с этими неприятностями называется
- •ООП представляет собой способ программирования, который напоминает процесс человеческого мышления
- •Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
- •Начиная с версии 5.5, ТурбоПаскаль предоставляет программисту все средства объектноориентированного программирования которые встроены
- •ОБЪЕКТНООРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.
- •Что такое объекты?
- •ВЕСЬ ОКРУЖАЮЩИЙ НАС МИР СОСТОИТ ИЗ ОБЪЕКТОВ
- •ОБЪЕКТЫ ЯВЛЯЮТСЯ ВЫСШИМ УРОВНЕМ АБСТРАКЦИИ ДАННЫХ
- •ОБЪЕКТЫ МОГУТ НАСЛЕДОВАТЬ
- •Иерархия
- •ИЕРАРХИЯ ОБЪЕКТОВ
- •Иерархия объектов
- •Задавая себе приведенные выше вопросы, программист продвигается от вершины иерархического дерева данного класса
- •ИЕРАРХИЯ ОБЪЕКТОВ
- •При использовании ООП следует помнить утверждение:
- •Объектно ориентированное программирование является наилучшим инструментарием построения
- •Наследование
- •НАСЛЕДОВАНИЕ
- •Предположим, Вы хотите написать программу, которая подсчитывает размер стипендий и заработной платы в
- •TPerson
- •Предположим, что Ваша программа должна учитывать выплату
- •Однако, проявив немного сообразительности, можно сохранить тип TPerson путем создания поля типа TPerson
- •Необходимо установить, чем выплата денег студентам отличается от выплаты другим лицам, а в
- •Для студента тип
- •Одним из элементов языка Турбо-Паскаль является новая категория структуры данных, связанная с записями,
- •В нашем примере два связанных типа объектов
- •Все типы, наследующие тип TPerson, называются его дочерними типами,
- •Экземпляры типа
- •Экземпляры типа OBJECT описываются так же, как в Паскале описывается любая статическая или
- •Поля объектов
- •К полю объекта можно
- •К полям объекта можно обратиться непосредственно, но лучше этого избегать.

НАСЛЕДОВАНИЕ
Важной особенностью объектно ориентированной методологии является механизм, с помощью которого сложные типы данных могут наследовать характеристики более простых, т.е. более общих типов.
Этим механизмом является наследование.
В терминах Паскаля объект наиболее схож с типом RECORD, который является оболочкой для объединения нескольких связанных элементов под одним именем.
21

Предположим, Вы хотите написать программу, которая подсчитывает размер стипендий и заработной платы в нашем университете.
Запись можно организовать |
|
|
следующим образом: |
TPerson = RECORD |
|
|
Name : STRING[30]; |
|
|
Date |
: STRING[10]; |
|
Rate |
: REAL; |
|
END; |
|
где переменная TPerson определена как запись. |
Каждое значение присвоенное переменной TPerson, является экземпляром типа RECORD.
Наследование |
22 |

TPerson
23

Предположим, что Ваша программа должна учитывать выплату |
денег студентам, преподавателям и сотрудникам кафедры. |
В каждой группе выплаты производятся особым способом. |
Например, для получения данных о том, сколько денег должен получить студент, необходимо, в первую очередь, знать его средний балл.
Можно создать другой тип записи для каждой группы.
Можно построить запись TStudent вида:
TStudent = RECORD |
|
Name : STRING[30]; |
|
Date |
: STRING[10]; |
Rate |
: REAL; |
Ball |
: REAL; |
END; |
|
Наследование |
24 |

Однако, проявив немного сообразительности, можно сохранить тип TPerson путем создания поля типа TPerson внутри типа TStudent
TStudent = RECORD |
|
Student: Tperson; |
|
Ball |
: REAL; |
END; |
|
Такая конструкция удобна и проста, поэтому постоянно используется в программировании.
Но она не учитывает специфику данных, обрабатываемых в программе.
Наследование |
25 |

Необходимо установить, чем выплата денег студентам отличается от выплаты другим лицам, а в чем их сходство.
Студент, как и преподаватель или другой служащий кафедры, имеет:
1. |
имя, |
2. |
фамилию, |
3. |
год рождения |
4. |
ему полагается определенная сумма денег. |
Обратите внимание на то, что все указанные в примере |
группы объединены по некоторым основным признакам, |
характеризующим объект. |
Наследование |
26 |

Для студента тип
Наследование |
27 |

Одним из элементов языка Турбо-Паскаль является новая категория структуры данных, связанная с записями, которая значительно мощнее предыдущей.
Типы данных в этой новой категории определяются с помощью нового зарезервированного слова OBJECT.
Объектный тип может быть определен как полный, самостоятельный тип, подобно описанию записей в Паскале, но он может определяться и как потомок существующего типа объекта путем помещения имени
родительского типа в скобки после зарезервированного слова
OBJECT.
Наследование |
28 |

В нашем примере два связанных типа объектов |
|
могли бы определяться следующим образом: |
|
ТУРЕ |
|
TPerson = OBJECT |
|
Name |
: STRING[30] ; |
Date |
: STRING[10]; |
Rate |
: REAL; |
END; |
|
TStudent = OBJECT(TPerson) |
|
Ball |
: REAL; |
END; |
|
Здесь TPerson является родительским типом, a TStudent — дочерним. |
Фактически, этот процесс может продолжаться сколь угодно долго. К дочернему типу TStudent при необходимости можно определить еще один дочерний тип.
Чаще всего создание объектно-ориентированных прикладных программ состоит в построении такой иерархии объектов.
Наследование |
29 |

Все типы, наследующие тип TPerson, называются его дочерними типами,
но TStudent является непосредственным дочерним типом от TPerson,
a TPerson является непосредственным родителем типа
TStudent.
Тип объекта (так же как и подкаталог DOS) может иметь любое число непосредственных дочерних типов и только одного непосредственного родителя.
Наследование |
30 |