КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Основи спадкування.
Способи виявлення й видалення невідомого вірусу Спроби протидії комп'ютерними вірусами - Профілактика вірусного зараження й зменшення передбачуваної шкоди від такого зараження. - Методика використання антивірусних програм, у тому числі знешкодження й видалення відомого вірусу. Способи захисту комп'ютера від зараження вірусами, а отже й забезпечити надійне зберігання інформації на дисках: - Установити на комп'ютері сучасні антивірусні програми й постійно оновлювати їх версії - Перед зчитування інформації, записаної на інших комп'ютерах, завжди перевіряти носії на наявність вірусів; перенесення на свій комп'ютер файли в архівіруваному вигляді перевіряти відразу після розархівування на жорстокому диску, обмежуючи ділянку перевірки тільки щойно записаними файлами; періодично перевіряти на наявність вірусів жорсткі диски комп'ютера, запускаючи антивірусні програми для тестування файлів, пам'яті й системних ділянок - Дистрибутивні копії програмного забезпечення необхідно купувати в офіційних продавців - Періодично зберігати на зовнішньому носії файли, з якими ведеться робота
Один з основних механізмів об'єктно-орієнтованого програмування - спадкування - побудова нового класу на основі раніше описаного класу. Отримані в результаті спадкування класи опиняються класами-спадкоємцями (або дочірніми класами), а класи, на основі яких вони побудовані - класами-батьками (або батьківськими класами). При спадкуванні дочірній клас набуває всі властивості і методи батьківського класу і має доступ до будь-якого його елементу, за винятком описаних з областю видимості private. При описі дочірнього класу з використанням успадкування ім'я батьківського класу вказується в дужках після ключового слова сlass в заголовку інтерфейсної частини описуваного класу: Туре <Ім’я класу> = class (<Ім’я батьківського класу>) (Заголовок опису) (Опис власних властивостей та методів) End; Клас-спадкоємець може бути описаний на основі будь-якого іншого класу, незалежно від того, чи є батьківський клас у свою чергу дочірнім. Більше того, всі класи в Delphi є спадкоємцями від класу TObject, навіть якщо це явно не указивается'3. Клас TObject інкапсулює основні методи і властивості, пов'язані з загальною поведінкою об'єктів. До них відносяться такі як створення, ініціалізація і руйнування об'єктів; підтримка ідентифікації їх приналежності до класу під час виконання програми і багато іншого, пов'язані з інтеграцією об’єктів, створених в Delphi, в середовищі виконання програми, тоб-то операційну систему. Таким чином, примірники будь-якого класу в Delphi автоматично набувають всі ці можливості. 2. Перевизначення методів. Часто трапляється ситуація, коли один або кілька методів дочірнього класу повинні працювати не так, як у батьківському класі. У якості прикладу можна навести клас TGeomFigure, який представляє собою абстрактну геометричну фігуру, і має метод Draw для її малювання. Спадкоємцями цього класу могли б бути класи ТСігсlе дія роботи з колами, TLine для роботи з лініями, і так далі. Очевидно, що всі дочірні класи в такій ситуації повинні змінити метод Draw, щоб коректно відображати фігури, яким вони відповідають. Зміна функціональності успадкованих методів у дочірніх класах називається перевизначенням методів. 3. Механізм перевизначення Для перевизначення методу, реалізованого в об'єкті-батькові, слід: - вказати його заголовок у інтерфейсній частині опису дочірнього класу без зміни імені, списку параметрів і значення, що повертається (якщо метод є функцією); - вказати після заголовка методу ключове слово override. Якщо ключове слово override не вказано, то метод не перевизначається. - реалізувати метод (створити програмний код) в описовій частині об'єкта за звичайними правилами. При цьому в заголовку методу ключове слово override не вказується. Щоб метод міг бути перевизначений в дочірніх класах, він повинен бути позначений ключовими словами virtual або dynamic в інтерфейсній частині класу-батька. Ключове слово virtual вказує на те, що метод повинен бути занесений у так звану таблицю віртуальних методів (ТВМ), а ключове слово dynamic не те, що метод повинен бути знайдений на ім'я в дереві батьківських об'єктів. Різниця між використанням virtual і dynamic полягає в напрямку оптимізації компілятором викликів переобумовлених методів. Методи, помічені virtual, оптимізуються за швидкістю, а dynamic-методи за розміром програмного коду. У більшості випадків рекомендується використання віртуальних методів, а використання динамічних методів доцільно при високих ступенях вкладеності зв'язків батько-спадкоємець. Наведемо опис класу Two Nums з двома властивостями а і b, і методом GetResalt, що повертає суму властивостей. Далі, від цього класу опишемо спадкоємця ThreeNums, що має вже три властивості - а, b і с, і переобумовленої метод Get Result таким чином, щоб повертати суму не двох, а трьох чисел (лістинг 3.1). Лістинг 5.10. Використання перевизначення
4. Перевизначення методів із збереженням функціональності. У наведеному прикладі метод GetResult класу Two'Nums повністю перевизначений в класі ThreeNums, тобто його початкова функціональність повністю загублена, але включена до функціональність заміщаючого методу за допомогою копіювання. Це практично завжди можливо, якщо розробник класу має доступ до вихідного тексту класу-батька, але не завжди зручно, оскільки програмний код, реалізуючий метод, може мати чималі розміри. Для збереження функціональності перевизначеного методу в Delphi є можливість його виклику з переобумовленого методу за допомогою ключового слова Inherited, використовуваного наступним чином:
Inherited <назва методу> (<список параметрів>);
Аналогічно можуть викликатися і перевизначені методи, які є функціями:
...: = Inherited <назва методу> (<список параметрів>);
Змінимо попередній приклад таким чином, щоб сума властивостей в методі GetResult обчислювалася з використанням перевизначеного варіанта цього методу, описаного в класі TwoNums (лістинг 3.2). Лістинг 3.2. Перевизначення методів із зберіганням функціональності Unit Overriding2; Interface Type TowNums = class Public a, b: Integer; function GetResult: Integer; virtual; End; ThreeNums = class (TwoNums) Public c: Integer; function TwoNums. GetResult: Integer; override; End; Implementation Function TwoNums.GetResult: Integer; Begin Result:=a+b; End; Function ThreeNums.GetResult: Integer; Begin Result:=Inherited GetResult + c; {результат функції – сума значення, що видається перевизначеним методом (сума a та b), та властивості с} End; End.
Дата добавления: 2014-01-04; Просмотров: 328; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |