Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.17 Mб
Скачать

2.2Классы

Тип class (класс) объектно-ориентированных языков программирования C++/CLI, C# и Java описывает множество однотипных объектов с одними и теми же данными и функциями, то есть обладающих общим состоянием и поведением.

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

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

Обычно большинство данных, функций и операций скрыто (private) внутри класса и не доступно вне объекта и лишь только те из них, без которых невозможно управление объектом извне, открыты (public). В идеале, желательно описать в классе открытыми только функции, достаточные и необходимые для управления поведением его объектов и обращения к требуемым данным, а всё остальное - скрыть.

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

В примере 2.2.1 приведено описание простого класса CBall, которым представлена такая сущность как летающий шар, ограниченная только координатами полёта и простейшим перемещением: каждый раз при вызове функции Move() координата x увеличивается на 5, а координата у - на 10 пикселей. Класс CBall описан на языках C++/CLI, C# и Java. Класс CBall содержит закрытые переменные x и у и открьггые функции Move() перемещения, Set() установки исходных значений координат и Show() выдачи на консоль текущих значений координат объекта шара.

Пример 2.2.1. Описание класса объекта шара на языках C++/CLI, C# и Java.

// C++/CLI

class CBall // Описание класса CBall на языке C++/CLI

{

private: // Закрыть данные

int x, у; // Закрытые координаты x и у шара

public: // Открыть функции

void Move () // Описание открытой функции перемещения шара

{x= x+5; y= y+10;}

void Set (int vX, int vY) // Описание открытой функции установки

{x= vX; y= vY;> // координат шара

void Show () // Описание открытой функции выдачи на консоль

{System::Console::WriteLine ("x= " + x + " y= " + у);}

};

// c#

class CBall // Описание класса CBall на языке C#

{

private int x, y; // Закрытые координаты x и у шара

public void Move() // Описание открытой функции перемещения шара

{ x = x + 5; y = y + 10; }

public void Set(int vX, int vY) // Описание открытой функции

{ x = vX; y = vY; } // установки координат шара

public void Show() // Описание открытой функции выдачи на консоль

{ System.Console.WriteLine("x= " + x + " y= " + y); }

}

// Java и J#

public class CBall

{

private int x, y; // Закрытые координаты x и у шара

public void Move () // Описание открытой функции перемещения шара

{x= x+5; y= y+10; }

public void Set (int vX, int vY) // Описание открытой функции установки

{x= vX; y= vY; } // координат шара

public void Show () // Описание открытой функции выдачи на консоль

{System.out.println ("x= " + x + " y= " + y);}

}

На первый взгляд описания класса CBall на языках C++.NET, C# и Java схожи - сказывается общее родство от языков С и С++. Но видны и различия.

C++/CLI. В языке C++/CLI используются метки, состоящие из ключевого слова public или private с последующим двоеточием и определяющие доступ нижеследующих данных и функций. Метка private: закрывает переменные x и у. Метка public: открывает функции Move(), Set() и Show() класса для при менения извне к объекту класса CBaIl. Язык C++/CLI в примере 2.2.1 использует для вывода значений текущих данных функцию WriteLine() класса Console пространства имён System, о которых будет рассказано позднее. Аргумент функции WriteLine() определяет выводимую на консоль строку, составленную из четырёх объединённых с помощи операции "+" составляющих строк: строки "x= ", строкового значения x, строки "у= " и строкового значения у.

Обратите внимание - описание класса завершено закрывающей фигурной скобкой и точкой с запятой.

Java и C#. Ключевые слова public и private пишутся непосредственно перед объявлением переменных и заголовком описания функций. Ключевое слово private спрятало координаты x и у внутри класса, закрыв к ним доступ извне и сделав их доступными только через открьггые функции Move(), Set() и Show(). Ключевые слова public открывают функции Move(), Set() и Show() для их применения извне к объектам класса CBall. Вывод на консоль на языке Java осуществляется функцией println() класса out, а на языке C# аналогичен выводу на языке C++/CLI, поскольку используется та же функция WriteLine() того же класса Console пространства имен System той же библиотеки .NET Framework. Обратите внимание, что вместо двух разделяющих двоеточий языка C++/CLI здесь применены точки. Описание класса на языках C# и Java завершено закрывающей фигурной скобкой без точки с запятой.

Ещё раз обратите внимание на различие в описании класса CBalI на разных языках. На языке C++/CLI доступ private (закрыть) к данным x и у распространяется вниз до следующего доступа public (открыть), действующего уже на нижеследующие функции. После доступов private и public стоит двоеточие. На языках же Java и C# доступ необходимо указывать перед объявлением каждой переменной и перед описанием каждой функции, и здесь двоеточия отсутствуют. Для вывода на консоль в языке Java используется функция println() класса out, а в языках C# и C++/CLI - функция WriteLine() класса Console. Кроме этих мелких отличий в написании программ на этих языках вы познакомитесь в дальнейшем и с более существенными.

С целью сделать программу общепонятной, принято на языках C++/CLI и C# имена переменных (и, в частности, имена ссылок и указателей на объекты) писать с маленькой буквы, а имена функций и классов с большой. При написании же программ на языке Java эти рекомендации не соблюдаются, но принято имена классов писать с большой буквы.

Фрагменты программ примера 2.2.2 показывают разницу в создании и использовании объектов класса CBall на различных языках программирования.