Немного примеров на C++ и Ява

В языках же С# и Java сокрытие данных и функций класса определяется не метками, а ключевыми словами private и public. Если при описании класса не применены private и public, то в классе языков C++, C++/CLI и С# по умолчанию данные и функции закрыты (то есть имеют доступ private), а в языке Java(J#)- открыты (то есть имеют доступ public). Правила описания класса в языках C++/CLI , С# и Java отличаются. Сравни­те описание класса А и его использование, реализованные на разных языках в примере 5.1.1.

Пример  5.1.1 Описание класса и создание его объектов.

//////////////////// // C+ + /CLI #include “stdafx.h” using namespace System;

class A             // Описание класса А

{ private:

int x;            // Закрытая переменная х

public:

char у;        // Открытая переменная у


};


61
void Set (int m, char n){x=m; y=n;}             // Открытая функция

void Show ( )                                                // Открытая функция

System: :Console::Wrlte (”x= {0} y= “, x.ToString()); System: :Console::WriteLine(gcnew Char(y)); }


void main ()       // Главная функция программы

{

A objA;                          // Объект objA класса А размещён в стеке

objA.Set (1, ‘z’);             // Установить значения данных объекта objA

objA. Show ( );              // Выдать значения данных объекта objA

A *pObjA=new A;        // Объект pObjA класса А размещён в неуправл. куче

pObjA -> Set (2,’w');   // Установить данные объекта с указателем pObjA

pObjA -> Show ();       // Выдать данные объекта с указателем pObjA

pObjA -> y=’b';              // Присвоить значение открытой переменной у

pObjA -> Show ( );

delete pObjA;                 // Удалить объект класса А с указателем pObjA

}

/*

Result:

х=1 y=z

х=2 y=w

x=2y=b

*/

////////////////////

lie»

using System;                       // Использовать пространство имён System

class A                                    // Описание класса А

{

int x;        // Закрытая (по умолчанию) переменная х
public char у;     // Открытая переменная у

public void Set (int m, char n) {x= m; y=n;}     // Открытая функция

public void Show ()     // Открытая функция

{

Console.Write (”x={0}”, x.ToString ( )); Console.Write (” y=”);     Console.WriteLine (y);

}

class C5_l_l {

static void Main ()       // Главная функция

{

A sObjA= new A ();       // Объект класса А в управляемой куче sObjA.Set (2, W); sObjA.Show ( ); sObjA.y= ‘b’; SObjA.Show ();


62

> > /* Result:

X= 2 y= w x= 2 y= b

*/

//////////////////// // Java и 3#

class A                                   // Описание класса А

private Int x;       // Закрытая переменная  х chary;    // Открытая переменная у void Set (int m, char n) {x= m; y=n;}     // Открытая функция

void Show ( )              // Открытая функция

{

System.out.print (”x= ” + x); System.out.println (” y= ” + y);

}

class C5_l_l

<

public static void main ()   // Главная функция

{

A sObjA= new A ();        // Объект класса А в управляемой куче

sObjA.Set (2, ‘w’);

sObjA.Show ( );

sObjA.y= “b”;

sObjA.Show ( ); > } /*

Result: x= 2 y= w x= 2 y= b */

Поясним эту простую программу. C++/CLI. В начале тела главной функции main() описан класс А, содержа­щий целочисленную закрытую переменную х и открытые символьную пере­менную у и функции Set() и Show(). Переменная х доступна функциям Set() и Show() только внутри объекта, а переменная у, открытые функции Set() и Show() могут использоваться и вне объекта. Объявление A objA размещает объект objA в стеке. Затем функция objA.Set(l,’z') устанавливает значение х, равным 1, и значение у, равным ‘z’, а функция objA.Show() выводит эти зна­чения на экран.

В строке A *pObjA =new А; оператор new создаёт объект класса А в не­управляемой куче и присваивает его адрес указателю   pObjA типа А. Затем


63

pObjA->Set(2,V); устанавливает значение х, равным 2, и значение у, равным ‘w\ a pObjA->Show(); выводит эти значения на консоль. Строка pObjA->y=’b’; присваивает открытой переменной у значение ‘Ь’.

Оператор delete pObjA; удаляет память, выделенную ранее объекту опе­ратором new в неуправляемой куче.

Присвоение значения закрытой переменной х посредством objA.x=l; и pObjA->x=2; было бы ошибочно, так как переменная х недоступна вне объекта objA и объекта, созданного оператором new.

Найти работу в Украине сходу достаточно сложно, и скорее всего вам понадобится интернет, чтобы оценить рынок вакансий на сегодняшний день, работа в киеве вакансии имеет всегда актуальный список предоставляемых вакансий.

Популярность: 1%

Внимание! Если вы хотите обменяться постовыми с моим блогом почитайте эту статью.

Оставить комментарий