- •1. Компіляція і виконання програм в середовищі Windows
- •Void main(void) {
- •Void main(void) {
- •Void main
- •3. Виведення повідомлень на екран
- •Void main(void)
- •4. Програми зберігають інформацію в змінних
- •Void main(void)
- •Int test_score;
- •Int student_age, test_score, grade;
- •Void main(void)
- •Void main(void)
- •5. Виконання простих операцій
- •Void main(void)
- •6. Введення даних з клавіатури
- •Void main(void)
- •Int first, second; // Числа, введені з клавіатури
- •Void main(void)
- •7. Програма Приймає рішення
- •If (умова виконується)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Int test_score;
- •8. Повторення одного або декількох операторів
- •Void main(void)
- •9. Функції
- •Void show_message(void)
- •Void main(void)
- •Void show_number(int value)
- •Void main(void)
- •Void show_big_and_little(int а, int b, int c)
- •Void main(void)
- •Void show_employee(int age, float salary)
- •Void main(void)
- •10. Прототипи функцій
- •Void main(void)
- •11. Зміна значень параметрів
- •Void cbange_values(int *a, int *b)
- •Void main(void)
- •12.Локальні змінні і ділянка видимості
- •Void some_function(void)
- •Int count;
- •Void sound_beeps(int beeps)
- •Void main(void)
- •13.Глобальні змінні
- •Void main(void)
- •Void first_change(void)
- •Void second_change(void)
- •Void main(void)
- •Void show_numbers(int number)
- •Void main(void)
- •14. Перезавантаження функцій
- •Int add_values(int а, int b)
- •Int add_values(int а, int b, int с)
- •Void main(void)
- •Void main(void)
- •Використовування посилань як параметРів
- •Void change_value(int &alias)
- •Void main(void)
- •Int number;
- •Void change_value(int &alias)
- •16. Зберігання значень в масивах
- •Int test_scores[100];
- •Int employee_age[100];
- •Void main(void)
- •Void main(void)
- •17. Передача масивів у функції
- •Void some_function(int array[], int number_of_elements);
- •Void show_array(int array[ ], int number_of_elements)
- •Void main(void)
- •18. Символьні рядки
- •Void main(void)
- •Int index;
- •19. Передача рядків у функції
- •Void show_string(char string[ ])
- •Void main (void)
- •Void show_string(char string[ ])
- •20. Зберігання зв'язаної інформації в структурах
- •Int office_number;
- •21. Структури і функції
- •Int office_number;
- •Void show_employee(employee worker)
- •Void main(void)
- •Void show_employee(void)
- •23. Визначення методів класу зовні класу
- •Void show_employee(void);
- •Void employee::show_employee(void);
- •Void main(void)
- •24. Конструктор
- •Void show_employee(void);
- •Int change_salary(float);
- •25. ДеструКтор
- •Void show_employee(void);
- •Int change_salary (float);
- •Void employee :: show_employee(void)
- •Void main(void)
- •26. Спадковість
- •Void show_employee (void);
- •Int stock_options;
- •Void show_manager(void);
- •Int stock_options;
- •Void main(void)
- •27. Множинна Спадковість
- •Void main(void)
- •Int processor, int speed, int ram) :
- •Int processor, int speed, int ram);
- •Void show_work_station(void);
- •Int processor, int speed, int ram) :
- •28. Приватні елементи і друзі
- •Void show_book(void);
- •Void main(void)
- •29. Використовування шаблонів функцій
- •Void main(void)
- •Void main(void)
- •30. Використовування шаблонів класів
- •Void main(void)
- •Void main(void)
- •Values.Show_array( );
- •Void main(void)
- •Void main(void)
- •Int size;
- •Void main(void)
- •Очищення пам'яті, якщо вона більше не потрібна
- •Void main(void)
- •Void main(void)
- •32. Керування вільною пам'яттю
- •Void end_program(void)
- •Void end_program(void)
- •Void main(void)
- •Створення власних операторів new і delete
- •Void main(void)
- •Void main(void)
- •33.Додаткові можливості cin і cout
- •Файл iostream.H
- •Використовування cout
- •Void main (void)
- •Void main(void)
- •Використовування символу-заповнювача
- •Void main(void)
- •Керування виведенням чисел з плаваючою крапкою
- •Void main(void)
- •Виведення і введення одного символу за один раз
- •Void main(void)
- •Void main(void)
- •Введення з клавіатури по одному символу за один раз
- •Void main(void)
- •Читання з клавіатури цілого рядка
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Читання з вхідного файлового потоку
- •Ifstream input_file("filename.Ext");
- •Void main(void)
- •Ifstream input_file("bookinfo.Dat");
- •Читання цілого рядка файлового введення
- •Void main(void)
- •Визначення кінця файлу
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Перевірка помилок при виконанні файлових операцій
- •Void main(void)
- •Закриття файлу, якщо він більше не потрібен
- •Керування відкриттям файлу
- •Ifstream output_file("filename.Ext", ios::app);
- •Ifstream output_file("filename.Ext", ios::out | ios::noreplace); виконання операцій читання і запису
- •Input_file.Read(buffer, sizeof(buffer));
- •Void main(void)
- •Void main(void)
- •Ifstream emp_file("employee.Dat");
- •35. Вбудовані функції і асемблерні коди
- •Void show_message(int count, char *message)
- •Void main(void)
- •Void main(void)
- •Використовування ключового слова inline
- •Inline int max(int а, int b)
- •Inline int min(int а, int b)
- •Void main(void)
- •Вбудовані функції і класи
- •Void show_employee(void)
- •Inline void employee::show_employee(void)
- •Використовування операторів мови асемблера
- •Void main(void)
- •36. Використання аргументів командного рядка
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[])
- •Void main(int argc, char *argv[]) виконання циклу до тих пір поки argv he містить null
- •Void main(int argc, char *argv[])
- •Трактування argv як Вказівника
- •Void main(int argc, char **argv)
- •Void main(int argc, char **argv)
- •Аргументи командного рядка
- •Доступ до змінних середовища операційної системи
- •Void main(int argc, char *argv[], char *env[])
- •Void main(int argc, char *argv[], char *env[])
- •37. Використовування констант і макрокоманд
- •Використовування іменованих констант
- •Void main(void)
- •Void main(void)
- •Використовування іменованих констант для спрощення зміни тексту програми
- •Void main(void)
- •Int test_scores[50];
- •Int student;
- •Void main(void)
- •Int test_scores[class_size];
- •Int student;
- •Заміна виразів макрокомандами
- •Void main(void)
- •Void main(void)
- •Чим відрізняються макрокоманди від функцій ?
- •Використовування макрокоманд надає велику гнучкість програмам
- •Void main(void)
- •38. Поліморфізм
- •Void main(void)
- •Int amount;
- •Int amount;
- •Void main(void)
- •Int amount;
- •Void main(void)
- •Література
Void main(void)
{
phone telephone("555-1212"); telephone.dial("212-555-1212");
}
Якщо потрібно зробити різницю між кнопковим і дисковим телефоном, або виокремити платний дзвінок, тоді можна скористатися спадковістю і створити класи touch_tone і pay_phone з класу phone, як показано нижче:
class touch_tone : phone {
public:
void dial(char *number) {cout << "Пік пік Набір номера"
<< number << endl; )
touch_tone (char *number) : phone(number) { }
};
class pay_phone : phone {
public:
void dial (char *number) { cout << "Будь ласка, сплатіть "
<< amount << "центів" << endl;
cout << "Набір номера " << number
<< endl; }
pay_phone(char *number, int amount) : phone(number) {
pay_phone: : amount = amount; }
private:
Int amount;
};
У цьому випадку класи touch_tone і pay_phone визначають свій власний метод dial. Програма NEWPHONE.CPP використовує ці класи для створення об'єктів rotary, touch_tone і pay_phone:
class phone {
public:
void dial (char *number) { cout << "набір номера "
<< number << endl; }
void answer(void) { cout << "Очікування відповіді" << endl; }
void hangup(void){ cout << "Дзвінок виконано-покласти слухавку"
<< endl; }
void ring(void) { cout << "дзвінок, дзвінок, дзвінок"
<< endl; }
phone(char <<*number) { strcpy(phone::number, number); };
protected:
char number[13];
};
class touch_tone : phone {
public:
void dial(char *number) {cout << "Пік пік Набір номера"
<< number << endl; )
touch_tone (char *number) : phone(number) { }
};
class pay_phone : phone {
public:
void dial (char *number) { cout << "Будь ласка, сплатіть "
<< amount << "центів" << endl;
cout << "Набір номера " << number
<< endl; }
pay_phone(char *number, int amount) : phone(number) {
pay_phone: : amount = amount; }
private:
Int amount;
};
Void main(void)
{
phone rotary("303-555-1212");
rotary.dial("602-555-1212");
touch_tone telephone("555-1212");
telephone.dial("212-555-1212");
pay_phone city_phone("555-1111", 25);
city_phone.dial("212-555-1212");
}
Якщо відкомпілювати і виконати цю програму, на екрані дисплея з'явиться наступне повідомлення:
С:\> NEWPHONE <Enter>
Набір номера 602-555-1212
Пік пік Набір номера 212-555-1212
Будь ласка, сплатіть 25 центів
Набір номера 212-555-1212
Попередня програма не використовує поліморфні об'єкти. Інакше кажучи, в ній немає об'єктів, які б змінювали форму. Модифікуючи цю програму можна створити поліморфний об’єкт – телефон. Тобто для одного дзвінка об'єкт-телефон міг би представляти кнопковий апарат, для іншого виступав би як платний телефон і т.д. Інакше кажучи, від одного дзвінка до іншого об'єкт-телефон змінює форму. В цих різних класах телефону існує єдина відмінна функція - це метод dial. Для створення поліморфного об'єкту ви спочатку визначаєте функції базового класу, які відрізняються від функцій похідних класів тим, що вони віртуальні, передуючи їх прототипи ключовим словом virtual, як показано нижче:
class phone {
public:
virtual void dial (char *number) { cout << "Набір номера "
<< number << endl; }
void answer(void) { cout << "Очікування відповіді" << endl; }
void hangup(void){cout<<"Дзвінок виконано-покласти слухавку"
<< endl; }
void ring(void) { cout << "Дзвінок, дзвінок, дзвінок"
<< endl; }
phone(char *number) { strcpy(phone::number, number); }; protected:
char number[13];
};
Потім потрібно у програмі створити вказівник на об'єкт базового класу phone:
phone *poly_phone;
Для зміни форми об'єкта потрібно присвоїти цьому вказівнику адресу об'єкта похідного класу, як показано нижче:
poly_phone = (phone *) &home_phone;
Символи (phone *), які слідують за оператором присвоєння, є оператором приведення типів, який повідомляє компілятору C++, що необхідно присвоїти адресу змінної одного типу (touch_tone) вказівнику на змінну іншого типу (phone). Оскільки програма може присвоїти вказівнику об'єкту poly_phone адреси різних об'єктів, то цей об'єкт може змінювати форму, а отже, є поліморфним. Наступна програма POLYMORP.CPP використовує цей метод для створення об'єкту-телефону. Після запуску програми об'єкт poly_phone змінює форму з дискового телефону на кнопковий, а потім на платний:
class phone {
public:
void dial (char *number) { cout << "набір номера "
<< number << endl; }
void answer(void) { cout << "Очікування відповіді" << endl; }
void hangup(void){ cout << "Дзвінок виконано-покласти слухавку"
<< endl; }
void ring(void) { cout << "дзвінок, дзвінок, дзвінок"
<< endl; }
phone(char <<*number) { strcpy(phone::number, number); };
protected:
char number[13];
};
class touch_tone : phone {
public:
void dial(char *number) {cout << "Пік пік Набір номера"
<< number << endl; )
touch_tone (char *number) : phone(number) { }
};
class pay_phone : phone {
public:
void dial (char *number) { cout << "Будь ласка, сплатіть "
<< amount << "центів" << endl;
cout << "Набір номера " << number << endl; }
pay_phone(char *number, int amount) : phone(number) {
pay_phone: : amount = amount; }
private:
