Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
9
Добавлен:
19.09.2019
Размер:
4.01 Mб
Скачать
  1. Призначення компонувальника та завантажувача. В чому різниця між статичним та динамічним компонування бібліотек? Дайте порівняльну характеристику програмних модулів та динамічних бібліотек.

Компонувальник, або редактор зв'язків - системна обробна програма, редагує та об'єднує об'єктні модулі в єдині завантажувальні, готові до виконання програмні модулі. Завантажувальний модуль може бути поміщений ОС в основну пам'ять і виконаний.

Завантажувач - системна обробна програма, що об'єднує основні функції редактора зв'язків та програми вибірки в одному пункті завдання. Завантажувач поміщає об'єктні і завантажувальні модулі що знаходяться в його вхідному наборі даних в оперативну пам'ять, об'єднує їх в єдину програму, коректує переміщувані адресні константи з урахуванням фактичної адреси завантаження і передає управління в точку входу створеної програми.

Об'єктовий модуль можна виконувати лише після спеціальної додаткової обробки (компонування), що здійснюється спеціальною програмою - Компонувальником.

Розглянемо в загальних рисах процес компонування. Програма побудована з інструкцій і операторів. У свою чергу, оператори включають вирази, які складаються з операцій і операндів. Принаймні, частини операндів у висловах повинні відповідати окремі "ділянки" оперативної пам'яті, що призначаються, наприклад, для збереження результатів обчислень.

У ході трансляції встановлюється відповідність між операндами та адресами областей пам'яті обчислювальної машини. Так ось задача Компонувальника полягає в узгодженні адрес у всіх фрагментах коду, з яких збирається готова до виконання програма. Компонувальник відповідає за те, щоб конкретному операнду виразу відповідала певна область пам'яті.

Компонувальник також додає до компонуємої програми коди так званих бібліотечних функцій (вони забезпечують виконання конкретних дій - обчислення, виведення інформації на екран дисплея і т.д.), а також код, що забезпечує розміщення програми в пам'яті, її коректне початок і завершення.

Завантажувач - програма, яка готує об'єктну програму до виконання і ініціює її виконання.

Більш детально функції завантажувача наступні:

• виділення місця для програм у пам'яті (розподіл);

• фактичне розміщення команд і даних в пам'яті (завантаження);

• дозвіл символічних посилань між об'єктами (зв'язування);

• настроювання всіх величин в модулі, що залежать від фізичних адрес у відповідності з виділеною пам'яттю (переміщення);

• передача управління на вхідну точку програми (ініціалізація).

Розглянемо сутність динамічного і статичного зв'язування (або компонування)

• Статичне зв'язування (static linking) має місце в процесі зв'язування програми, коли для створення виконуваного exe-файлу зв'язуються воєдино різні об'єктні obj-модулі, lib-файли бібліотек і, як правило, скомпільований res-файл ресурсів.

• Термін динамічне зв'язування (dynamic linking) відноситься до процесів, які Windows використовує для того, щоб зв'язати виклик функції в одному з модулів з реальною функцією з DLL. На відміну від статичного зв'язування динамічне зв'язування має місце під час виконання програми. У виконуваний файл занесена тільки інформація про місцезнаходження функцій DLL (цю інформацію додаток отримує з так званих бібліотек імпорту).

Звичайна Windows-програма являє собою виконуваний файл (програмний модуль), який зазвичай створює одну чи більше вікон, а для отримання даних від користувача використовує цикл обробки повідомлень.

Динамічно підключаються бібліотеки (DLL), як правило, безпосередньо не виконуються і зазвичай не отримують повідомлень. Вони представляють з себе окремі файли з функціями, які викликаються програмами та іншими DLL для виконання певних завдань. DLL активізується тільки тоді, коли інший модуль викликає одну з функцій, що знаходяться в бібліотеці.

27. Поняття ресурсу програми, наведіть приклади ресурсів. Що таке редактори ресурсів, транслятори ресурсів. Складові інтегрованого середовища програмування та їх функціональна характеристика. Мови четвертого покоління (4GL).

Ресурс – деякий візуальний елемент із заданими властивостями, що зберігається у виконуючому файлі окремо від коду і даних, який може відображатися спеціальними функціями.

Переваги використання ресурсів: вони завантажуються у пам’ять лише при звертання до них, тим самим досягається економія пам’яті; властивості ресурсів підтримується системою автоматично, не потребуючи від програміста написання додаткового коду.

Опис ресурсів зберігається окремо від програми у текстовому файлі з розширенням *.RC і компілюється спеціальним транслятором ресурсів, після чого отримуємо файл з розширенням *.RES. У виконуючий файл ресурси включається компонувальником.

Найбільш часто використовуємі ресурси: піктограми, курсори, бітові зображення, строки, діалогові вікна, меню, акселератори.

Редактор ресурсів дозволяє, наприклад, самостійно змінювати інтерфейс (у тому числі і мову меню) будь-якої програми. Крім того, за допомогою редактора можливо роздивлятися, змінювати і видаляти текст зображення, значки, меню, діалоги, звуки, анімацію тощо.

Інтегроване середовище програмування – система програмних засобів, що використовується програмістами для розробки ПЗ.

Складається з редактора текстів, компілятора та/чи інтерпретатора, компонувальника, завантажувача, відлагоджувача. Іноді містить засоби для інтеграції із системою управляння версіями, різноманітні інструменти для спрощення конструювання графічного інтерфейсу користувача. Прикладом ІСП є NetBeans, Eclipse, Turbo Pascal, Borland C++, Borland Delphi та ін.

Хоч й існують ІСП, призначені для декількох мов - Eclipse чи Microsoft Visual Studio, частіше усього вони призначені для одної визначеної мови, наприклад Visual Basic.

До мов 4го покоління відносяться програмні інструменти, які дозволяють користувачам розроблювати ПЗ, маючи при цьому мінімальні технічні навички, а також нові засоби розробки, які підвищують продуктивність праці програміста.

Мови 4GL поступово стають менш процедурними чи навіть не процедурними, у порівнянні із звичайними мовами програмування. Оскільки, процедурна мова потребує опису послідовності кроків (процедур), які чітко вказують комп’ютеру, що і яким чином це повинно бути зроблено. Тоді як не процедурні мови потребують від користувача тільки вказівки що потрібно зробити, без детального опису як це повинно виконатись.

Існує 7 категорій мов 4GL: мови запитів, генератори звітів, графічні мови, мови програмування дуже високого рівня, пакети прикладних програм, а також деякі види програм для ПК.

  1. Узагальнена архітектура подіє-орієнтованого програмного забезпечення. Що таке повідомлення, структура повідомлення, метод обробки повідомлень? Як здійснюється диспетчеризація повідомлень? Що таке подія? Що таке обробник події? Наведіть основні групи обробників подій.

При використанні ООП всі об'єкти є в певному сенсі відокремленими один від одного, і виникають певні труднощі у передачі інформації від об'єкта до об'єкта. В ООП для передачі інформації між об'єктами використовується механізм обробки подій.

Події найкраще уявити собі як пакети інформації, якими обмінюються об'єкти і які створюються об'єктно-орієнтованої середовищем у відповідь на ті чи інші дії користувача. Натискання на клавішу чи маніпуляція мишею породжується подія, яка передається по ланцюжку об'єктів, поки не знайдеться об'єкт, що знає, як обробляти цю подію. Для того, щоб подія могла передаватися від об'єкта до об'єкта, всі об'єкти програми повинні бути об'єднані в групу. Звідси випливає, що прикладна програма повинна бути об'єктом-групою, в яку мають бути включені всі об'єкти, які використовуються в програмі.

Таким чином, об'єктно-орієнтована програма - це програма, керована подіями. Події самі по собі не роблять жодних дій у програмі, але у відповідь на подію можуть створюватися нові об'єкти, модифікуватися або знищуватися існуючі, що і призводить до зміни стану програми. Іншими словами всі дії по обробці даних реалізуються об'єктами,а події лише керують їх роботою.

Принцип незалежності обробки від процесу створення об'єктів призводить до появи двох паралельних процесів в рамках однієї програми: процесу створення об'єктів і процесу обробки даних.

Подія з точки зору мови С + + - це об'єкт, окремі поля якого характеризують ті чи інші властивості переданої інформації, наприклад: struct Event

{

int what;

union

{

MouseEventType mouse;

KeyDownEvent keyDown;

MessageEvent message;

};

Об'єкт Event складається з двох частин. Перша (what) задає тип події, що визначає джерело даної події. Друга задає інформацію, передану з подією. Для різних типів подій зміст інформації різний. Поле what може приймати наступні значення

evNothing - це пусте подія, яка означає, що нічого робити не треба. Полю what присвоюється значення evNothing, коли подія оброблена яким-небудь об'єктом.

evMouse - подія від миші.

Подія від миші може мати, наприклад, таку структуру:

struct MouseEventType

{

int buttons;

int doubleClick;

TPoint where;

};

де buttons вказує клавішу; doubleClick вказує чи був подвійний клік; where вказує координати миші.

evKeyDown - подія від клавіатури.

Подія від клавіатури може мати, наприклад, таку структуру:

struct KeyDownEvent

{

union

{

int keyCode;

union

{

char charCode;

char scanCode;

};

};

};

evMessage - подія-повідомлення від об’єкту.

Для події від об'єкта (evMessage) задаються два параметри:

command - код команди, яку необхідно виконати при появі даної події;

infoPtr - передоваєма з подією (повідомленням) інформація.

struct MessageEvent

{

int command;

void *infoPtr;

};

Методи обробки подій.

Наступні методи необхідні для організації обробки подій (назви довільно).

GeEvent - формування події;

Execute реалізує головний цикл обробки подій. Він постійно отримує подія шляхом виклику GeEvent і обробляє їх за допомогою HandleEvent. Цей цикл завершується, коли надійде подія «кінець».

HandleEvent - оброблювач подій. Обробляє кожне подія потрібним для нього спосіб. Якщо об'єкт повинен обробляти певна подія (повідомлення), то його метод HandleEvent повинен розпізнавати цю подію і реагувати на нього належним чином. Подія може розпізнаватися, наприклад, за кодом команди (поле command).

ClearEvent очищає подія, коли воно оброблено, щоб воно не оброблялася далі.

Основні групи обробників подій:

Події від миші:

OnClick. OnDblClick викликаються, коли відбулося клацання, або подвійне клацання мишею;

події на зміну розміру елементу управління:

OnResize викликається при завершенні операції зміни розміру елементу управління;

OnCanResize викликається перед операцією зміни розміру.

на події при перетаскуванні елемента управління:

OnDragOver виникає при перетаскуванні елемента управління над даним

події на стискування елементів управління.

OnDockDrop і OnDockOver викликаються для стисковочних станцій під час стискування,а OnUnDock - при роз'єднанні

події на передачу фокуса введення:

OnEnter OnExit викликається,коли елемент отримує або втрачає фокус введення.

події від клавіатури:

OnKeyPress викликаються,коли була натиснути клавіша.

29. Назвіть основні принципи розробки програмного інтерфейсу з користувачем в сучасному програмному забезпеченні. Які основні складові графічного інтерфейсу з користувачем (GUI)? Принципи побудови багатовіконних SDI та МDI застосувань. Чим відрізняються модальні та немодальні вікна?

Можливість користувачем контролювати додаток. Користувач повинен мати доступ до кожного модуля додатка з будь-якого іншого модуля. Раніше для забезпечення такого доступу використалося ієрархічне меню. У сучасній системі GUI користувач просто вказує, що необхідно зробити й об'єкт, не використовуючи складні ієрархічні меню.

Проходження парадигмі: об'єкт/дія. Над всіма об'єктами вашої системи можна виконати яку-небудь операцію, наприклад, видалити, додати, роздрукувати й т.п. Дії, які можна виконати над об'єктом, повинні бути доступні або недоступні у відповідні моменти часу. Наприклад, коли запис перебуває в режимі редагування, кнопки Видалити й Новий треба деактивувати.

Послідовність. Один з найважливіших принципів розробки GUI. Компанії Apple, Microsoft й інші провели дослідження вартістю в мільйони доларів, щоб довести:01Л дозволяє користувачам вивчити більше додатків, чим старі програми. І все це завдяки принципу послідовності. Коли користувач Windows або Macintosh зіштовхується з новим додатком, він уже знаком з основними командами: відкриття, печатка, створення й збереження файлів. Розроблені на цій платформі додатка звичайно погодяться між собою. Таким чином, створюючи нові додатки, будьте послідовні й дотримуйтеся розроблених стандартів.

Простота роботи з додатком. У першу чергу в додатку не повинне бути спеціальних термінів, прийнятих у середовищі програмістів (так званий програмістський сленг). Термінологія повинна відповідати предметній області, для якої створюється додаток. Містити звичні й зрозумілі користувачеві пункти меню, що відповідають функціям обробки, розташовані в природній послідовності використання.

Прагнення до гармонії. Розроблювальні елементи графічного інтерфейсу повинні бути оформлені грамотно з естетичної точки зору. В Windows можна передати мільйони колірних комбінацій, але варто вибирати прості, спокійні кольори й уникати їхнього безладного змішання.

Забезпечення зворотного зв'язку. Необхідно орієнтуватися на кінцевого користувача, що спілкується із програмою на зовнішньому рівні взаємодії. Для цього використати екранні форми з повідомленнями про хід роботи програми, діалогові вікна для керування процесом обробки інформації й ін.

Можливість виправлення помилок. Завдання розроблювача - допомогти користувачеві у виправленні помилки на будь-якому етапі роботи й наданні можливості скасувати тільки що зробленої дію. Якщо процес забирає тривалий час, змінює великий обсяг даних або вимагає, щоб користувач створив резервну копію даних перед виконанням дії, необхідно видати відповідне попередження.

Основні складові GUI: вікна, піктограми, меню, показники, графічні елементи.

Сучасні багатократні додатка найчастіше будуються в стилі SDI (SDI - Single Document Interface), що на противагу MDI не накладає обмежень на положення й розміри допоміжних форм, кожна з яких при необхідності може мати своє головне меню (у стилі SDI реалізована, наприклад, середовище Delphi). Для створення форм у цьому випадку використається стиль fsNormal.

У рамках SDI-додатків можуть використатися рамкові MDI-форми зі своїми дочірніми вікнами, так що термін SDI носить досить умовний характер і застосовується в основному для протиставлення давно використовуваному терміну MDI.

Модальні вікна додатка одержують фокус уведення й не дають можливості перевести його на інше вікно даного додатка поки дане модальне вікно не буде закрито.

Немодальні вікна не фіксують фокус уведення подібним чином, дозволяючи працювати одночасно з декількома активними вікнами в рамках додатка.