ИСПОЛЬЗОВАНИЕ ОБЩИХ И ЧАСТНЫХ ЭЛЕМЕНТОВ КЛАССА
Следующая программа INFOHIDE.CPP иллюстрирует использование общих и частных элементов класса. Программа определяет объект типа employee как показано ниже:
class employee
{
public:
int assign_values(char *, long, float);
void show_employee(void);
int change_salary(float);
long get_id(void);
private:
char name [64] ;
long employee_id;
float salary;
}
Как видите, класс защищает все свои элементы данных, объявляя их частными. Для доступа к элементам данных программа должна использовать интерфейсные функции. Ниже приведена реализация программы INFOHIDE.CPP:
#include iostream.h
#include string.h
class employee
{
public:
int assign_values(char *, long, float);
void show_employee(void);
int change_salary(float);
long get_id(void);
private:
char name [64];
long employee_id;
float salary;
);
int employee::assign_values(char *emp_name, long emp_id, float emp_salary)
{
strcpy(name, emp_name);
employee_id = emp_id;
if (emp_salary 50000.0)
{
salary = emp_salary;
return(0); // Успешно
}
else
return(-1); // Недопустимый оклад }
void employee::show_employee(void)
{
cout "Служащий: " name endl;
cout "Номер служащего: " employee_id endl;
cout "Оклад: " salary endl;
}
int employee::change_salary(float new_salary)
{
if (new_salary 50000.0)
{
salary = new_salary;
return(0); // Успешно } else return(-1); // Недопустимый оклад }
long employee::get_id(void)
{
return(employee_id) ;
}
void main(void)
{
employee worker;
if (worker.assign_values("Happy Jamsa", 101, 10101.0) == 0)
{
cout "Служащему назначены следующие значения" endl;}
worker.show_employee();
if (worker.change_salary(35000.00) == 0)
{
cout "Назначен новый оклад" endl;
worker.show_employee();
}
}
else
cout "Указан недопустимый оклад" endl;
}
Выберите время, чтобы исследовать операторы программы более подробно. Несмотря на то что программа достаточно длинна, ее функции на самом деле очень просты. Метод assign_values инициализирует частные данные класса. Метод использует оператор if, чтобы убедиться, что присваивается допустимый оклад. Метод show_employee в данном случае выводит частные элементы данных. Методы change_salary и get_id представляют собой интерфейсные функции, обеспечивающие программе доступ к частным данным. После успешной компиляции и запуска этой программы отредактируйте ее и попытайтесь обратиться напрямую к частным элементам данных, используя оператор точку внутри main. Так как вы не можете напрямую обратиться к частным элементам, компилятор сообщит о синтаксических ошибках.
Что такое интерфейсные функции
Для снижения количества возможных ошибок ограничивайте доступ программ к данным класса, определяя элементы данных класса как частные. Таким образом, программа не сможет обратиться к элементам данных класса, используя оператор точку. Вместо этого класс должен определять интерфейсные функции, с помощью которых программа может присваивать значения частным элементам. Интерфейсные функции в свою очередь, могут исследовать и скорректировать значения, которые программа пытается присвоить.