Первомайський ЦНТТУМ
Гурток «Сучасні технології програмування»
Керівник гуртка Семенова Олена Анатоліївна
Розробка заняття на тему:
Тема: Розв'язування задач з використанням методів get та set
Мета: поглибити розуміння понять «геттери» та «сеттери», виробити практичні навички їх застосування, виховувати вміння встановлювати взаємозвʼязок та аналогію між програмними та реальними обʼєктами, розвивати увагу, спостережливість та логічне мислення.
Обладнання: ПК, ПЗ середовище програмування CodeBlocks.
Хід заняття
1. Організаційний момент та розминка.
Для початку, звичайно, розминка. Вона знову не зовсім звична, тому що:
-по-перше, темою її буде ... сьогодняшній день :)
- по-друге...а ось “по-друге” настане тоді, як ви розгадаєте 12 традиційних слів для розминки :)...
Так, про що там ми говорили... А.. про день... Він майже святковий, тому що сьогодні за китайським календарем настав, нарешті, рік... Назвіть його:
1.
2. Його стихією цього року є...?
3. Найбіл
ьш велична тварина зі Східного гороскопу:
4. Давня концепція, згідно якій числа визначають наше життя і існування всього, що нас оточує...
5 і далі — назви всіх тварин із 12 за китайським гороскопом, що залишились не названими... ;)
А ось тепер настає другий незвичний варіант… Далі замінимо традиційне написання ще двох рядків іншим завданням: складіть речення з використанням усіх цих слів. :)
2. Основна частина — повідомлення теми і мети заняття.
Розім'ялись? Це добре, тому що сьогодні нас чекає багато роботи і для голови і для рук, тому що, як казав колись мій улюблений вчитель “Навички дає тільки практика!”
Давайте почнемо з того, що розглянемо наше домашнє завдання і попередню тему. Судячи з ваших запитань, уважність ви не вмикали :).
Чому я так кажу? Тому, що у попередній темі є декілька навмисних помилок, які ви мали б побачити та самостійно виправити, щоб програма запрацювала. І більшість з вас їх не помітила, так, натомість просто сказали, що все працює, але ви не можете зрозуміти, як виконати домашнє завдання. :) Але ж не могло воно працювати ;).
Отже, давайте розбиратись із початку... :)
Останній варіант програми, за допомогою якої ми знайомились із геттерами і сеттерами
class Cats //Оголошуємо та описуємо клас котів
{private:
string name;
int age;
public:
string GetName ()
{return name;}
int GetAge ()
{return age;}
void SetName (string sName)
{name=sName;}
void SetAge (int sAge)
{name=sAge;} Тут не може бути ця змінна... А яка повинна бути? age
void Print ()
{ cout<<“cat1 name is - \t“<<name<<“\tcat1 age is - \t“<<age<<endl;}
};
іnt main ()
{
Cats cat1;
cat1.SetName =“Simone“; /І,відповідно, тут... Таким способом надається значення строковим змінним. А у нас що? Функція!! Адже наші методи сет і гет є саме функціями... Тож, як ми передаємо значення у функцію? :) ("Simone")
cat1.SetAge = 2;
cat1.Print();
return 0;
}
Вносимо зміни:
#include <iostream>
#include <windows.h>
using namespace std;
class Cats //Оголошуємо та описуємо клас котів
{private:
string name;
int age;
public:
string GetName ()
{return name;}
int GetAge ()
{ return age;}
void SetName (string sName)
{name=sName;}
void SetAge (int sAge)
{ age=sAge;}
void Print ()
{cout<<"cat1 name is - \t"<<name<<"\ncat1 age is - \t"<<age<<endl;}
};
int main()
{
Cats cat1;
cat1.SetName("Simone");
cat1.SetAge(2);
cat1.Print();
return 0;
}
А ось тепер дійсно все працює, як слід! :)
Запитання для перевірки: що ви побачите в консолі, якщо ви напишете отак ці два рядка:
cat1.SetName( );
cat1.SetAge( );
Добре, дібрались до домашнього завдання. Ним було виведення в консоль переданих значень імені та віку нашого об'єкта cat1 так, щоб вік збільшувався на одиницю.
Оскільки всі дані ми маємо отримувати із середини класу, то, відповідно, і зміни потрібно робити там же.
В даному випадку є два способи це зробити.
Вік, який ми передаємо в програмі командою “cat1.SetAge(2); “ виводиться в консоль методом Print, який отримує ці значення від метода (?) так, SetAge. Тому, щоб цей метод повернув значення на одиницю більше, ніж те, яке йому передаємо (“cat1.SetAge(2);”), потрібно там же, внутрі метода, його і збільшити... Не зрозуміло? Ну, ось так:
void SetAge (int sAge)
{ age=sAge+1;}
- sAge — це значення, яке ми отримали, в даному випадку, “2”.
Отже, при використанні першого способу програма буде виглядати ось так:
class Cats //Оголошуємо та описуємо клас котів
{private:
string name;
int age;
public:
string GetName ()
{return name;}
int GetAge ()
{ return age;}
void SetName (string sName)
{name=sName;}
void SetAge (int sAge)
{ age=sAge+1;}
void Print ()
{cout<<"cat1 name is - \t"<<name<<"\ncat1 age is - \t"<<age<<endl;}
};
int main()
{
Cats cat1;
cat1.SetName("Simone");
cat1.SetAge(2);
cat1.Print();
return 0;
}
Що ми побачимо в консолі?
Ваші завдання:
Сподіваюсь, після цих нескладних “тренувань” ви краще зрозуміли, як працюють методи get та set.
Приємного часу з С++! :)