Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основи об’єктно-орієнтованого програмуванняСодержание книги
Поиск на нашем сайте Рекомендована література: [15-61] Процедурне програмування – програмування основане на використанні підпрограм, що дозволяє підвищити ефективність програмування відносно складних програмних систем (с.41). Модульне програмування – програмування основане на використанні модулів – множини підпрограм з даними, які ці підпрограми обробляють. Структурне проектування - методологія проектування, основана на алгоритмічній декомпозиції. Об’єктно-орієнтоване проектування – це методологія проектування, яка поєднує в собі процес об’єктної декомпозиції і прийоми представлення логічної і фізичної, а також статичної і динамічної моделей системи, що проектується. Об’ктно-орієнтоване програмування (ООП) –програмування основане на використанні об’єктів, які є абстрактними моделями реальних об’єктів. Основні принципи ООП: абстрагування, інкапсуляція, успадкування, поліморфізм. Об’єктно-орієнтований підхід у програмуванні реалізується за допомогою спеціальних типів даних – класів (с.46) і ефективно використовується для розробки складних програмних систем. Основні переваги ООП: - можливість створення абстрактних програмних моделей предметів і понять і ієрархій їх систем. - зменшення трудомісткості програмування складних програм, забезпечення можливості повторного використання окремих програмних компонентів, спрощення модифікації програмних компонентів. Об’єктно-орієнтовані мови програмування – мови програмування високого рівня, побудовані на принципах ООП: Simula, Smalltalk, Ada, CLOS, C++, Object Pascal, Java, C#, Visual Basic.NET, Python та інші. Абстрагування полягає в тому, що модель (клас) містить не всі ознаки і властивості предмету (поняття), що представляється нею, а тільки ті, які істотні для програмної системи, що розробляється. Інкапсуляція – об’єднання даних і алгоритмів їх опрацювання в класі (с.46). Композиція – включення в поля класу об’єктів інших класів (с.50). Успадкування(inheritance) – успадкування дочірнім класом доступних (не закритих (private)) полів і методів батьківського класу таким чином, що вони стають членами цього дочірнього класу (с.54). Закрите успадкування (private inheritance) – усі відкриті і захищені члени базового класу стають закритими членами похідного класу. Використовується по замовчуванню. Приклад: class B:private A {}; Відкрите успадкування (public inheritance) – не змінює права доступу у похідному класі. Приклад: class B:public A {}; Захищене успадкування (protected inheritance) - усі відкриті члени базового класу стають захищеними членами похідного класу. Приклад: class B:protected A {}; Множинне успадкування – безпосереднє успадкування дочірним класом кількох базових (с.58). Приклад: class C:public A, public B {}; Поліморфізм – можливість функцій з однаковим ім’ям або методів з однаковим ім’ям батьківського і дочірнього класів виконувати різні команди. В основі статичного поліморфізму лежить механізм перевантаження функцій і операторів (с.55). В основі динамічного поліморфізму лежить принцип успадкування та механізм віртуальних функцій, які викликаються через вказівник або посилання (с.56). Структура (struct) - похідний тип даних, який використовується для опису об’єктів, які можуть складатися з даних різного типу (с.47). Подібним на структуру типом є клас. Приклад структури А: struct A {int x; float y;}; Об’єднання (union) - похідний тип даних, який використовується для опису об’єктів, які в кожен момент часу містять дані різного типу (с.47). Клас (class) – похідний тип даних, який використовується для опису об’єктів, в яких дані різного типу об’єднані з алгоритмами їх опрацювання (функціями) (с.46). Клас може описувати також набір обмежень на доступ до цих даних і функцій: class <назва класу>: <специфікатор доступу успадкування> <назва батьківського класу> { <специфікатор доступу>: <тип поля> <назва поля>; ...; <тип методу> <назва методу(<формальні параметри>)> { <реалізація алгоритму методу>; } ...; ...; } Члени класу - поля і методи класу (с.46). Поля класу – дані, які є членами класу. Методи класу – функції, які є членами класу, використовуються для операцій над об’єктами. Метод класу може бути визначений в класі, або зовні класу. В останньому випадку в класі повинен бути оголошений прототип методу. Приклад визначення методу print класу A поза класом: void A::print(){cout<<b;} Об’єкт (екземпляр класу) – дане певного класового типу (с.46). Об’єкту властиві стан, поведінка і ідентичність. Приклад: A obj;//об’єкт obj класу A Конструктор – метод класу (функція), який має ім’я класу і використовується для створення екземплярів класу (с.47). Викликається при створенні об’єкту. Приклад визначення конструктора класу А: A::A(int x){a=x;}//ініціалізація поля a параметром xКонструктор копії – конструктор, який використовує в якості аргументу екземпляр класу, для якого цей конструктор визначений (с.49). Використовується для створення копій об’єкта. Приклад: A::A(A &obj){a=obj.a;}//ініціалізація поля a параметром obj.a Деструктор - метод класу (функція), який має ім’я класу зі символом ~ і використовується для знищення екземплярів класу (с.48). Викликається автоматично при знищенні об’єкту. Приклад: A::~A() {cout<<"destructor";} Спеціфікатори доступу членів класу (public, private, protected) використовуються для визначення доступності членів класу (с.54): public (відкритий) - доступність для будь-якої зовнішньої функції; private (закритий) - доступність тільки для методів класу, використовується по замовчуванню; protected (захищений) - доступність тільки для методів класу і похідних класів. Абстрактні класи - це класи, які містять хоча б одну чисто віртуальну функцію і, тому, не можуть мати екземплярів. Використовуються тільки для породження похідних класів. Приклад: class A//абстрактний клас A { public: int a; virtual void f()=0;//чисто віртуальний метод }; Інтерфейс – зовнішній вигляд класу, об'єкту або модуля, що виділяє його істотні риси і не показує внутрішнього устрою і деталей поведінки. У С++ це абстрактний клас, який містить тільки оголошення методів і статичні константні поля. Реалізація – на відміну від інтерфейсу - внутрішнє представлення класу, об'єкту або модуля, включаючи деталі його поведінки. Ієрархія класів – сукупність класів побудована на основі принципу успадкування (с.54). Клас, який лежить в основі ієрархії називається базовим (батьківським), а клас, який його успадковує називається похідним (дочірнім). Приклад ієрархії: class A {}; class B:public A {}; class C:public B {}; Віртуальні (узагальнені) методи (функції) – методи, які оголошуються в базовому класі за допомогою слова virtual та використовуються для реалізації принципу динамічного поліморфізму (с.56). Віртуальна функція може бути перевизначена в похідних класах, отже, її реалізація визначається множиною методів, оголошених у всіх класах дерева успадкування. Приклад: virtual void f(){cout<<a;} Таблиця віртуальних методів – таблиця вказівників на методи, яка існує для кожного класу. Всі екземпляри класу містять вказівник на цю таблицю. Чисто віртуальна функція – метод класу, який не має реалізації. Приклад: virtual void f()=0; Перевантаження функцій-членів класу полягає в тому, що декілька різних функцій-членів використовують одне і теж ім’я, при цьому, кожне перевизначення функції повинно використовувати інші типи параметрів або їх кількість (с.55). Приклад перевантаження функції s: void s(int x){cout<<x;} void s(int x,int y){cout<<x+y;} Дружні функції – функції, які не є членами класу але володіють усіма правами члена класу і оголошуються в класі за допомогою слова friend (с.53). Мають доступ до закритих і захищених полів класу. Приклад: friend void f(); Статичні поля – змінні члени класу, які оголошуються за допомогою слова static і належать цьому класу, а не його об’єктам. Їх визначення повинно знаходитись поза класом. Приклад: class A {static int a;};//оголошення статичного поля а int A::a=0;//визначення поля а Статичні методи – функції члени класу, які оголошуються за допомогою слова static, і можуть звертатись тільки до статичних полів і методів. Можуть викликатись як звичайні функції: <клас>::<метод>. Приклад: class A {public: static int a;//статичне поле static void f(){cout<<a;};//статичний метод }; Константні методи - функції члени класу, які оголошуються за допомогою слова const, і не можуть змінювати значення полів класу. Приклад: class A {public: int a; void f() const {cout<<a;};//константний метод }; Вказівник this – псевдозмінна-вказівник, який використовується в методі класу і вказує на об’єкт, який викликав цей метод. Приклад: void A::f(){this->a=1;}Перевантаження операторів основане на перевантаженні операторних функцій, які створюються за допомогою слова operator і визначають дії перевантажених операторів стосовно певного класу (с.56). Приклад: A A::operator+(const A& obj) {return A(a+obj.a);}//повернути об’єкт, у якого поле а є сумою полів доданків Шаблони (template) – механізм реалізації статичного поліморфізму, який дозволяє створювати узагальнені функції і класи, які працюють з типом даних, який заданий як параметр (с.62). Таким чином, одну і ту ж функцію, або клас можна застосовувати до різних типів даних, не використовуючи окремі варіанти для кожного типу. Конкретна версія шаблонної функції або класу створюється на етапі компіляції і називається спеціалізацією. Шаблони оголошуються за допомогою слова template. Приклад шаблону функції: template <typename T>//список шаблонних параметрів T sum(T a, T b){return a+b;}; Узагальнене програмування основане на використанні шаблонів і призначене для створення програмних компонентів, які не залежать від типу даних.
|
||
|
Последнее изменение этой страницы: 2017-01-24; просмотров: 463; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |