- •3.Об’єктно-орієнтований підхід до розробки програмного забезпечення. Дайте визначення поняття класу, об’єкту, поля, методу. З чого складається життєвий цикл об’єкту?
- •4.Опишіть внутрішню структуру об’єкта. Що таке інформація про тип під час виконання rtti і як вона використовується?
- •6.В чому полягає принцип спадковості? Що таке одинична та множинна спадковості? Як реалізується принцип одиничної та множинної спадковості в об’єктно-орієнтованих мовах програмування?
- •12. Поняття виключної ситуації, наведіть приклади виключних ситуацій. Як реалізуються виключні ситуації та їх обробка в об’єктно-орієнтованих мовах програмування?
- •13. Основні етапи і задачі об’єктно-орієнтованого аналізу предметної області. Які артефакти розробляються на етапі оОаналізу?
- •14. Визначення прецеденту. Що таке сценарій прецеденту та правила його опису?
- •16. Основні етапи і задачі об’єктно-орієнтованого проектування. Які артефакти розробляються на етапі оОпроектування?
- •18.Як під час проектування здійснюється розподіл обов’язків між класами? що таке шаблони проектування? Наведіть приклади шаблонів з прикладами їх застосування.
- •19. Охарактеризуйте мову uml та її призначення. Які діаграми для подання моделі складної системи надає uml, дайте коротку характеристику діаграм. Для чого на діаграмах uml застосовується мова ocl?
- •20. Призначення та правила побудови діаграми прецедентів uml: типи зв’язків між прецедентами(з прикладами), зображення на діаграмі прецедентів ролей (акторів).
- •24. Різновид діаграм реалізації. Що спільного і в чому різниця в uml діаграмах компонентів та розгортання?
- •26. Призначення компонувальника та завантажувача. В чому різниця між статичним та динамічним компонуванням бібліотек? Дайте порівняльну характеристику програмних модулів та динамічних бібліотек.
- •30. Як організувати багато потокове застосування? Які проблеми можуть виникнути під час взаємодії потоків і які методи їх уникнення?
12. Поняття виключної ситуації, наведіть приклади виключних ситуацій. Як реалізуються виключні ситуації та їх обробка в об’єктно-орієнтованих мовах програмування?
Виключна ситуація (exception) є несподіваною подією — помилкою — в програмі. Під винятковою ситуацією ми розумітимемо якусь непередбачену подію, здатну вплинути на подальше виконання програми. При обробці такої ситуації Delphi, як завжди, працює з об'єктами. З точки зору компілятора Delphi виняткова ситуація - це об'єкт. Для роботи з цим специфічним об'єктом в Delphi (точніше, в Object Pascal) були введені наступні мовні конструкції: try .. except і try .. finally. Розглянемо ці мовні конструкції детальніше.
Приклад:
try {виконуваний код};
except on Exceptionl do {код, що виконується в разі виникнення помилки 1};
on Exception2 do {код, що виконується в разі виникнення помилки 2};
else {код, обробник всіх не перехоплених раніше помилок};
end;
Якщо при виконанні коду, розміщеного в розділі try, генерується виключення, то виконання цього розділу припиняється і управління передається коду, розміщеному в розділі except. Розділ except може використовуватися двома способами. По-перше, в нім можуть розташовуватися будь-які оператори, окрім обробників виключень, що починаються з приставки on. Це і оператори повідомлення про помилку, і команди, що дозволяють звільняти системні ресурси, а також інших операторів і команди. По-друге, розділ except використовується для обробки виключень. В цьому випадку в нього можуть включатися лише оператори обробки виключень. Якщо серед обробників зустрівся обробник, відповідний виключенню, що згенерувало, то виконується оператор цього обробника, виключення руйнується і управління передається коду, розташованому після оператора on Exception do. Розділ, розташований після ключового слова else, служить для обробки будь-яких виключень, не описаних в розділі except. Цей розділ не є обов'язковим. Якщо при обробці виняткової ситуації не буде знайдений відповідний обробник, то станеться обробка системним обробником виключень. Розглянемо простий приклад обробки виняткової ситуації ділення на нуль. Приклад:
try
а:=10;
b:=0;
c:=a/b;
except on Ezerodivide do Messagebox(''Ділити на нуль не можна!'');
end;
Отже, як можна бачити з наведеного вище прикладу, для обробки різних виключень служать різні оператори. Розглянемо детальніше оператора обробки on .. do. Даний оператор знаходиться усередині розділу except і може мати дві форми:
on <клас виключення> do <оператор>; або
on <ім'я>: <клас виключення> do <оператори, в яких можна використовувати властивості виключення>
Цей оператор обробляє лише той клас виключень, який в нім вказаний. При вказівці батьківського (базового) класу, всі класи виключень - нащадки даного класу - також будуть оброблені. Для обробки всіх виключень можна звернутися до базового класу всіх виключень: Exception. Після обробки виключення воно руйнується. Друга форма оператора on .. do відрізняється від першої тим, що даному виключенню можна тимчасово привласнити ім'я і звертатися до властивостей виключення. Звертатися до властивостей виключення можна за допомогою конструкції <ім'я>.<имя властивості>.
С++
Якщо виклик функції прошел успішно і виняткова ситуація не виявлена, C++ просто ігнорує операторів catch. Оскільки обробник може перехопити похідні особливі ситуації декількох типів, порядок, в якому йдуть обробники в блоці, що перевіряється, істотний.
try { // ... }
catch (ibuf) { // обробка переповнювання буфера введення }
catch (io) { // обробка будь-якої помилки введення-виводу }
catch (stdlib) { // обробка будь-якої особливої ситуації в бібліотеці }
catch (...) { // обробка всіх останніх особливих ситуацій }