Вступ до курсу ЛЕКЦІЯ 1 1
План лекції: Основні відомості про курс. Процедурне, структурне, об’єктноорієнтоване та компонентно орієнтоване програмування C, C++, C# 2
лекції І семестр ІІ семестр разом ІІ семестр лабораторні разом 36 72 108 34 30 64 70 102 172 Курсовий проект 3
Бали за заняття (І семестр) Основні – відвідування 20 балів – МКР 2*10 20 балів – лабораторні + тести 20 балів – екзамен 20 балів 4
Процедурне , cтруктурне, об’єктно-орієнтоване та компонентне програмування Питання 2 5
Процедурне, структурне та об’єктно-орієнтоване програмування 6
Програми мають два основні аспекти: – набір алгоритмів; – набір даних, якими програми оперують. Ці аспекти залишалися незмінними за всю недовгу історію програмування зате відносини між ними (парадигма програмування) змінювались. 7
Процедурне програмування У процедурній парадигмі програмування задача безпосередньо моделюється набором алгоритмів – процедур, що виконують деякі дії над даними. Дані є відділеними від процедур 8
Приклад – відділ з роботи з користувачами у бібліотеці Дані (передаються як параметри) Процедура видачі книг Процедура приймання книг До найбільш відомих процедурних мов програмування відносяться FORTRAN, C і Pascal. 9
Структурне програмування отримало свій розвиток у 60 -70 роки ХХ сторіччя завдяки роботам Е. Дейкстри. У його основу покладена ідея алгоритмічної декомпозиції – розділення складної системи на окремі частини у яких застосовуються різні алгоритми і реалізуються кожний окремо. 10
В основою методу структурного програмування є: розділення великої програми на кілька малих підпрограм; об’явлення у програмах змінних та типів значень які вони приймають; використання у малих програмах тільки послідовних команд, команд розгалуження та команд циклу. 11
Об’єктно-орієнтоване програмування Об’єктно-орієнтований підхід має на меті подання програмної системи у вигляді сукупності незалежних об'єктів, що взаємодіють між собою. Об'єктна декомпозиція радикально відрізняється від алгоритмічної - програма представляється не у вигляді сукупності процедур, а у вигляді сукупності об’єктів 12
Передумови виникнення об’єктно- орієнтованого програмування – Нелінійність виконання програм ( у зв’язку з переходом від командного рядка до програм з віконними інтерфейсами) – Необхідність поєднання даних та дій над ними – Необхідність постійно прописувати процедурні блоки для виконання схожих дій, що повторювались із програми до програми 13
У 70 -і роки процедурну парадигму почала витісняти парадигма абстрактних типів даних ( що має назву об'єктного підходу). В рамках цієї парадігми задача моделюється набором абстракцій даних (У С++ ці абстракції отримали назву класів) Алгоритми, що реалізовуються кожним класом, називаються відкритим інтерфейсом класу. Дані “приховані” усередині об'єктів класу. Парадигму абстрактних типів даних підтримують такі мови, доак CLU, Ada и Modula-2 14
Характеристики об’єктноорієнтованого програмування 15
Об'єктно-орієнтоване програмування розширює парадигму абстрактних типів даних механізмом успадкування (повторного використання існуючих об'єктів) і динамічного зв’язуванняя (повторного використання існуючих інтерфейсів). Вводяться відносини тип-підтип. Три найбільш відомих мови що підтримують об'єктно-орієнтований підхід, – це Simula, Smalltalk і Java. 16
Характеристики ООП абстрагування інкапсуляція модульність поліморфізм спадкування 17
Характеристика ООП - абстрагування Абстрагування — це спрощений опис або виклад системи, при якому одні властивості або деталі (істотні для розгляду в цей момент) виділяються, а інші ігноруються. Будь-які моделі об'єктів зовнішнього світу, що зустрічаються в комп'ютерних програмах, теж є абстракціями. – Корзина, що перебуває на робочому столі Windows, імітує дійсний кошик для сміття. – У ньому важливі тільки три аспекти: зовнішній вигляд, можливість викинути документ у кошик можливість дістати його з кошика якщо документ видалили помилково. 18
Представити програму, що розроблюється як набір ключових абстракцій (причому вибрати як можна більш вдале для реалізації подання) — головне завдання об’єктноорієнтованого проектування. У програмуванні абстракції реалізуються за допомогою динамічних структур об'єктів, кожний з яких є представником деякої статичної структури класу (тому об'єкти іноді називають екземплярами класу). 19
Характеристика ООП - інкапсуляція Інкапсуляція (encapsulation) - це механізм, що поєднує дані й код, що маніпулює цими даними, а також захищає те, і інше від зовнішнього втручання або неправильного використання. В об’єктно-орієнтованому програмуванні код і дані можуть бути об'єднані разом; у цьому випадку говорять, що створюється так званий "чорний ящик". Коли коди й дані поєднуються таким способом, створюється об'єкт (object). Інакше кажучи, об'єкт - є те, що підтримує інкапсуляцію. 20
Абстракція неможлива без відокремлення інтерфейсу від реалізації. Лише в цьому випадку її розробник зможе скористатися перевагами об'єктної моделі : – Зміна та покращення поточної реалізації моделі ( за умови незмінності інтерфейсу); – Захист реалізації від редагування (ненавмисног або навмисного) 21
Характеристика ООП - модульність Подання програми у вигляді набору абстракцій придатне лише для невеликих розробок. У серйозних проектах кількість окремих абстракцій може досягати кількох сотень (якщо не більше). У цьому випадку необхідна якась проміжна ланка між окремо взятими абстракціями й системою в цілому. Саме таку роль відіграють модулі. 22
Модульність - це поділ програми на фрагменти, що компілюються окремо, але можуть встановлювати зв'язки між собою. Модуль (у програмуванні) складається зазвичай з двох частин: интерфейсної (у якій описуються інтерфейси абстракцій, що становлять модуль) і частині, що містить реалізації абстракцій. Якщо головне завдання ООП полягає у виділенні абстракцій системи, то головне завдання у проектуванні модульної структури проекту - вмілий розподіл абстракцій за модулями 23
Характеристика ООП - поліморфізм Поліморфізм (polymorphism) - це властивість, що дозволяє те саме ім'я використати для рішення двох або кількох схожих, але технічно різних завдань. Метою поліморфізму, стосовно до ООП, є використання одного імені для завдання загальних для класу дій. Виконання кожної конкретної дії буде визначатися типом даних. 24
Концепцією поліморфізму є ідея "один інтерфейс, безліч методів". Це означає, що можна створити загальний інтерфейс для групи близьких за змістом дій. Перевагою поліморфізму є те, що він допомагає підвищити складність програм, дозволяючи використання того ж інтерфейсу для завдання єдиного класу дій. Вибір конкретної дії, залежно від ситуації, покладається на компілятор. Вам, як програмістові, не потрібно робити цей вибір самому. Потрібно тільки пам'ятати й використати загальний інтерфейс. 25
Характеристика ООП - спадкування Спадкування (inheritance) - це процес, за допомогою якого один об'єкт може здобувати властивості іншого. Точніше, об'єкт може успадковувати основні властивості іншого об'єкта й додавати до них риси, характерні тільки для нього. Спадкування є важливим, оскільки воно дозволяє підтримувати концепцію ієрархії класів (hierarchical classification). Застосування ієрархії класів робить керованими більші потоки інформації. 26
Бібліотечні дані Друковані Книги Журнали Візуальні Компакт-диски Відео-касети 27
Компонентно орієнтоване програмування С# перша компонентно – орієнтована мова програмування у сімействі С/С++ Компонент є блоком в двійковому вигляді (тобто виконуваний код, а не початковий текст), який може використовуватися іншими програмами без необхідності повторної компіляції як самого компоненту, так і програми, що використовує цей компонент. Це означає, що від сторонніх виробників не потрібне надання початкового коду для своїх компонентів. 28
Що таке компонент Компонент – Незалежний модуль, що може використовуватись багаторазово і встановлюватись окремо – Більш загальна за об’єкт структура (об’єкти є мовно-залежними структурами 29
Компоненти можуть містити кілька класів Компоненти не залежать від мови програмування Розробник і користувач компонента зазвичай не знайомі між собою, працюють в різних компаніях і користуються різними мовами програмування 30
C, C++. C# 31
Основні відомості про С Мова С - універсальна мова програмування, для якої характерна економічність виразу, сучасний потік управління та структури даних, великий набір операторів. 32
Мова С була створена Деннісом Рітчі (Dennis Ritchie) в лабораторіях Bell Telephone Laboratories у 1972 році для конкретної задачі розробки операційної системи UNIX на ПЕОМ DEC PDP-11. Багато із найбільш важливих ідей "C" походять від старішої мови BCPL, що була розроблена Мартіном Річардсом. Мова BCPL вплинула на "C" через мову "B", написану Кеном Томпсоном у 1970 році для першої операційної системи "UNIX" для ПЕОМ PDP-7. 33
Переваги мови С C є потужною та гнучкою мовою. Сама мова майже ніяких обмежень не накладає. С використовується для розробки таких програмних продуктів, як операційні системи, текстові редактори, графічні додатки, а також компілятори інших мов. 34
С- популярна мова програмування, якій віддають перевагу багато програмістів, і як наслідок, велика кількість компіляторів та корисних додатків до них. С- мобільна мова - добре переноситься з однієї комп'ютерної системи на іншу, а також з однієї операційної системи на іншу ( Програму розроблену під Windows можна майже без доробок використовувати у Linux 35
Словник С є невеликим – він містить всього кілька фіксованих термінів, що мають назву – ключових слів. Вони є основою для функціональних можливостей мови. С- модульна мова. Програму мовою С потрібно створювати у вигляді окремих програм-модулів, що мають назву функцій. Такі функції можна в подальшому використовувати в інших програмах 36
С — мінімалістична мова програмування. Серед її головних цілей: можливість прямолінійної реалізації компіляції, використовуючи відносно простий компілятор, забезпечити низькорівневий доступ до оперативної пам'яті, формувати лише кілька інструкцій машинної мови для кожного елементу мови, і не вимагати обширної динамічної підтримки. У результаті, код С придатний для більшості системного програмного забезпечення, яке традиційно писалося на асемблері. 37
Незважаючи на її низькорівневі можливості, мова проектувалася для машиннонезалежного програмування. Написана мовою C програма Сумісна зі стандартами та машинно-незалежно, може легко компілюватися на великій кількості апаратних платформ та операційних систем з мінімальними змінами. Мова стала доступною для великої кількості платформ, від вбудованих мікроконтролерів до суперкомп'ютерів. 38
C++ — універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктноорієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «С з класами» . Страуструп перейменував мову у C++ у 1983 р. Базується на мові Сі. Визначена стандартом ISO/IEC 14882: 2003 У 1990 -х роках С++ стала однією з найуживаніших мов програмування загального призначення. 39
Нововведеннями С++ порівняно з С є: – підтримка об'єктно-орієнтованого програмування через класи; – підтримка узагальненого програмування через шаблони; – доповнення до стандартної бібліотеки; – додаткові типи даних; – обробка винятків; – простори імен; – вбудовані функції; – перевантаження операторів; – перевантаження імен функцій; – посилання і оператори управління вільно 40 розподіленою пам'яттю.
У 1998 році ратифіковано міжнародний стандарт мови С++: ISO/IEC 14882 «Standard for the C++ Programming Language» . Поточна версія цього стандарту — ISO/IEC 14882: 2003. 41
Назва «Сі++» була вигадана Ріком Масситті (Rick Mascitti) і вперше було використана в грудні 1983 року. Раніше, на етапі розробки, нова мова називалася «Сі з класами» . Ім'я, що вийшло у результаті, походить від оператора Сі «++» (збільшення значення змінної на одиницю) і поширеному способу присвоєння нових імен комп'ютерним програмам, що полягає в додаванні до імені символу «+» для позначення поліпшень. 42
С# Мова C# з'явилася в червні 2000 р. як результат копіткої роботи великої групи розробників компанії Microsoft, очолюваною Андерсом Хейлсбергом (Anders Hejlsberg). Ця людина відома як автор Turbo Pascal. Крім того, під час роботи в корпорації Borland Андерс Хейлсберг прославився створенням інтегрованого середовища Delphi (він керував цим проектом аж до виходу версії 4. 0). 43
• C# є повністю об'єктно-орієнтованою мовою, де навіть типи, вбудовані в мову, представлені класами; • C# є могутньою об'єктною мовою з можливостями наслідування і універсалізації; • C# є спадкоємцем мов C/C++, зберігаючи кращі риси цих популярних мов програмування. Загальний з цими мовами синтаксис, знайомі оператори мови полегшують перехід програмістів від С++ до C#; зберігши основні риси своїх батьків, мова стала простіша і надійніша. Простота і надійність, головним чином, пов'язані з тим, що у C# хоча і допускаються, але не заохочуються такі небезпечні властивості С++ як показчики, адресація, розіменування, адресна арифметика; 44
• завдяки каркасу Framework. Net, що став надбудовою над операційною системою, програмісти C# отримують ті ж переваги роботи з віртуальною машиною, що і програмісти Java. Ефективність коду навіть підвищується, оскільки середовище CLR є компілятором проміжної мови, тоді як віртуальна Java-машина є інтерпретатором байт-кода; 45
• могутня бібліотека каркаса підтримує зручність побудови різних типів додатків на C#, дозволяючи легко будувати Webслужбы, інші види компонентів, досить просто зберігати і отримувати інформацію з бази даних і інших сховищ даних; • реалізація, що поєднує побудову надійної і ефективного коду, є важливим чинником, що забезпечує успіх C#. 46


