Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOAP.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
494.59 Кб
Скачать

Описание классов.

Данные класса – поля, функции – методы.

class <имя>{

[private:]

<описание скрытых элементов>

public:

<описание доступных элементов>

};

Поля класса:

  • могут иметь любой тип, кроме типа этого же класса;

  • могут быть описаны с модификатором const (инициализируется через конструктор лишь один раз);

  • могут быть описаны с модификатором static.

Классы могут быть глобальными и локальными.

class monstr{

int health,ammo;

public:

monstr(int he=100, int am=10)

{health = he;

ammo = am;}

;

void draw( int x, int y, int scale, int position);

int get_health()

{return health;}

int get_ammo()

{return ammo;}

};

Метод, тело которого определено внутри класса, - встроенный.

Операция доступа к области видимости – « :: » .

void monstr::draw(int x, int y, int scale, int position)

{/*тело метода*/}

Метод может быть определен как встроенный и вне класса:

inline int monstr:: get_ammo()

{return ammo;}

Объекты класса.

monstr Vasia,

Super(200,300),

stado[100],

*beavis = new monstr (10,20),

&butthead = Vasia;

int n= Vasia.get_ammo();

stado[5].draw(1,2,3,4);

cout << '\n'<<beavis->get_health() <<

'\n' << butthead.get_health()<< '\n'<<n;

У константного объекта значения полей менять нельзя, к нему можно применять лишь константные методы:

class monstr {

int health,ammo;

public:

monstr_const(int he=100, int am=10)

{health = he;

ammo = am;}

void draw( int x, int y, int scale, int position);

int get_health() const

{return health;}

int get_ammo()

{return ammo;}

};

const monstr Dead(0,0);

cout << '\n'<< Dead.get_health();

Константный метод:

  • объявляется с ключевым словом const после списка параметров;

  • не может изменять значения полей класса;

  • может вызывать только константные методы;

  • может вызываться для любых объектов.

Указатель this

хранит константный указатель на вызвавший функцию объект и используется внутри метода для ссылок на элементы объекта.

class monstr{

int health,ammo;

public:

monstr(int he=100, int am=10);

void draw( int x, int y, int scale, int position);

int get_health()

{return health;}

int get_ammo()

{return ammo;}

monstr &the_best( monstr &M)

{ if (health > M.health)

return *this;

return M;

}

};

monstr::monstr(int he, int am)

{health = he;

ammo = am;

}

void main()

{

monstr Vasia, Super(200,300;

monstr Best = Vasia.the_best(Super);

cout << '\n'<< Best.get_health();

}

This применяется для идентификации поля класса (при описании метода, когда имя поля совпадает с именем формального параметра метода). Иначе можно использовать операцию доступа к области видимости:

class monstr{

int health,ammo;

color skin;

char *name;

public:

void cure(int health, int ammo)

{ this->health +=health;

monstr::ammo += ammo;

}

};

...

monstr Best = Vasia.the_best(Super);

Best.cure(13, 18);

cout << '\n'<< Best.get_health();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]