1 Мови програмування: структурний та обєктно-орієнтований підходи 1. Загальна характеристика сучасного стану розвитку мов програмування (2-8) 2. Структурний.

Презентация:



Advertisements
Похожие презентации
База даних (БД) це структурована сукупність взаємопов'язаних даних певної предметної області (реальних об'єктів, процесів, явищ тощо). це структурована.
Advertisements

Основи алгоритмізації та програмування Надання значень величинам. Вказівки присвоєння та введення.
Кожен оточуючий нас обєкт має свої властивості. Обєкт – цілісна частина навколишнього світу. Наприклад, стіл має такі властивості, як розміри, форму,
Дипломний проект Виконав: студент гр. П Ярошенко Я.І. Керівник дипломного проекту Сібрін Ю.І. Розробка програми Продаж друкованої продукції.
Розробив: Студент 221 грп Олару Дмитро. Залежно від відстані виділяють: Локальні мережі – об'єднання комп'ютерів, що розміщені на невеликих відстанях.
Поняття об єкта у програмуванні. Властивості об єкта. Елементи інтерфейсу користувача як об єкти.
Бази даних Поняття про моделі даних. Види моделей даних Бази даних.
Модель Виконали: студенти групи маг МІ-3 Волошин Андрій.
Що таке цикл? Чим характерний цикл як фрагмент алгоритму? Що таке розгалуження? Чим характерне розгалуження як фрагмент алгоритму?. Чим цикл відрізняється.
1 Підпрограми- процедури (Turbo Pascal 7.0) Підпрограми- процедури (Turbo Pascal 7.0)
Дипломний проект Виконав: студент гр. П Карачевцев О.М. Керівник дипломного проекту Висоцька О.І. Електронне замовлення обідів.
РОЗДІЛ 2 ОБ'ЄКТИ ТА ІНФОРМАЦІЙНІ СИСТЕМИ Інформатика 9 клас.
ІНФОРМАТИКА. 9 КЛАС Програмне забезпечення комп'ютерних систем Навчальна презентація вчителя Большакової Кристини Сергіївни ЗОШ 9 м. Ізмаїл.
Бройченко А.Г АЛФАВІТ МОВИ (Turbo Pascal 7.0) АЛФАВІТ МОВИ (Turbo Pascal 7.0) Інформатика-11 Тема-3.
Урок 10 5 клас. Комп'ютернні мережі. Локальна мережа. Використаннямережевих папок
7 Поняття змінної та її значення За навчальною програмою 2017 року Урок 19.
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Тема уроку. Практична робота Складання програм з розгалуженням М ета уроку: формувати вміння працювати в середовищі програмування ; створювати проект.
Основи алгоритмізації і програмування. Тема 2. Моделі та моделювання (3 год) Етапи розв'язування задач на комп'ютері.
Транксрипт:

1 Мови програмування: структурний та обєктно-орієнтований підходи 1. Загальна характеристика сучасного стану розвитку мов програмування (2-8) 2. Структурний підхід (9-14) 3. Обєктно-орієнтований підхід (15-23) 4. Характеристика ООП (24-33)

2 Загальна характеристика сучасного стану розвитку мов програмування Програмні комплекси, що створюються сьогодні стають все складнішими. З чим повязані ці складнощі: 1. Складність предметної області – програмісти створюють програми, які моделюють досить складні процеси, які самі по собі залежать від великої кількості факторів і описуються досить складними математичними моделями. Використання компютера не робить ці проблеми простішими.

3 Загальна характеристика сучасного стану розвитку мов програмування 2. Складність управління проектами – підмічено, що з лінійним зростанням програми її складність зростає експоненціально. При цьому залучення додаткових сил, як правило, бажаного ефекту не надає: якщо пять програмістів пише програму два місяці то 10 програмістів навряд чи напишуть її за один місяць – результат може бути зворотнім – без якісного менеджменту програму взагалі не напишуть.

4 Загальна характеристика сучасного стану розвитку мов програмування 3. Вимоги до гнучкості системи – в ідеалі процес розробки системи виглядає так: замовник проекту чітко окреслює вимоги до проекту, у яких відсутні протиріччя та незясованості. Програмісти систему реалізують і після здачі проекту усі летять відпочивати на Канари. На практиці все відбувається інакше. Під час розробки зясовується, що замовник уявляє собі готовий проект не так як програмісти. Створення системи це завжди компроміс: замовник і розробники повинні постійно спілкуватися між собою і слідкувати за тим, щоб прийняті рішення задовольняли обидві сторони. Здачею проекту зазвичай справа не закінчується: через деякий час існуюче рішення вже не задовольняє замовника і він звертається до розробників з пропозицією доопрацювати або частково переробити проект.

5 Загальна характеристика сучасного стану розвитку мов програмування 4. Складність поведінки системи – відмінність програмних систем від систем реального світу полягає у тому, що вони є дискретними. Обєкти реального світу живуть за безперервними законами – невеликі впливи тягнуть за собою невеликі наслідки. У світі компютерних систем діють інші закони. Навіть невелика помилка у самому незначному модулі може потягти за собою непередбачені наслідки (аж до краху системи). Боротися з цим неможливо – можна тільки проводити повне і детальне тестування системи (тестування займає 50% часу розробки проекту) та проектувати систему так, щоб локалізація і виявлення помилок проходили з якнайменшими затратами часу.

6 Загальна характеристика сучасного стану розвитку мов програмування Як можна перебороти зазначені складності сучасних компютерних систем. Відповідь вже давно відома: «золоте правило» в загальному вигляді звучить так «розділяй і володарюй». Це правило використовується при проектуванні у будь-якій галузі. Ідея полягає в тому, щоб розділити систему на більш мілкі підсистеми (виконати декомпозицію системи). Після цього окремі підсистеми можна розробляти окремо.

7 Загальна характеристика сучасного стану розвитку мов програмування В програмуванні також ні у кого нема заперечень від декомпозиції проекту. Але проблема полягає не у тому щоб виконати декомпозицію, а у тому як її виконати. Нажаль сьогодні невідомий найкращий спосіб розділення системи на підсистеми (мабуть цей спосіб не буде відомий ніколи). Можна говорити тільки про різні підходи до вирішення цієї проблеми.

8 Загальна характеристика сучасного стану розвитку мов програмування Підходи по декомпозиції можуть бути такими : структурне програмування ; метод потоків даних; автоматне програмування; логічне програмування; обєктно-орієнтоване програмування. Будь який підхід може бути найкращим для вирішення конкретної проблеми. Але найбільш відомі підходи що отримали найбільше розповсюдження це структурне програмування та обєктно-орієнтоване програмування.

9 Структурне програмування Структурне програмування отримало свій розвиток у роки ХХ сторіччя завдяки роботам Е.Дейкстри. У його основі лежить ідея алгоритмічної декомпозиції: пропонується розділяти складну систему на окремі частини у яких застосовуються різні алгоритми і реалізовувати кожний алгоритм окремо. Саме структурне програмування заохочує процедурне мислення: якщо у вашій програмі деяка дія повторюється декілька раз, виділяйте цю дію в окрему процедуру. Структурне програмування дотепер залишається дуже гарним (а нерідко й найкращим) підходом, якщо мова йде про невеликі проекти.

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

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

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

13 Оголошуй у програмах типи значень змінних та констант Як засіб боротьби з помилками було прийнято ще одне рішення: при оголошенні змінних повинен вказуватися тип даних, які ці змінні можуть містити. Якщо ви спробуєте привласнити змінній значення іншого типу (не того, який був для неї оголошений), це відразу ж буде сприйнято як помилка й виконання програми припиниться. Цей спосіб запобігає створенню й поширенню програм, що неправильно зберігають дані. А як відомо, некоректні дані приводять до збоїв у роботі компютерів, на яких вони обробляються.

14 Використовуй тільки: послідовні команди, розгалуження та циклу. Найбільші проблеми в ранніх програмах виникали при використанні спеціальної команди GOTO. Через постійні переходи з одного кінця програми в інший практично неможливо було зрозуміти, що саме ця програма робить. Ідея структурного програмування поклала цьому кінець і обмежила переміщення по програмі виконанням тільки трьох видів команд.

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

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

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

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

19 Обєктно-орієнтований підхід на прикладі компютера Використання стандартизованих інтерфейсів дозволяє порівняно легко підключати до комп'ютера додаткове устаткування - від принтера й модему до цифрового відеомагнітофона й руля з педалями.

20 Обєктно-орієнтований підхід на прикладі компютера - недоліки За простоту зміни самих об'єктів за умови незмінних інтерфейсів доводиться розплачуватися більшими складностями при зміні самих інтерфейсів. Наприклад, інтерфейс (тобто форма рознімання й кількість ніжок) процесора Pentium II відрізняється від інтерфейсу Pentium. Щоб модернізувати комп'ютер із процесором Pentium, потрібна заміна материнської плати.

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

