
- •Тема 1. Обєктно - орієнтовне програмування 4
- •Тема 2. Основні концепції парадигми програмування 14
- •Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) 88
- •Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library) 91
- •Тема 9. Шаблони проектування stl (Standard Template Library) 104
- •Лекція № 1 Тема 1. Обєктно - орієнтовне програмування План лекції
- •Зміст лекції Вступ.
- •1.1. Поняття те визначення ооп.
- •1.2. Об' єктно - орієнтована методологія (оом).
- •1.3. Об' єктно - орієнтовані мови програмування.
- •1.4. Системи і середовища програмування топ.
- •Лекція № 2 Тема 2. Основні концепції парадигми програмування План лекції
- •Зміст лекції
- •2.1. Парадигми програмування: об' єктно - орієнтована парадигма.
- •2.2. Основні концепції топ.
- •2.3. Моделювання. Об' єктна декомпозиція.
- •2.4. Ідеї топ. Топ принцип - поліморфізм.
- •2.5. Інкапсуляція. Наслідування.
- •2.6. Об' єктний рефакторинг.
- •2.7. Системи і середовища програм.
- •Лекція № 3
- •План лекції
- •Зміст лекції
- •3.1. Абстракції даних
- •3.4. Типи, що перераховують
- •3.5. Вирази
- •3.6. Інструкції
- •Лекція № 4
- •План лекції
- •Зміст лекції
- •4.2. Структура програми, функція main без параметрів.
- •4.3. Основні типи даних.
- •4.4. Константи, змінні, вирази та пріоритет операцій.
- •4.5. Базові конструкції структурного програмування - галуження, цикл, передача управління.
- •4.6. Загальні та бітові логічні операції.
- •4.7. Тернарний опертор.
- •4.8. Вказівники і посилання; масиви.
- •Лекція № 5
- •План лекції
- •Зміст лекції
- •5.1. Користувацькі типи - typedef, enum, struct, union. Функції.
- •5.2. Передача параметрів та повернення значень з функцій.
- •5.3. Рекурсія, перевантаження функцій, функція main з параметрами.
- •5.4. Глобальні і локальні визначення, простори імен та їх використання.
- •5.5. Директиви препроцесора.
- •5.6. Стандартний ввід/вивід - бібліотека stdio.H.
- •5.7. Основи потокового введенню/виводу - бібліотека iostream.H.
- •Лекція № 6
- •План лекції
- •Зміст лекції
- •6.2. Екземпляри класів або об' єкти.
- •6.3. Поля (атрибути) та методи.
- •6.4. Специфікатори доступу (private, protected, public).
- •6.5. Вказівник this.
- •6.6. Перевантаження методів.
- •6.7. Конструктори і деструктори класів.
- •6.8. Перевантаження конструкторів.
- •6.9. Конструктори копіювання та перетворення.
- •6.10. Закон Деметри
- •Лекція № 7 Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) План лекції
- •2.Основні поняття та принципи.
- •3.Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •4.Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності. Зміст лекції
- •7.1. Сфера застосування.
- •7.2. Основні поняття та принципи.
- •7.3. Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •7.4. Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності.
- •Лекція № 8 Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library)
- •План лекції
- •Зміст лекції
- •8.1. Бібліотека стандартних шаблонів - stl (призначення, основні можливості, сфера застосування).
- •8.2. Стандартні потоки і потокові класи.
- •8.3. Стрічки (основні операції та функції; переваги порівняно із c - стрічками).
- •8.4. Поняття про контейнери, ітератори, функціональні об' єкти та алгоритми stl.
- •Лекція № 9 Тема 9. Шаблони проектування stl (Standard Template Library) План лекції
- •1.Шаблони проектування (designpatterns).
- •Зміст лекції
- •9.1. Шаблони проектування (designpatterns).
- •9.2. Класифікація шаблонів проектування stl (creational, structural, behavior, concurrencypatterns).
- •9.3. Можливості застосування шаблонів проектування stl.
4.6. Загальні та бітові логічні операції.
Операції C++ детально і систематично описуються в #с.7; прочитайте, будь ласка, цей розділ. Тут же приводитися коротке зведення і деякі приклади. Після кожної операції приведене одне або більше за її загальновживані назви і приклад її використання. У цих прикладах ім 'я_класу - це ім 'я класу, член - ім 'я члена, об' єкт - вираження, що дає в результаті об' єкт класу, покажчик - вираження, що дає в результаті покажчик, выр - вираження, а lvalue - вираження, денотирующее неконстантний об' єкт. Тип може бути абсолютно довільним ім 'ям типу (з *, () і тому подібне) тільки коли він стоїть в дужках, в усіх інших випадках існують обмеження.
Унарні операції і операції привласнення правоассоциативны, вусі інші левоассоциативны. Це означає, що a=b=c означає a=(b=c), a+b+c означає (a+b)+c, і *p++ означає *(p++), а не (*p)++.
Побітові логічні операції застосовуються до цілих, тобто до об' єктів типу char, short, int, long і їх unsigned аналогам, результати теж цілі.
Одне із стандартних застосувань побітових логічних операцій - реалізація маленької великої кількості (вектору бітів). У цьому випадку кожен біт беззнакового цілого представляє один член великої кількості, а число членів обмежене числом бітів. Бінарна операція & інтерпретується як перетин, | як об' єднання, а як різниця. Для іменування членів такої великої кількості можна використовувати перерахування. Вісь маленький приклад, запозичений з реалізації (не призначеного для користувача інтерфейсу),:
enum state_value { _good=0, _eof=1, _fail=2, _bad=4};
// // // // добрі, кінець файлу, помилка, погано
Визначення _good не є необхідним. Я просто хотів, щоб стан, коли усе гаразд, мав відповідне ім 'я. Стан потоку можна встановити заново таким чином:
cout.state = _good;
Наприклад, так можна перевірити, чи не був зіпсований потік або припустилася операційної помилки:
if (cout.state&(_bad|_fail)) // не good
Ще одні дужки потрібні, оскільки & має вищий пріоритет, ніж |. Функція, що досягає кінця введення, може повідомляти про це так:
cin.state |= _eof;
Операція |= використовується тому, що потік вже може бути зіпсований (тобто, state==_bad), тому
cin.state = _eof;
очистило б цю ознаку. Відмінність двох потоків можна знаходити так:
state_value diff = cin.state^cout.state;
У разі типу stream_state (стан потоку) така різниця не дуже потрібна, але для інших схожих типів вона виявляється найкориснішою. Наприклад, при порівнянні вектору біт, що представляє безліч переривань, які обробляються, з іншим, що представляє переривання, що чекають обробки.
4.7. Тернарний опертор.
Тернарный оператор - шедевр лаконічності і виразності, що з'явився уперше в мові Сі. Він перекочував у вусі Си-подобные мови, якось: C++, C#, Java, PHP, JavaScript та ін. Як це не дивно, немало навіть досвідчених програмістів уникають тернарный оператор, використовуючи для перевірки умови лише старий добрий if - else. Це властиво в основному розробникам, що багато років програмує на Delphi. Там такого чудового оператора немає. У статті я покажу, наскільки ця конструкція може перетворити програмний код.
Нижче наведене декілька прикладів заміни if - else на тернарный оператор.
Обчислення факторіалу (Сі) :
<br />
int fact(int x)<br />
{<br />
if (x == 0)<br />
return 1;<br />
else<br />
return x * fact(x - 1);<br />
}<br />
<br />
int fact(int x)<br />
{<br />
return (x == 0)? 1: x * fact(x - 1);<br />
}<br />