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