Содержание
- 2. Методы Объединение в объекте кода и данных называется инкапсуляцией.
- 3. Объекты TPerson и TStudeat написаны таким образом, что нет необходимости в прямом обращении к их внутренним
- 4. Инкапсуляция ТУРЕ Tperson = OBJECT Name : STRING[30]; Date : STRING[10]; Rate : REAL; PROCEDURE Init(Nm,Dt:STRING;
- 5. Инкапсуляция ТУРЕ TStudent = OBJECT(TPerson) Ball : REAL; PROCEDURE Init(Nm,Dt:STRING; Rt,Bl:REAL); FUNCTION GetBall : REAL; FUNCTION
- 6. ИНКАПСУЛЯЦИЯ Для экземпляра Student типа TStudent можно использовать набор методов для косвенной работы с полями данных,
- 7. Обратите внимание, что доступ к полям объекта осуществляется только с помощью методов этого объекта.
- 8. Полиморфизм
- 9. ПЕРЕОПРЕДЕЛЕНИЕ МЕТОДОВ При использовании стандартных средств Турбо Паскаля очень трудно, если вообще возможно, создавать гибкие процедуры,
- 10. Переопределение методов Эта проблема решается в ООП с помощью механизма наследования если определен порожденный тип, то
- 11. Для переопределения наследуемого метода просто описывается новый метод с тем же именем, что и наследуемый метод,
- 12. Переопределение методов Проиллюстрируем этот процесс на простом примере. TYPE TStudent = OBJECT(TPerson) Ball : REAL; PROCEDURE
- 13. ПЕРЕОПРЕДЕЛЕНИЕ МЕТОДОВ Чем TStudent похож на Tperson? Студент имеет все характеристики, которые используются для определения объекта
- 14. Переопределение методов PROCEDURE TStudent.Init(Nm,Dt:STRING; Rt,Bl:REAL); BEGIN TPerson.Init(Nm,Dt,Rt) ; Ball:=Bl; END; Т.к. TStudent определяет новое поле Ball,
- 15. Вместо того, чтобы непосредственно присвоить значения наследованным полям, таким как Name, Date и Rate, проще использовать
- 16. Переопределение методов Синтаксис вызова наследуемого метода следующий: Предок.Метод; где Предок — это идентификатор типа родительского объекта;
- 17. Переопределение методов Необходимо обратить внимание на то, что вызов переопределяемого метода не является обязательным. В общем
- 18. Переопределение методов Каждый порожденный тип объекта TPerson имеет свой метод GetSum, т.к. расчет производится в каждом
- 19. Примерный текст интерфейсной части модуля Persons UNIT Persons; INTERFACE TYPE TPerson = OBJECT PRIVATE Name: STRING[30];
- 20. Тексты методов GetSum Метод TStudent.GetSum, в котором учитывается средний балл: FUNCTION TStudent.GetSum : REAL; BEGIN GetSum
- 21. Переопределение методов Необходимо помнить, что хотя методы могут быть переопределены, поля данных переопределяться не могут. После
- 22. Все описанные до сих пор методы, относящиеся к типам объектов TPerson, TStudent, TStaff и TTeacher, являются
- 23. Наследование статических методов Рассмотрим процедуру ShowSum. Для объекта типа TStaff она имеет вид: PROCEDURE TStaff.ShowSum; BEGIN
- 24. НАСЛЕДОВАНИЕ СТАТИЧЕСКИХ МЕТОДОВ Есть ли необходимость выполнять в процедуре ShowSum какие-либо дополнительные действия? По сравнению с
- 25. Наследование статических методов Проблема заключается в следующем: Пока копия метода ShowSum не будет помещена в область
- 26. НАСЛЕДОВАНИЕ СТАТИЧЕСКИХ МЕТОДОВ Это объясняется способом, которым компилятор осуществляет вызов методов. Как и при вызове любой
- 27. Наследование статических методов При вызове код TStaff.ShowSum в свою очередь вызывает TStaff.GetSum, что и составляет проблему.
- 28. Наследование статических методов Вызывая методы, компилятор работает так:
- 29. Наследование статических методов
- 30. Наследование статических методов Если статический наследуемый метод найден и используется, то необходимо помнить, что вызываемый метод
- 31. Виртуальные методы и полиморфизм Статические методы являются таковыми в том же смысле, в каком статической является
- 32. Виртуальные методы и полиморфизм Виртуальные методы предоставляют чрезвычайно мощный инструмент для обобщения, называемый полиморфизмом. Полиморфизм является
- 33. Виртуальные методы и полиморфизм Описанная ранее простая иерархия геометрических фигур является хорошим примером полиморфизма в действии,
- 34. Раннее и позднее связывание Различие между вызовом статического метода и динамического метода в случае статического метода
- 35. Раннее и позднее связывание
- 36. Раннее и позднее связывание
- 37. Раннее и позднее связывание Процесс, с помощью которого вызовы статических методов связываются компилятором во время компиляции
- 39. Скачать презентацию