![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Успадкування. Його призначення, види та правила використання.Содержание книги
Поиск на нашем сайте
Успадкування – це можливість створювати нові класи на основі вже існуючих або власних класів. При цьому новий клас (нащадок) буде мати всі поля, методи і властивості існуючого класу (предка). Клас, у якому є метод із специфікатором class є абстрактним і від нього не можна створити об’єкт. Проте від цього класу можна створити нащадка і зробити його реалізацію. Успадкування дозволяє: - до класу-предка додавати нові поля, методи і властивості; - перекривати поля, методи і властивості предка; - перевизначати в нащадку методи з цими самими іменами і параметрами, але з іншою реалізацією тіла методу; - перевантажувати метод, залишаючи ім’я, але змінюючи список параметрів. Для організації всіх названих операцій у Delphiвикористовують ключові слова virtual, override, overload, dynamic, reintroduce. Метод класу, їхнє призначення та правила використання. Інколи можна зустріти опис процедури або функції перед якою стоїть ключове слово Class, в інших мовах його називають абстрактним. Це метод який для запуску його на виконання не вимагає створення обєкту. TmyForm=Class(TForm) Class Procedure MessageCreate; End; Class Procedure TmyForm.MessageCreate; Begin End; Прикладом подібного методу є конструктор. Класи у яких є подібні методи називають абстрактними бо від них не можна створити обєкту.
Віртуальні та динамічні методи, їхнє призначення та використання Статичні методи зручні, коли в програмі заздалегідь відомо, які типи об'єктів будуть використовуватися, і приведення типів, як правило, не потрібно. У ряді випадків, особливо у великих проектах, часто доводиться зберігати в змінні об'єкти-нащадки (як у прикладі з TCar і TMAZ), причому конкретний тип цих об'єктів може бути невідомий. Тому в Object Pascal реалізований новий тип методів - віртуальні методи (для їхнього опису існує зарезервоване слово virtual). Описати віртуальний метод можна так. type
Такі методи в класах-нащадках можуть бути перекриті методами з однойменними заголовками. Щоб явно вказати компілятору, що визначений метод перекриває віртуальний метод батька, треба використовувати ключове слово override. type
Тепер у наведеному прикладі можна не виконувати приведення типів. Під час роботи програми вона самостійно визначить тип збереженого в змінній Car об'єкта і викличе потрібний метод.
Car:= TMAZ.Create;
Викличеться метод Move класу TMAZ. Якщо ж цей метод не перекрити (не вказати ключове слово override), то викличеться метод Move класу TCar. Замість ключового слова virtual можна застосовувати ключове слово dynamic, що виконує ті ж функції й описує метод як динамічний. type
Різниця між віртуальними і динамічними методами полягає тільки в деталях програмної реалізації. Віртуальні методи оптимізовані для максимальної швидкодії, динамічні - для максимальної економії пам'яті (створення компактного коду). Абстрактні методи. У деяких випадках немає змісту виконувати реалізацію визначених методів базового класу, наприклад, коли всі реалізації деякого методу сильно відрізняються одне від одного, а метод батьківського класу не використовується. Разом з тим відповідний метод зобов'язаний бути реалізований у кожному з класів-нащадків. Такий метод треба оголосити в батьківському класі як абстрактний. type
Тепер описувати реалізацію методу TStudent.Name не треба. Абстрактним може бути тільки динамічний або віртуальний метод.
Що таке поліморфізм. Види поліморфізму.
Поліморфі́зм — концепція в програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих типів. В контексті об'єктно-орієнтованого програмування, найпоширенішим різновидом поліморфізму є здатність екземплярів підкласу грати роль об'єктів батьківського класу, завдяки чому екземпляри підкласу можна використовувати там, де використовуються екземпляри батьківського класу.[1] Прикладом поліморфізму в більшості мов програмування є бінарний оператор +, який може мати своїми аргументами дані різного типу: цілі числа, числа з плаваючою точкою, комплексні числа навіть рядки: 1 + 2 - операнди цілого типу, результат цілого типу. 1.2 + 1.0e3 - операнди дійсних типів, результат дійсного типу "коля" + "маня" - операнди рядки, результат конкатенований рядок Поліформізм реалізується в багатьох мовах програмування за домогою перевантаження функцій. Характеристики
Поліморфізм — один з трьох найважливіших механізмів об'єктно-орієнтованого програмування. Поліморфізм дозволяє писати більш абстрактні програми і підвищити коефіцієнт повторного використання коду. Спільні властивості об'єктів об'єднуються в систему, яку можуть називати по різному: інтерфейс, клас. Спільність має зовнішнє і внутрішнє вираження. Зовнішня спільність проявляється як однаковий набір методів з однаковими іменами і сигнатурами (типами аргументів і результатів). Внутрішня спільність є однакова функціональність методів. Її можна описати інтуїтивно виразити у вигляді строгих законів, правил, яким повинні підкорятись методи. Можливість приписувати різну функціональність одному методу (функції, операції) називається перевантаженням методу (функції, операції). Види поліморфізму: - Статичний і динамічний поліморфізм - Поліморфізм-перевантаження - Поліморфізм включення - Поліморфізм перевизначення - Параметричний поліморфізм Ієрархія стандартних класів Delphi
Клас TObject: Містить конструктор Create, деструктор Destroy; virtual Free-знищує елемент якщо він був створений DefaultHandler –обробляє повідомлення за замрвчуванням TPersistant – забезпечує коректну роботу ObjectInspector; published TComponent – від нього успадковується вся палітра компонент і клам Tapplication TControl – визначає методи обробки повідомлень від мишки і клавіатури TWinControl - відповідає за створення віконної системи Delphi 30.Напишіть програму Sphere! program Project7;
{$APPTYPE CONSOLE}
{$R *.res}
uses SysUtils;
Const Pi=3.14; Type Sphere = class(Tobject) private R:real; public
Constructor Creat (x:Real); Procedure SetRadius(NewRadius:real); Function GetRadius:real; Function GetDiametr:real; Function GetLKola:real; Function GetArea:real; Function GetVolume:real; Procedure DisplayStatistic; End; Procedure Sphere.SetRadius(NewRadius:Real); Begin if R>0 then R:=NewRadius else R:=1; End; Constructor Sphere.Creat(x: Real); Begin R:=x; End; Function Sphere.GetRadius; Begin GetRadius:=R; End; Function Sphere.GetDiametr; Begin GetDiametr:=2.0*R; end; Function Sphere.GetLKola; Begin GetLKola:=Pi*GetDiametr; end; Function Sphere.GetArea; Begin GetArea:=4.0*Pi*R*R; End; Function Sphere.GetVolume; Begin GetVolume:=(4.0*Pi*R*R*R)/3.0; End; Procedure Sphere.DisplayStatistic; Begin Writeln('Radius=',GetRadius); Writeln('Diametr=',GetDiametr); Writeln('Lenght=',GetLKola:10:4); Writeln('Area=',GetArea:10:4); Writeln('Volume=',GetVolume:10:4); End; Var MySphere:Sphere; nSphere: Sphere; newRadius: Real; T:integer; Begin Write('My Radius='); read(newRadius); MySPhere:=Sphere.Creat(newRadius); nSphere:=Sphere.Creat(6.0); MySphere.SetRadius(newRadius); Writeln(pi*nSphere.GetRadius); MySphere.DisplayStatistic; Writeln; Writeln('======Statistic====='); nSphere.DisplayStatistic; end.
Повідомлення в Delphi. Повідомлення – це динамічні методи. Спеціалізованою функцією динамічних методів є методи обробки повідомлень.Їх оголошують за допомогою ключового слова message, за яким слідує цілочисельна константна – номер повідомлення. Type TWControl = class(TControl); …….. Procedure CMKeyDown(var Msg:TCMKeyDown); message CM_KeyDown; ……. End; За ключовим словом message,яке стоїть в кінці заголовка процедури стоїть зарезервована константа в якій зашифровано номер повідомлення CM- компонента Message; WM- Windows message; Метод обробки повідомлення має формат процедури і містить єдиний var-параметр. При перекриті такого методу назва методу, імя параметра можуть бути будь-якими, важливо лише, щоб не змінним залишався номер повідомлення використаний для виклику методу.Виклик методу виконується по імені за допомогою звернення до спеціального методу Dispatch, який є в кожному класі. Події в Delphi. Подія - властивість процедурного типу, призначена для створення реакції користувача на ту або іншу вхідну дію.
Програмування, яке орієнтоване на події є однією із особливостей програмування під Віндовс. Список подій для даного обєкта, на який він реагує, можна побачити в Обджект Інспектор на сторінці Івентс. Із сказаного випливає що існує 2-і категорії подій і способів їх обробки Одні спрацьовуються засобами Віндовс, інші – засобами бібліотеки VLC Delphi. Окрім передбачуваних, є ще не стандартні які може обробляти Delphi або ми самі: MessageDlg(‘Привіт’,mtlnformation,[mbOk]); При винекнені події ОС передає певну інформацію повязану з нею: Procedure TForm1.FormMouseDown(Sender:TObject; Button:TMouseButton; Shift: TShift State; X,Y:Integer); Begin Canvas.TextOut(x,y; ‘x’+intotstr(x)+’y’+inttostr(y)); End; Procedure TForm1.FormKeyDown(………..); Begin MessageDlg(Chr(key),mtlnformation,[mbOk], 0); End;
- FonMyEvent - поле процедурного типу, що містить адресу деякого методу. Такі методи називають обробники подій. При активації об`єкту Application.OnAtcive:=MyActivatingMethod буде викликано метод-обробник. Події мають різні параметри.Sender в казує на обєкт-джерело події. Всі події в Делфі принято позначати з префіксом Оn. Висновки: -Віндовс є системою яка орієнтована на події. -Події у Віндовс мають форму повідомлень
|
||||||||||||||||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 595; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.45.11 (0.012 с.) |