МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
МОДЕЛЬ ОБ’ЄКТНО -ОРІЄНТОВАНОГО ПРОГРАМУВАННЯІСТОРІЯ ПРОГРАМУВАННЯ МОДЕЛЬ ОБЪЕКТНО-ОРІЄНТОВАНОГО ПРОГРАМУВАННЯ Л Е К Ц И Я 1 1.абстракція даних 2.інкапсуляція 3.успадкування 4.поліморфізм 5.методологіяООП На початку 60х років почалася епоха структурного програмування. Воно характерно використанням автономних підпрограм, у яких підтримуються рекурсія й локальні змінні, і абсолютним неприйняттям операторів GOTO. З появою структурного програмування з'явилася можливість розбивати програми на складові елементи. Застосовуючи ці принципи програмування, з'явилася можливість створення й підтримки програм у кілька десятків тисяч рядків. Безсумнівно, що структурне програмування принесло видатні результати, але, як виявилося, навіть ці принципи програмування стають неспроможними, коли програма досягає певної довжини. Для написання більш складних програм потрібен був новий підхід до програмування. Мова C++ був створений як об'єктно-орієнтоване продовження одного із самих популярних у світі мов для розробки комерційних програм мовою C. Для реалізації ідей об'єктного програмування була потрібна надійне й ефективне середовище програмування. Мова C була розроблена як щось середнє між мовами високого рівня для бізнес додатків і високоефективною, але важкою у використанні мовою низького рівня – асемблер. Мова C є структурною, тобто рішення задачі розбивається на невеликі ділянки коду, що реалізує певні дії, називані процедурами. Програми, створювані на початку двадцять першого століття, значно складніші програм створених наприкінці минулого століття. Звичайно програми на підставі процедурних підходів важко керовані, їх важко супроводжувати й модернізувати. Графічний користувацький інтерфейс, Internet, цифровий і бездротовий телефонний зв'язок, a також підтримка нових технологій суттєво збільшили складність проектів, при цьому вимоги користувачів до якості користувацького інтерфейсу значно виросли. Розробка програмного забезпечення на підставі об'єктно-орієнтованих підходів виявилася виходом з тупика. Об'єктно-орієнтовані мови програмування забезпечують міцний зв'язок між структурами даних і методами, за допомогою яких ними маніпулюють. Але самою більшою перевагою об'єктно-орієнтованого програмування є те, що програміст більше не зобов'язаний опікуватися структурою даних і функціями. Усе, що необхідно, – це правильно використовувати відповідний об'єкт. Іншою перевагою об'єктно-орієнтованого програмування є те, що модель ООП більш адекватна моделі навколишнього світу й людського мислення. Мир наповнений об'єктами: автомобілі, собаки, дерева, хмари, квіти – усе це об'єкти. Кожний об'єкт має властивості (швидкий, дружелюбний, коричневий, пухнатий, милий). Об'єкти поводяться певним чином (їдуть, гавкають, ростуть, проливаються дощем, в'януть). Суть структурного програмування є вистава програми у вигляді сукупності взаємозалежних процедур і даних, якими ці процедури оперують. Використовуючи структурне програмування, середній програміст може створювати й супроводжувати програми до декількох десятків тисяч рядків довжиною. Для написання більш складних задач знадобився новий підхід до програмування, який і був реалізований у моделі ООП. Впровадження в практику дружнього користувацького інтерфейсу з рамковими вікнами, меню й екранними кнопками визначило новий підхід до програмування. Програми стали виконуватися не послідовно від початку до кінця, а окремими блоками, у відповідь на деяка подію (клацання на кнопці). Програма стає усе більш інтерактивною, що треба враховувати при її розробці. ООП прагне задовольняти цим вимогам. Суть ООП полягає в тому, щоб використовувати дані та функції, які працюють із цими даними, як єдиний об'єкт. Модель ООП заснована на декількох основних концепціях. Абстракція даних – це можливість визначати нові типи даних, з якими можна працювати майже так само, як і з основними типами даних. Такі типи часто називаються абстрактними типами даних, хоча термін "типи даних, обумовлені користувачем" є більш точним. Інкапсуляція – це механізм, який поєднує дані й код, що маніпулює цими даними, з метою захисту того й іншого від стороннього втручання та приховання деталей реалізації. Для реалізації цих двох основних концепцій у мові С++- використовуються класи. Терміном клас визначається тип об'єктів. При цьому кожний представник (або екземпляр) класу називається об'єктом. Кожний об'єкт завжди має свій, унікальний стан, обумовлений поточними значеннями його даних-членів. Функціональне призначення класу визначається можливими діями над об'єктами класу, які задаються його функціями-членами (методами). У кожному класі визначається пам'ять для зберігання даних, і встановлюються припустимі операції для кожного об'єкта даних даного типу. НАСЛІДУВАННЯ – це процес, за допомогою якого один об'єкт може здобувати властивості іншого. Це означає, що в ООП на основі вже існуючих класів можна будувати похідні класи. Похідний клас також називають класом-нащадком, а батьківський клас – класом-предком. При цьому похідний клас має наступні властивості: успадковує елементи-дані й члени від своїх батьківських класів; може додавати до наслідуваних членів свої власні дані й методи; у похідному класі наслідувані функції можуть бути перевизначені. У такий спосіб можна побудувати цілу ієрархію класів, зв'язаних між собою відношенням батько – нащадок. Термін базовий клас використовується як синонім батьківському класу в ієрархії класів. Якщо об'єкт успадковує свої атрибути ( дані-члени й функції-члени) від одного батьківського класу, говорять про просте спадкування. Якщо об'єкт успадковує атрибути від декількох батьків, говорять про множинне наслідування. Наслідування дозволяє значно скоротити визначення класу нащадка завдяки тому, що класи нащадки є розширеннями батьківських класів. Поліморфізм ( від грецького "polymorphos" – множинність форм) – це властивість коду поводитися по-різному, залежно від ситуації, що виникає в момент виконання. Поліморфізм – це характеристика функцій-членів класу й проявляється, зокрема, у можливості використання одного імені функції-члена для функцій, що мають різні типи аргументів. Якщо виконувані функцією дії визначаються типом переданих їй аргументів, то цей тип поліморфізму називається перевантаженням функції. Якщо виконувані операцією дії визначаються типом операндів переданих їй аргументів, то цей тип поліморфізму називається перевантаженням операції. Інакше кажучи, поліморфізм – це здатність покажчиків на базовий клас приймати різні форми при використанні їх для виклику віртуальних функцій. Така можливість в C++ є результатом пізнього зв'язування. При пізньому зв'язуванні адреси викликуваних функцій-членів визначаються динамічно під час виконання програми, а не статично під час компіляції, як у традиційних мовах, у яких застосовується раннє зв'язування. Пізнє зв'язування виконується тільки для віртуальних функцій. Читайте також:
|
||||||||
|