Объектно-ориентированное программирование - Учебное пособие (А.А. Хусаинов)

2.1. класс как обобщение структуры

 

Выше мы дали определение класса, как конструкции, состоящей из полей и функций. В частности, этому определению удовлетворяет структура. В действительности, структура в Си++ реализована как класс, все поля которой, по умолчанию, общедоступны в том смысле, что доступ к ним осуществляется через имена имя_структуры.поле, имя_структуры.функция(аргументы), или указатели указатель->поле, указатель->функция(аргументы).

Простейшим образом класс можно определить с помощью конструкции:

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

Пример 1. Будем использовать ключевое слово struct для определения класса двумерного вектора, для которого определены функции ввода и вывода данных, составляющих объект.

 

#include <iostream.h>

#include <conio.h>

 

// Класс вектор

struct Vector

   {

   double x, y;     // Координаты вектора

 

   // Функция вывода на экран координат вектора

   void get()

               {

               cout<<"x="<<x<<' '<<"y="<<y<<' ';

               }

 

   // Функция ввода с клавиатуры координат вектора

   void put()

               {

               cout<<"Введите через пробел координаты вектора (x и y): ";

               cin>>x>>y;

               }

 

   };

 

void main()

   {

   clrscr();            // Очистка экрана

 

   Vector v, w[2];            // Определение векторов

 

   v.put(); w[0].put(); w[1].put();            // Ввод координат векторов

 

   // Вывод координат векторов

   cout<<" Координаты вектора v: ";

   v.get();

 

   cout<<"Координаты вектора w[0]: ";

   w[0].get();

 

   cout<<"Координаты вектора w[1]: ";

   w[1].get();

 

   getch();            // Ожидание нажатия клавиши

   }