Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Лекція
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України НУ „Львівська політехніка” Лекція №3 з курсу: «Застосування засобів об’єктно-орієнтованого програмування в лінгвістичних задачах» Львів - 2010 3. Принципи ООП 3.1. I принцип ООП до вирішення задач – спосіб задання дії: Дія в ООП ініціюється за допомогою передачі повідомлень агенту(об’єкту) відповідальному за дію. Повідомлення містить запит на здійснення дії і супроводжується додатковою інформацією(аргументами), яка необхідна для його виконання. Одержувач – це агент, якому надсилається повідомлення, якщо він приймає повідомлення то на нього автоматично покладається відповідальність за виконання дії. Як реакцію на повідомлення одержувач запустить деякий метод, щоб виконати прийнятий запит. Приховування інформації – важливий принцип і в традиційних мовах програмування. Чим пересилання інформації відрізняється від традиційних методів: - є цілком визначений одержувач – об’єкт, якому надіслане повідомлення. При виклику процедури немає явно визначеного одежувача; - інтерпритація повідомлення (а саме метод, який викликається) залежить від одержувача і є різним для різних одержувачів. Таким чином розходження між викликом процедури і пересилланням повідомлення полягає в тому, що в останньому випадку існує визначений одержувач і інтерпритація (вибір придатного методу) можуть бути різні для різних одержувачів. Конкретний одержувач невідомий аж до виконання програми і отже невідомо який метод буде викликаний. 3.2. ІІ принцип ООП. Всі об’єкти є представниками чи єкземплярами класів. Метод що активізується об’єктом, у відповідь на повідомлення визначається класом до якого належить одержувач повідомлення. Всі об’єкти одного класу використовують ті самі методи на однакові повідомлення. Принцип, відповідно до якого знання про тільки загальну категорію дозволяється використовувати до більш вузької категорії називаеться спадкуванням. Класи можуть бути організовані в ієрархічну структуру зі спадкуванням властивостей. Дочірній клас(підклас) успадковує атрибути батьківського класу розташованого вищче в ієрархічному дереві. Матеріальні Об’єктиТвариниНеживіОб’єктиЖиві Об’єктиРослиниЛюдиБудинкиМашини a) МовиМовиПроектуванняМовипрограмуванняМовиСпілкуванняМовиПрограмуванняВисокогорівняМовиПрограмуванняНизькогорівняАнглійськаНімецкаУкраїнськасловаалфавітсловаалфавітсловаалфавітлексемиалфавіталфавітлексемиБудь яка мова L визначається граматикою G - L(G) б) Рис. 3.2. Ієрархія класів Для пошуку методу, що підходить для обробки повідомлень використовується таке правило: - пошук методу, що викликається у відповід на визначене повідомлення, починається з методів, що належить класу одержувачів. Якщо придатний метод не знайдений, то пошук продовжується для батьківського класу. Пошук продовжується вгору по ланцюжку класів поки не буде знайдений потрібний метод, чи поки не буде вичерпана послівність батьківських класів. У І випадку виконується відповідний метод, у ІІ – видається повідомлення про помилку. 3.3. Характеристики ООП 1. Усе є об’єктом. 2. Обчислення здійснюється шляхом взаємодії (обміну даними між об’єктами) при якому 1 об’єкт вимагає, щоб інший об’єкт виконав дію. Об’єкти взаємодіють посилаючи та одержуючи повідомлення. Повідомлення – запит на виконання дії, доповнений набором агрументів, які використовуються при виконанні дії. 3. Кожен об’єкт має незалежну пам’ять, що складається з інших об’єктів. 4. Кожен об’єкт є представником класу, що має спільні властивості об’єктів. 5. В класі задається поведінка (функціональність) об’єкта. Тим самим всі об’єкти що є екземплярами одного класу можуть виконувати ті самі дії. 6. Класи організовані в єдину ієрархічну структуру з спільним коренем. Пам’ять і поведінка зв’язані з екземплярами визначеного класу автоматично доступні будь-якому класу розташованому нижче в ієрархічному дереві. ООП пропонує новий підхід до розробки програмного забезпечення. Фундаментальна концепція ООП парадигми полягає у передачі повідомлення об’єктам. Таким чином ОО мова повинна мати властивості (абстракції), інкапсуляції, спадкування і поліморфізму. Інкапсуляція – це здатність відрізняти внутрішній стан об’єкта і поведінки від його зовнішнього стану і поведінки. Абстракція – здатність задавати типи визначені користувачем, щоб доповнити вбудовані типи (Далі ми будемо розглядати тільки три основні властивості ООП, окрім абстракції, вона присутня при визначені власних типів користувачем). Спадкування – здатність створювати нові типи використовуючи опис існуючих типів. Поліморфізм - здатність об’єктів бути відповідальними за інтерпритацію виклика функції. 4. Визначення поняття клас1 1 Шупрута В.В. Delphi 2005. Учимся програмировать. Мова Object Pascal - Delphi, підтримує концепцію об’єктно- орієнованого програмування, та дає можливість визначати класи. Клас (Class) – це складна структура, що включає опис не тільки даних, але й процедур і функцій, які можуть бути виконані над представниками класу (об’єктом). Опис класу має наступну структуру: Туре <Ім’я класа> = class (<Ім’я класа-батька>) private <Приватні описи>; protected <Захищений опис>; public <Загальнодоступні описи>; published <Опубликованные описания>; end; Нижче в лістінгу 4.1 наведений приклад оголошення класу (як і інші елементи програми - константи, змінні, типи, - класи необхідно оголошувати). Лістінг 4.1 Приклад оголошення класу // Фрагмент кода, демонстрирующий создание класса. TPersonal = class private fname:string[30]; // Це властивість класу – ім’я співробітника. fage:byte; // Це властивість класу – вік співробітника. public procedure showinfo; // Це метод класу - процедура, // що забезпечує відображення інформації // про співробітника. end; Дані класу, що описують характеристики об’єкта, називаються полями (Field) або атрибутами (Attribute), а процедури и функції, що описує поведінку об’єкта, - методами (Method). В наведеному прикладі оголошений класс TPersonal. Ідентифікатор TPersonal - це ім’я класу, fname і fage - імена полів, showinfo – ім’я методу. Опис класу розміщається в програмі в розділі опису типів (type). 4.1. Що представляє собою об’єкт Об’єкт – це сукупність властивостей методів і подій. Сукупність означає, що об’єкт складається з властивостей методів і подій. Властивості – це прості змінні, які впливають на стан об’єкта. Наприклад ширина, висота - це властивість об’єкта. Методи – це ті самі процедури і функції, це то шо об’єкт вміє роботи. Наприклад, об’єкт може мати процедуру для виводу тексту на екран. Ця процедура і є метод об’єкта. Подія – це також процедури та функції, які викликаються коли відбувається деяка подія. Наприклад, якщо змінилась будь яка властивість об’єкта, може бути згенерована відповідна подія і викликана процедура для обробки реакції на цю подію. Об’єктМетоди(процедури)ПодіїВластивості(змінні) Рис. 4.1. Графічне представлення об’єкта Після того як клас оголошений, в програмі можна створювати (оголошувати) об’єти (Object) - екземпляри класу. Об’єкти як представники класу оголошується в програмі в розділі опису змінних (var): var boss:TPersonal; workersr array [1..100] of TPersonal; В мові Object Pascal(Delphi) об’єкт - це динамічна структура. Така структура містить не самі дані, а вказівник на дані об’єкта. Тому програміст повинен потурбуватися про виділення пам’яті для цих даних. Виділення пам’яті здійснюється за допомогою за допомогою спеціального методу класа - конструктора, якому зазвичай дають(присваивают) ім’я Create (Створити). Для того щоб підкреслити особливу роль і поведінку конструктора, в описі класу замість слова procedure використовують слово constructor. Наведений нижче в лістінгу 4.2 фрагмент коду оголошує клас з використанням конструктора. Лістінг 4.2 Оголошення класу, в склады якого введений конструктор // Фрагмент кода, що демонструє створення класу з конструктором. TPersonal = class private fname: string[30]; // Це властивість класу – ім’я співробітника. fage: byte; // Це властивість класу – вік співробітника. public constructor Create; // Конструктор - процедура створення // нового об’єкту (екземпляра класу). procedure showInfo; // Це метод класу - процедура, // яка забезпечує відображення інформаціїі // про співробітника. end; Виділення пам’яті для даних об’єкта відбувається шляхом присвоєння значення результату застосування метода-конструктора до типу (класу) об’єкта. Наприклад, після виконання інструкції Boss := Tpersonal1.Create; виділяється необхідна пам’ять для даниих об’єкта boss. Окрім виділеної пам’яті, конструктор, як правило, вирішує задачу присвоєння полям об’єкта початкових значень, тим самим здійснює ініціалізацію об’єкта. Нижче наведений приклад реалізації конструктора для об’єкта TPersonal: constructor TPerson.Create; begin ; fName := 'Новий співробітник'; fAge := 0; end ; Після оголошення і ініціалізації об’єкт можна використовувати, наприклад встановити значення полів об’єкта. Доступ до поля об’єта здійснюється вказуючи імені об’єта і імені поля, які відокремлюються один від одного точкою. Якщо в програмі деякий об’єкт не використовується, то можна звільнити пам’ять, що займається полями даного об’єкта. Для выконання цієї дії використовується метод Free. Наприклад, для того щоб звільнити пам’ять, що займається полями об’єкта boss, достатньо записати: Boss.free; Насправді пам’ять звільняється за допомогою іншого спеціального методу, що називається деструктором. При його описі використовується специальне слово destructor. Метод free викликає деструктор. 4.1.1 Ієрархія базових класів Бібліотека візуальних компонентів (Visual Component Library, VCL) містить велику кількість класів, призначених для швидкої розробки застосувань. Бібліотека написана на Object Pascal і має безпосередній зв’язок з інтегрованим середовищем розробки застосувань Delphi. В VCL містяться невізуальні і візуальні компоненти, а також інші класи, починаючи з абстрактного класу TObject. При цьому всі компоненти є класами, але не всі класи є компонентами. Всі класи VCL розміщенні на визначеному рівні ієрархії і утворюють дерево (ієрархію) класів. Знання походження об’єкта робить значну допомогу при його вивчені, так як нащадок спадковує всі елементи об’єкта- батька. Так, якщо властивість caption належить класу TControl, то його властивість буде і у його нащадків, наприклад, у класів TButton і TCheckBox і у компонентів — кнопки Button і незалежного перемикача CneckBox відповідно. Фрагмент ієрархії класів з важливими класами представлений на рис. 2.1. В основі великої кількості класів і компонентів, що використовується в Delphi, є лише пять базових класів (рис. 2.1). Вони забезпечують виконання основних функцій будь якого об’єкта — чи це стандартний компонент VCL (Visual Component Library) або спеціалізований об’єкт, що виконує деякі операції в застосуванні. Рис. 2.1. Ієрархія базових класів VCL Завдяки механізму спадкування властивостей і методів, нащадки базових класів вміють ’’спілкуватися’’ один з одним; працють в середовищі розробки, взаємодіючи з Палітрою компонентів і Інспектором об’єктів; розпізнаються операційною системою як елементи керування і вікна. В основі ієрархії класів лежить клас TObject. Він забезпечує виконання важливих функцій "житедіяльності" будь якого об’єкта. Завдяки йому, кожен клас спадковує механізми створення екземпляра об’єкта і його видалення. Зазвичай розробники не задумуються про те, як об’єкт буде створений і що необхідно зробити для його корректного видалення. Компоненти VCL створюють і звільняють автоматично ресурси що займають. Іноді розробнику приходится створювати і видаляти об’єкти самостійно. Але навіть в цьому випадку йому достатньо викликати відповідний конструктор і деструктор: var SomeList: TStrings; SomeList := TStrings.Create; SomeList.Free; (За кажущейся простотой этих операций скрывается довольно сложная реализация указанных процессов.) Весь код класу TObject написаний на асемблері для забезпечення найбільшої ефективності операцій, які будуть виконуватися в кажному його нащадку. Окрім цього, клас TObject забезпечує створення і збереження інформації про екземпляр об’єкта і обслуговування черг повідомлень. Клас TPersistent (постійний, стійкий) походить безпосередньо від класу TObject. Він забезпечує своїх нашадків можливісттю взаємодіяти з іншими об’єктами і процесами на рівні даних. Його методи дозволяють передавати дані в потоки, а також забезпечує взаємодію об’єкта з Інспектором об’єктів. Клас TСomponent є важливим для всіх компонентів. Безпосередньо від нього можна створювати будь які невізуальні компоненти. Механізми, реалізовані в класі TComponent, забезпечують взаємодію компонента з середовищем розробки, головним чином з Палітрою компонентів і Інспектором об’єктів. Завдяки можливостям цьогоо класу, компоненти починають працювати на формі проекта вже на этапі розробки. Клас TControl походить від класу TComponent. Його основне призначення — забезпечити функціонування визуальних компонентів. Кожен візуальний компонент, який створений від TControl, має основні ознаки елемента управління. Завдяки цьому, кожен візуальний компонент вміє працювати з GUI (Graphic User Interface — графический интерфейс пользователя ОС) і відображати себе на экрані. Клас TWinControl розширює можливості розробників з створення елементів управління. Він спадковується від класа TControl і забезпечує створення віконних елементів управління. На основі класу TWinControl створюється ще один додатковий клас — TCustomControl. Він забезпечує компоненти які створені на його основі можливостями з використанням канви — спеціального об’єкта, призначеного для відображення графіки. Клас TCustomControl є спільним предком для цілої групи класів, що забезпечує створення різноманітних нестандартних типів віконих (що отримують фокус) елементів управління Windows: редакторів, списків тощо. Для створення невіконних (ті що неотримують фокус) елементів управління використовують клас TGraphicControl, який являютється нащадком класу TControl. В цілому ієрархія базових класів забезпечуєт повноцінну роботу розрабників в Delphi, що дозволяє проектувати любі типи застосування. Далі ми розглянемо основні властивості і методи базових класів, виділяючи тільки ті, які можуть бути використані в реальній роботі. Частина з них доступна в Інспекторі об’єктів, частина може бути використана в програмному коді.2 2 Література: Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с: ил. Питання: Література: 1. Архангельский А.Я. Программирование в Delphi. Учебник по классическим версиям Delphi. 2006 г. - 1152 с. 2. Архангельский А.Я. Delphi 2006. Справочное пособие: язык Delphi, классы, функции Win32 и .NET, 2006 г. - 1152 с. 3. Архангельский А.Я. Приемы программирования в Delphi на основе VCL, 2006 г. - 944 с. 4. Архангельский А.Я. Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi, 2007 г. - 1248 с. 5. Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с: ил. 6. Шупрута В.В. Delphi 2005. Учимся програмировать.
Антиботан аватар за замовчуванням

17.02.2013 23:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!