22 Обєктно-орієнтований підхід на прикладі компютера - недоліки Система, що складається з об'єктів, коштує набагато дорожче, ніж аналогічна система, побудована як один блок. На практиці цілком може виявитися, що значна частина схеми одного модуля комп'ютера вже реалізована в іншому. Але скористатися цим неможливо (тому що окремі модулі повинні бути самостійними й незалежними). Альтернативні рішення (Super Nintendo, Sony PlayStation) дуже складно модернізувати, зате ціна виявляється набагато менше.

23 Обєктно-орієнтований підхід - вердикт Незважаючи на всі недоліки, переваги об'єктної моделі є все-таки більш значними. Об'єктна модель далеко не ідеальна, але інші, як правило, виявляються ще гірші. (За аналогією із висловлюванням Уїнстона Черчилля: Демократія це дуже погана система влади, але кращої людство поки що не придумало).

24 Характеристика ООП - абстрагування Абстрагування це спрощений опис або виклад системи, при якому одні властивості або деталі (істотні для розгляду в цей момент) виділяються, а інші ігноруються. Будь-які моделі об'єктів реального світу, і які зустрічаються в комп'ютерних програмах, теж є абстракціями. Кошик, що перебуває на робочому столі Windows, імітує дійсний кошик для сміття. У ньому важливі тільки три аспекти: зовнішній вигляд, можливість викинути документ у кошик і можливість дістати його з кошика якщо документ видалили помилково. Побачити систему що розроблюється як набір ключових абстракцій (причому вибрати як можна більш вдале для реалізації подання) головне завдання обєктно- орієнтованого проектування. У програмуванні абстракції реалізуються за допомогою об'єктів, причому кожний об'єкт є представником деякого класу (із цієї причини об'єкти іноді називають екземплярами класу).

25 Характеристика ООП - інкапсуляція Інкапсуляція (encapsulation) - це механізм, що поєднує дані й код, що маніпулює цими даними, а також захищає те, і інше від зовнішнього втручання або неправильного використання. В обєктно-орієнтованому програмуванні код і дані можуть бути об'єднані разом; у цьому випадку говорять, що створюється так званий "чорний ящик". Коли коди й дані поєднуються таким способом, створюється об'єкт (object). Інакше кажучи, об'єкт - це те, що підтримує інкапсуляцію.

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

27 Характеристика ООП - модульність Подання системи у вигляді набору абстракцій придатне лише для невеликих розробок. У серйозних проектах кількість окремих абстракцій може досягати декількох сотень (якщо не більше). У цьому випадку необхідна якась проміжна ланка між окремо взятими абстракціями й системою в цілому. Саме таку роль відіграють модулі.

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

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

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

31 Характеристика ООП - спадкування Спадкування (inheritance) - це процес, за допомогою якого один об'єкт може здобувати властивості іншого. Точніше, об'єкт може успадковувати основні властивості іншого об'єкта й додавати до них риси, характерні тільки для нього. Спадкування є важливим, оскільки воно дозволяє підтримувати концепцію ієрархії класів (hierarchical classification). Застосування ієрархії класів робить керованими більші потоки інформації.

32 Характеристика ООП – спадкування приклад Ми створили примітивний клас, який назвали Автомобіль, з складовими: двигун, кермо і 4 колеса. Більше ніяких подробиць. Після деяких роздумів ми вирішили розвинути проект і створити ще три класи, більш детальних і розвинутих: автобус, вантажівка і амфібія. У кожного з цих класів, як і у автомобіля є двигун, кермо і 4 колеса, але є у кожного відмінності. Автобус має пасажирський салон, вантажівка має кузов, а амфібія – гребний гвинт.

33 Характеристика ООП – спадкування приклад Як створювати програмний код для кожного з цих класів. Найпростіша можливість це написати код для автомобіля потім скопіювати його до кожного з нових класів і дописати особливості які притаманні нашим новим класам. Більш зручний і «правильний» спосіб – спадкування. Ми просто обявляємо, що новий клас Вантажівка є спадкоємцем класу Автомобіль. При цьому Вантажівка неявно тепер володіє усім кодом свого батька – автомобіля. Тим самим нічого не написавши у код програми ми можемо користуватися нашою вантажівкою як автомобілем. Щоб з автомобіля зробити вантажівку ми пишемо йому нові процедури і функції. Так само робимо і для автобуса й амфібії.

34 Характеристика ООП – спадкування Без використання ієрархії класів, для кожного об'єкта довелося б задати всі характеристики, які б вичерпно його визначали. Однак при використанні спадкування можна описати об'єкт шляхом визначення того загального класу (або класів), до якого він належить, з тими спеціальними рисами, які роблять об'єкт унікальним.