Классы
Новый тип создаётся путём объявления классов. Класс — это просто коллекция переменных, скомбинированная с набором связанных функций. Это совмещение данных и операций над ними в один объект называется инкапсуляция. Данные в классе называют переменными-членами или данными-членами. Функции класса часто выполняют операции над переменными-членами класса и называются функциями-членами или методами класса. Функции члены принадлежат классу так же, как и данные-члены, и определяют функциональные возможности класса.
Для объявления класса используется ключевое слово class. Пример:
Class Cat
{
unsigned int Age;
unsigned int Weight;
void Meow();
};
Объявление класса не резервирует память под данные, здесь только сообщается: о существование класса с таким именем и сколько памяти требуется для каждого объекта этого класса (память выделяется под данные-члены, под методы память не выделяется.
Определение объектов происходит так:
Cat Vaska;
Доступ к членам класса
Существует оператор прямого доступа (.)
Vaska.Weight =5;
Vaska.Meow();
Рекомендации:
- используйте ключевое слово class для объявления класса.
- используйте оператор прямого доступа к членам класса и его методам.
- не путайте объявление с определением.
- не путайте класс с объектом.
- не присваивайте значения классу.
В объявления класса используются и другие ключевые слова. Двумя важными из них являются public и private. Все данные-члены и методы являются закрытыми по умолчанию, то есть к ним можно получить доступ только методами самого класса. Открытые члены доступны всем функциям программы.
Определение доступности и скрытости для членов класса иммет принципиальное значение.
Class Cat
{
unsigned int Age;
unsigned int Weight;
void Meow();
};
а затем в main()
cat Vaska;
Vaska.Age=5;
Вызовет ошибку компиляции, так как все члены класса Сat закрыты, а присвоение идёт во внешней к классу функции.
Поэтому необходимо сделать:
Class Cat
{public:
unsigned int Age;
unsigned int Weight;
void Meow();
};
Согласно общей стратегии объектно-ориентированного программирования данные-члены класса должны быть закрытыми. Доступ следует открыть только к методам класса обеспечивающим доступ к закрытым данным.. Этим достигается инкапсуляция данных внутри класса. Эти функции называются методами доступа.
Это позволяет скрыть от пользователя вид в котором хранятся данные, и если в дальнейшем этот вид будет изменён, то достаточно переписать только функции доступа, все остальные функции продолжат работать. Поэтому последующая поддержка программы требует меньших затрат.
#include<iostream.h>
#include <alloc.h>
#include <math.h>
#include <stdlib.h>
class Mass
{
int *Arrey;
int n;
public:
int getSize();
void putSize(int ss);
void getArrey(int ras);
int putArrey();
void del();
};
void Mass::getArrey(int ras)
{ int i;
randomize();
Arrey = new int[n];
for(i=0;i<n;i++)
(Arrey+i)=random(2*ras)-ras;
}
int Mass::putArrey()
{ int i;
for(i=0;i<n;i++)
cout<<*(Arrey+i)<<"\t";
cout <<"\n";
return 0;
}
int Mass::getSize()
{ return n;
}
void Mass::putSize(int ss)
{n=ss;
}
void Mass::del()
{delete[] Arrey;
}
int main(void)
{
int ss,m,size=100;
Mass Arrey;
cout <<"Введите размерность массива\n по строкам:";
cin >>ss;
Arrey.putSize(ss);
cout << "размерность массива = "<<Arrey.getSize()<<"\n";
Arrey.getArrey(100);
Arrey.putArrey();
Arrey.del();
Arrey.putArrey();
return 0;
}
Любую переменную можно инициализировать, то есть присвоить ей значения, для инициализации объектов класса существуют специальные функции — конструкторы. Имя конструктора совпадает с именем класса, при необходимости он может принимать параметры, но не может возвращать значения даже типа void. Для примера: Arrey(). Если пользователь не объявляет конструктор, то существует конструктор по умолчанию, который ничего не делает, но он есть. Соответственно существует функции уничтожающая объекты класса — деструктор, она очень похожа на конструктор по своим свойствам. Зачастую наличие конструктора (стандартного, который ничего не делает) необходимо по протоколу. Имя деструктора ~Arrey.
Домашняя работа написать предложенную программу, так что бы в ней были конструктор с 3-мя параметрами и деструктор.