Учимся программировать на языке C++

         

ИСПОЛЬЗОВАНИЕ ОБЩИХ И ЧАСТНЫХ ЭЛЕМЕНТОВ КЛАССА


Следующая программа 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. Так как вы не можете напрямую обратиться к частным элементам, компилятор сообщит о синтаксических ошибках.

Что такое интерфейсные функции

Для снижения количества возможных ошибок ограничивайте доступ программ к данным класса, определяя элементы данных класса как частные. Таким образом, программа не сможет обратиться к элементам данных класса, используя оператор точку. Вместо этого класс должен определять интерфейсные функции, с помощью которых программа может присваивать значения частным элементам. Интерфейсные функции в свою очередь, могут исследовать и скорректировать значения, которые программа пытается присвоить.


Содержание раздела