Класи і масиви. Ініціалізація масивів значеннями даних з об’єктів класу. Приклади

Класи і масиви. Ініціалізація масивів значеннями даних з об’єктів класу. Приклади


Зміст



1. Ініціалізація масиву значеннями, що є членами даними об’єкту. Приклад

Можливі випадки, коли потрібно об’єднати змінні, які є членами об’єкта класу в масив. У нижченаведеному прикладі ініціалізується масив, що в якості ініціалізаторів використовує члени-даних об’єкту. На момент оголошення члени-даних об’єкту мають мати якісь змістовні значення.

Приклад визначає клас Radius, в якому оголошуються:

  • внутрішня private змінна radius;
  • внутрішній private метод CalcValues(), що заповнює значеннями public змінні length, area, volume;
  • загальнодоступні (public) внутрішні змінні класу length, area, volume, які містять відповідні значення довжини кола, площі круга та об’єму кулі для радіуса r;
  • конструктори класу;
  • методи доступу GetR(), SetR().

Лістинг класу наступний:

// клас, що реалізує величину радіуса деякої геометричної фігури
class Radius
{
    double radius; // змінна, що визначає радіус

    // внутрішній метод, що формує значення змінних length, area, volume
    void CalcValues(void)
    {
        const double pi = 3.141592653589;
        length = 2 * pi * radius;
        area = pi * radius * radius;
        volume = 4.0/3.0 * pi * radius * radius * radius;
    }

    public:
    double length; // довжина кола
    double area; // площа круга
    double volume; // об'єм кулі

    // конструктори
    Radius()
    {
        radius = 1;
        CalcValues(); // заповнити змінні length, area, volume
    }
    Radius(double radius)
    {
        this->radius = radius;
        CalcValues(); // заповнити змінні length, area, volume
    }

    // методи доступу
    int GetR(void) { return radius; }
    void SetR(double radius)
    {
        this->radius = radius;
        CalcValues(); // заповнити змінні length, area, volume
    }
};

Використання класу у функції main() або іншій функції:

Radius r(3); // об'єкт r класу Radius

// ініціалізація масиву V значеннями, що є членами даних об'єкту r
double V[] = {
    r.length,
    r.area,
    r.volume
};

double x;
x = V[0]; // x = 18.8496 - довжина кола
x = V[1]; // x = 28.2743 - площа круга
x = V[2]; // x = 113.097 - об'єм кулі

2. Ініціалізація масиву значеннями які повертають методи об’єкту класу. Приклад

Елементи масиву можуть бути ініціалізовані значеннями, які повертають методи деякого класу. У нижченаведеному прикладі демонструється ініціалізація масиву V значеннями, які повертають public методи класу Radius: Length(), Area(), Volume().

Оголошення класу має вигляд:

// клас, що реалізує величину радіуса деякої геометричної фігури
class Radius
{
    double radius; // змінна, що визначає радіус

    public:
    double Length()
    {
        return (2 * 3.1415 * radius);
    }

    double Area()
    {
        return (3.1415 * radius * radius);
    }

    double Volume()
    {
        return (4.0/3.0 * 3.1415 * radius * radius * radius);
    }

    // конструктори
    Radius()
    {
        radius = 1;
    }
    Radius(double radius)
    {
        this->radius = radius;
    }

    // методи доступу
    int GetR(void) { return radius; }
    void SetR(double radius)
    {
        this->radius = radius;
    }
};

Використання класу в деякому методі

Radius r(3); // об'єкт r класу Radius

// ініціалізація масиву V значеннями, які повертають методи об'єкту класу r
double V[] = {
    r.Length(),
    r.Area(),
    r.Volume()
};

double x;
x = V[0]; // x = 18.8496 - довжина кола
x = V[1]; // x = 28.2743 - площа круга
x = V[2]; // x = 113.097 - об'єм кулі


Зв’язані теми