Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 349; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.36.30 (0.015 с.) |