§ 22. Тип данных класс (class)

22.3. Пример работы с классом

При использовании объектов система программирования Code::Blocks выдает подсказки для полей и методов пользовательских классов, так же как и для встроенных классов.

Для пользовательских классов, объявленных в текущем файле (не вынесенных в отдельный файл), в списке присутствуют и приватные компоненты класса. Приватные компоненты класса помечаются красным, а публичные — зеленым. Кружочек возле компонента класса означает, что он является полем. Кружочек в скобках указывает на метод, значок плюс возле кружочка — на то, что это конструктор.

Пример 22.6. Описать класс IntNumber для работы с целым числом. В классе определить функции для реализации следующих методов: проверки числа на простоту, подсчета количества цифр в числе, «переворота», получение процентов от числа. Продемонстрировать работу методов.

Этапы выполнения задания

I. Исходные данные: переменная s — число.

II. Результат: демонстрация работы методов класса.

III. Алгоритм решения задачи.

1. Ввод исходных данных.
2. 
Реализуем следующие методы.

2.1. Логическая функция simple() проверит, является ли число простым. Проверка числа на простоту была реализована в примере 11.26. 
2.2. Функции kol_numbers() для подсчета количества цифр в числе (реализована в примере 8.17) и переворота числа perevorot() будут возвращать значения int
2.3. Функция percent(double z) для получения процентов от числа будет зависеть от параметра (величина процента) и возвращать тип double.

3. Вывод результатов.

IV. Описание переменных: n – IntNumber, IntNumber – class.

Пример 22.6.

V. Программа:

#include <iostream>

#include <сmath>

 

using namespace std;

 

class IntNumber

{

  int field;

  public:

    //конструктор класса

    IntNumber(int fi) {field = fi;}

    //получение значения числа

    int get_num() {return field;}

  //проверка на простоту

    bool simple();

    //количество цифр числа

    int kol_numbers();

    //переворот числа

    int perevorot();

  //процент от числа

    double percent(double z);

};

 

bool IntNumber::simple()

{

  int i = 2;

    while (field % i != 0 &&

           i * i <= field)

      i++;

    return(* i > field);

}

 

int IntNumber::kol_numbers()

{

  int i = 0;

  int s = field;

  while (> 0){

    i++;

    s /= 10;

  }

  return i;

}

 

int IntNumber::perevorot()

{

  int x = 0;

  int s = field;

    while (>= 1){

      x = x * 10 + s % 10;

      s /= 10;

  }

    return x;

}

 

double IntNumber::percent(double z)

{

  return field * z / 100;

}

 

int main()

{

  int a;

  cout << "vvedi chislo" << endl;

  cin >> a;

  IntNumber n(a);

  if (n.simple()){

    cout << "chislo " << n.get_num();

    cout << " - prostoe" << endl;

  }

  else {

    cout << "chislo " << n.get_num();

    cout << " - sostavnoe" << endl;

  }

  cout << "v chisle " << n.get_num();

  cout << " kol-vo cifr = " ;

  cout << n.kol_numbers() << endl;

  cout << "perevertysh chisla - ";

  cout << n.perevorot() << endl;

  double x;

  cout << "vvedi %" << endl;

  cin >> x;

  cout << x << "% ot chisla ";

  cout << n.get_num() << " - ";

  cout << n.percent(x) << endl;

  return 0;

}

VI. Тестирование.