Немного примеров на C++ и Ява
Posted in C++ on 25. Фев, 2011
В языках же С# и 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%
Внимание! Если вы хотите обменяться постовыми с моим блогом почитайте эту статью.