Содержание
- 2. Введение. Эволюция технологии разработки ПО. Процедурная и объектная декомпозиция «Стихийное» программирование – до середины 60-х годов
- 3. Эволюция технологии разработки ПО (2) 2. Структурный подход к программированию - 60-70-е годы ХХ века –
- 4. Эволюция технологии разработки ПО (3) Модульное программирование – выделение групп подпрограмм, использующих общие глобальные данные в
- 5. Эволюция технологии разработки ПО (4) 3. Объектный подход к программированию – с середины 80-х до наших
- 6. Эволюция технологии разработки ПО (5) Компонентный подход – с конца 90-х годов ХХ века (COM-техноло-гия, Corba,
- 7. Пример Разработать программную систему, которая для указанной функции на заданном отрезке: строит таблицу значений с определенным
- 8. Формы интерфейса пользователя Программа исследования функций. Введите функцию или слово «Конец»: y = cos(x) – 1
- 9. Диаграмма состояний интерфейса пользователя Ввод функции Меню Таблица Корни Экстремумы 1 2 3 4 «Конец»
- 10. Разработка схем алгоритмов методом пошаговой детализации Начало F, a, b F =“End” Analyze (fun,a,b) да нет
- 11. Схема структурная программы Main Program Translate Analyze Roots Extremes Table Процедурная декомпозиция – процесс разбиения программы
- 12. Объектная декомпозиция Объектная декомпозиция – процесс представления предметной области задачи в виде отдельных функциональных элементов (объектов
- 13. Реализация объектов предметной области Класс – это структурный тип данных, который включает описание полей данных, а
- 14. Основные принципы, на которых базируется объектно-ориентированное программирование абстрагирование – выделение абстракций в предметной области задачи; под
- 15. Методы построения классов Наследование – механизм, позволяющий строить класс на базе более простого посредством добавления полей
- 16. Глава 7 Средства объектно-ориентированного программирования МГТУ им. Н.Э. Баумана Факультет Информатика и системы управления Кафедра Компьютерные
- 17. 7.1 Определение класса, инкапсуляция полей и методов класса. Объявление объектов и инициализация полей C точки зрения
- 18. Неявный параметр Self Любой метод неявно получает параметр Self – ссылку (адрес) на поля объекта, и
- 19. Объявление объектов класса Примеры: Var A:TRoom; {объект А класса TRoom} B:array[1..5] of TRoom; {массив объектов типа
- 20. Инициализация полей прямой записью в поле Program Ex_7_01a; {$APPTYPE CONSOLE} Uses SysUtils; Type TRoom = object
- 21. Инициализация при объявлении объекта Program Ex_07_01b; {$APPTYPE CONSOLE} Uses SysUtils; Type TRoom = object length, width:single;
- 22. Инициализация посредством метода Program Ex_07_01c; {$APPTYPE CONSOLE} Uses SysUtils; Type TRoom = object length, width:single; function
- 23. Операция присваивания объектов Над объектами одного класса определена операция присваивания. Физически при этом происходит копирование полей
- 24. 7.2 Ограничение доступа к полям и методам Ограничение в пределах модуля, а не в пределах класса!
- 25. Ограничение доступа (2) Program Ex_7_02; {$APPTYPE CONSOLE} Uses SysUtils, Room in 'Room.pas'; Var A:TRoom; Begin A.Init(3.5,5.1);
- 26. 7.3 Наследование Наследование – механизм конструирование новых более сложных производных классов из уже имеющихся базовых посредством
- 27. Наследование (2) Procedure TVRoom.NewInit; Begin Init(l,w); height:=h; End; Function TVRoom.V; Begin Result:=Square*height; End; Var A:TVRoom; Begin
- 28. Присваивание объектов иерархии Допустимо присваивать переменной типа базового класса значение переменной типа объекта производного класса. Var
- 29. Присваивание указателей в иерархии Допустимо указателю на объект базового класса присваивать адрес объекта производного класса. Однако
- 30. 7.4 Композиция Композиция – включение объектов одного класса в объекты другого. Реализуется механизмом поддержки объектных полей.
- 31. Композиция (2) Procedure TFlat.Init; Var i:byte; Begin n:=an; for i:=1 to n do rooms[i].Init(ar[i-1].length, ar[i-1].width); End;
- 32. Композиция (3) Var mas:array[1..3] of TRoom= ((length:2.5; width:3.75), (length:2.85; width:4.1), (length:2.3; width:2.8)); Var F:TFlat; Begin F.Init(3,mas);
- 33. 7.5 Наполнение (агрегация) Наполнение – механизм построения классов, при котором объекты строящегося класса могут включать неопределенное
- 34. Наполнение (2) Program Ex_7_05; {$APPTYPE CONSOLE} Uses SysUtils; Type TWin = object {класс Окно} width,height:single; Function
- 35. Наполнение (3) Type pW = ^SWin; SWin = record // тип элемента списка win:TWin; p:pW; end;
- 36. Наполнение (4) Procedure TWRoom.Init(n:byte;Const ww:array of TWin); Var i:byte; q:pW; Begin windows:=nil; if n 0 then
- 37. Наполнение (5) // процедура Done освобождает выделенную память Procedure Done; Var q:pW; Begin while windows nil
- 38. Наполнение (6) Function TWRoom.WinSquare; Var q:pW; Begin Result:= 0; q:=windows; if q nil then while q
- 39. 7.6 Простой полиморфизм Простой (статический) полиморфизм – механизм переопределения методов при наследовании, при котором связь метода
- 40. Простой полиморфизм (2) Procedure TVRoom2.Init; Begin inherited Init(l,w); { TRoom.Init(l,w);} height:=h; End; Function TVRoom2.Square; Begin Result:=2*(inherited
- 41. Обращение объекта производного класса к переопределенному методу базового класса в программе При необходимости обращении к переопределенному
- 42. 7.7 Сложный (динамический) полиморфизм. Конструкторы Program Ex_7_07; {$APPTYPE CONSOLE} Uses SysUtils; Type TRoomP=object length, width:single; function
- 43. Сложный полиморфизм (2) Function TRoomP.Square; Begin Result:= length* width; End; Procedure TRoomP.Print; Begin WriteLn('Square =', Square:6:2);
- 44. Сложный полиморфизм (2) Function TVRoomP.Square; Begin Square:=2*(inherited Square+height*(length+width)); End; Var A:TRoomP; B:TVRoomP; Begin A.Init(3.5,5.1); A.Print; B.Init(3.5,5.1,2.7);
- 45. Пояснение к ошибке При позднем связывании нужный аспект полиморфного метода определяется на этапе выполнения программы по
- 46. Реализация сложного полиморфизма Для организации сложного полиморфизма необходимо: 1) переопределяемые методы описать служебным словом virtual; 2)
- 47. Различие раннего и позднего связывания Раннее связывание – адрес метода определяется на этапе компиляции по объявленному
- 48. Исправленный пример Unit RoomP; interface Type TRoomP=object length, width:single; function Square:single; virtual; procedure Print; constructor Init(l,w:single);
- 49. Исправленный пример (2) implementation Function TRoomP.Square; Begin Result:= length* width; End; Procedure TRoomP.Print; Begin WriteLn('Square =',
- 50. Исправленный пример (3) Program Ex_7_07a; {$APPTYPE CONSOLE} Uses SysUtils, RoomP in 'RoomP.pas'; Var A:TRoomP; B:TVRoomP; Begin
- 51. 3 случая обязательного использования сложного полиморфизма 1-й случай – если наследуемый метод для объекта производного класса
- 52. 2-й случай Program Ex_7_07b; {$APPTYPE CONSOLE} Uses SysUtils, RoomP in 'Ex_07_07\RoomP.pas'; Var pA: ^TRoomP; B:TVRoomP; Begin
- 53. 3-й случай. Процедура с полиморфным объектом Program Ex_7_07c; {$APPTYPE CONSOLE} Uses SysUtils, RoomP in 'Ex_08_07\RoomP.pas'; Procedure
- 54. Функция определения типа полиморфного объекта TypeOf( ):pointer – возвращает адрес ТВМ класса. Если адрес ТВМ объекта
- 55. Свойства виртуальных методов класса позднее связывание требует построения ТВМ, а следовательно больше памяти; 2) вызов виртуальных
- 56. 7.8 Динамические полиморфные объекты. Деструкторы. Динамические поля Создание полиморфных объектов: Функция New( [, ]) – возвращает
- 57. Динамические полиморфные объекты (2) Program Ex_7_08; {$APPTYPE CONSOLE} Uses SysUtils; Type pTRoomD = ^TRoomD; TRoomD =
- 58. Динамические полиморфные объекты (3) Function TRoomD.Square; Begin Result:= length* width; End; Constructor TRoomD.Init; Begin length:=l; width:=w;
- 59. Динамические полиморфные объекты (4) Var pA: pTRoomD; pB:pTVRoomD; Begin {указатель базового типа, объект базового типа} pA:=New(pTRoomD,Init(3.5,5.1));
- 60. Динамические поля в объектах Program Ex_7_09; {$APPTYPE CONSOLE} Uses SysUtils; Type pTRoomD=^TRoomD; TRoomD=object length, width:single; function
- 61. Динамические поля в объектах (2) Function TRoomD.Square; Begin Square:= length* width; End; Constructor TRoomD.Init; Begin length:=l;
- 62. Динамические поля в объектах (3) Var A:TBRoomD; pB1:pTBRoomD; pB2:pTRoomD; Begin {статический объект с динамическим полем} A.Init(3.2,5.1,2.5,1);
- 64. Скачать презентацию

















![Объявление объектов класса Примеры: Var A:TRoom; {объект А класса TRoom} B:array[1..5] of](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1126439/slide-18.jpg)












![Композиция (3) Var mas:array[1..3] of TRoom= ((length:2.5; width:3.75), (length:2.85; width:4.1), (length:2.3; width:2.8));](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1126439/slide-31.jpg)






























Крупнейшие мировые хранилища памятников книжной культуры
UA-IX Проблемы внедрения протокола IPv6 в Украине
4eb6bf5c-266f-4f40-8f94-f85fa7e48a6c
ООО Айти-Услуги. Разработка программного обеспечения
Предпроектная стадия создания информационной системы
Базовые типы и операторы
Компоненты ПК
Инфо-Импульс
Кодирование и декодирование сообщений
Информационные технологии в обучении химии
Вычислительная техника
Технические средства компьютерных систем. Тема 2
Совершенствование системы связи и оперативного управления пожарно-спасательного гарнизона СВАО города Москвы
The UML
Логическое проектирование БД
Автоматизированная система удаленного рабочего процесса сотрудников предприятия
Программирование на языке Python
Основы построения систем оповещения
Уроки по spike prime
Элементы алгебры логики. Математические основы информатики
Базы данных
Операционные системы
Свертка. Субдискретизация. Структура VGG-16
Основы программирования. Управление: IF, GOTO, DO WHILE, WHILE, RETURN, CONTINUE, BREAK, SWITCH
南投縣教育網路專案 建置說明
HTMLTables
Жизненные ситуации и онлайн сервисы
Информация и управление