Классы и объекты в программировании

Понятие класса связано с типом. Тип – это область определения некой величины, т.е множество её возможных значений и набор применяемых операций. Когда в программировании говорят о классе, то это значит имеют ввиду создание нового типа.

Класс  - это набор переменных (различных типов), скомбинированный с набором связанных функций для обработки заданных переменных.

Класс – это механизм для создания объектов.

Синтаксис объявления класса похож на синтаксис объявления структуры.

class  имя_класса

   {закрытые переменные и функции класса;

     public:

    открытые переменные и функции класса;

   } ;

Класс объявляется с помощью ключевого слова class. Сlass – это тип.

Имя класса – это имя нового типа данных, которое используется для объявления объектов класса.

Переменные и функции, объявленные внутри класса, являются элементами этого класса. Имеют два спецификатора: закрытый (private) и открытый (public).

По умолчанию все переменные и функции, объявленные в классе, становятся закрытыми для класса. Это означает, что они доступны только для других элементов того же класса. Для объявления открытых элементов класса используется спецификатор public. Эти данные доступны как для других элементов класса, так и для любой другой части программы, в которой находится этот класс. 

Пример объявления класса:

class  mclass

{ int a;     // закрытый элемент класса

 

  public:

  void  set(int  n);

 

  int get();

}; 

 

Этот класс имеет одну закрытую переменную а и две открытые функции, set() и get(). Поскольку а является закрытой переменной класса, она недоступна для любой функции вне mclass. Однако поскольку  set() и get() являются  элементами mclass, они имеют доступ к а. Более того, set() и get(), открытыми функциями mclass, могут вызываться из любой части программы, использующей mclass.

Функции set() и get() объявлены в классе mclass, но они еще не определены. Для определения функций используется оператор расширения области видимости (::).

Синтаксис оператора расширения области видимости:

Тип_возвр_значения  имя_класса :: имя_функции(список формальных параметров)

{

      ……..  // тело функции;

}

Имя_класса – это имя того класса, которому принадлежит определяемая функция.

Для функций set() и get() используется оператор расширения области видимости:

void mclass :: set (int n)

{ a = n;}

int mclass :: get()

{

     return n;

}

Объявление класса mclass не задает ни одного объекта типа mclass, оно определяет только тип объекта, который будет создан при его фактическом объявлении. Чтобы создать объект, используется имя класса, как спецификатор типа данных.

Например, объявляется два объекта типа

mclass: mclass ob1, ob2;

Объявление класса является логической абстракцией, которая задает новый тип объекта. Объявление же объекта создаёт физическую сущность объекта такого типа. То есть, объект занимает память, а задание типа нет.

После того как объект класса создан, можно обращаться к открытым элементам класса, используя оператор точка (.), аналогично тому, как осуществляется доступ к элементам структуры.  Для объявленных объектов ob1 и ob2 используем функцию set (int n).

ob1.set( 10 ); // установка версии а объекта ob1 равной 10

ob2.set( 99 ); // установка версии а объекта ob2 равной 99

Каждый объект содержит собственную копию всех данных, объявленных в классе. Это значит, что а в ob1 отлично от а в ob2

Каждый объект класса имеет собственную копию всех переменных, объявленных внутри класса.

Пример класса(Решение задачи можно посмотреть, скачав файл "Задача-19"):

Напишите программу преобразования футов в дюймы. Для этой цели создайте класс, который хранит число футов и его эквивалент в дюймах. 

#include<iostream.h>
#include<conio.h>
class myClass
{float f, d;
 public:
   float get_d ();
   void  preobraz (float f1);
};

void myClass :: preobraz (float f1)
{f=f1;
 d=f1*12;
}
float myClass :: get_d()
{return d;}

void main()
{float fut;
 clrscr();
 cout<<"Vvedite kolichestvo futov: ";
 cin>>fut;
 myClass ob1;
 ob1.preobraz(fut);
 cout<<"Eta velichina v dyuimah: "<<ob1.get_d();
}

Среда, 08.05.2024, 11:20
Приветствую Вас Гость