Загальні положення

Фундаментальним нововведенням С++ – поняття клас. Структура об’єднує різні по типу змінні, а клас – об’єднує змінні і функції. Розглянемо комплектацію класу на прикладі його об’яви.

class Name {

private: int i, j;

float a, b;

double m[N];

in fun();

public: Name();

“Name();

char ch;

double *nP;

void fun1(int);

int fun2(); ]ob;

Тут: class – ключове слово,

Name – ім’я класу (ім’я нового типу);

private – мітка, за якою слідує група зачинених елементів класу: i, j, a, b, m, fun;

public – мітка, за якою слідує група відкритих елементів класу: Name, - Name, ch,

nP, fun1, fun2;

ob – об’єкт з ім’ям ob типу Name.

Об’єкт і показник на об’єкт можна об’явити окремо від об’яви класа:

Name ob1, * obP;

Перелік елементів класу укладений у фігурні дужки, об’ява закінчується знаком;. Елементами класу можуть бути змінні, функції, масиви, показники і тому подібні. Умовимся писати ім’я класу писати з прописної букви.

Клас – похідний тип даних, визначений програмістом. Ім’я класу - спеціфікатор типу.

Закриті елементи класу можуть бути використовані тільки іншими елементами класу, до відкритих елементів класу дозволений доступ із програми через об’єкти відповідного типу (також, як до елементів структури).

Кожний об’єкт є конкретна реалізація змінної конкретного типу class зі своїм ім’ям (ідентифікатором) і своїм набором даних.

В об’яву класу вказані прототипи, що входять в нього функцій-елементів. Після об’яви їх слід описати. Правило опису функцій-елементів класу:

void Name::fun1(int j) { тіло функції }

Тут: Name – ім’я класу,

fun1 – ім’я функції,

void – тип функції.

Приналежність функції до класу визначає його ім’я і нотацію ::.

Доступ до відкритиї елементів класу:

int m=5, n; char c, cc=’!’;

ob.ch=cc; // присвоєння

c=ob.ch; //застосування даних об’єкта ob

ob.fun1(m); //виклик функції fun1

n=ob1.fun2(); //виклик функції fun2

obP=&ob; //адресація

obP->fun1(n); //виклик функції fun1 через показник

При спробі викликати ії програми закритий елемент класу (наприклад, n=ob.fun(); або n=ob1.j;) компілятор вкаже на помилку.

Ініціалізація елементів класу при його об’яві заборонена, тому що виділення пам’яті здійснюється при об’яві об’єкту.

Окремо стоять дві функції з іменами, що співпадають з ім’ям класу: Name і ~ Name. Перший має назву конструктор (constructor), а другий, з попереднім знаком ~ (тильда) – деструктором (destructor). Обидві функції по визначенню мають тип void і описуються таким чином:

Name::Name() { тіло функції }

Name::”Name() { тіло функції }

Конструктор викликається автоматично при створені об’єкта класу. Деструктор викликається автоматично при знищені об’єкту.

Розглянемо наступну програму, в якій об’явлені структура client і клас з ім’ям Client. Клас містить закрити елементи: масив структурних об’єктів m, і функцію swop, а також відкрити елементи: конструктор, деструктор, функції enter, print, sort і sort1.

//файл PART4\4_03.ccp

// Клас Client

#include <string.h> //функція обробки рядків

#include “c:\CPP\SUBPROG\\roll.h”

#include “c:\CPP\SUBPROG\\roll_txt.h”

typedef char STRING;

#include <iomanip.h>

#define N 4

struct client { //об’ява структури client

int number; //з елементами: number

STRING name[11]; //name і balance

float balance; }

class Client { //об’ява класу client

//ptivate: закриті елементи класу за замовчуванням

client m[N]; //масив об’єктів типу client

void swop(int, int); //обмін значеннями

publsc: //відкриття елементів класу

Client(); // конструктор

~ Client(); // деструктор

void enter(); //функція введееня даних

void print(); // функція виведееня даних

void sort(int); //сортування масиву

void sort1(int); /* сортування масива з ручним введенням індексу до 10 спроб і

виведенням на екран */

}; //кінець об’яви класу Client

Client:: Client() { };

Client:: ~ Client() {cout<<ens1;} //звільнення буферу пам’яті


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: