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

Пример 2.2.2. Создание и использование объектов.

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

// C++/CLI

CBall ball; // Создан объект ball класса CBall

ball.Set(7, 11); // Установить исходное состояние объекта ball

ball.Move (); // Переместить объект ball

ball.Show (); // Выдать текущие координаты объекта ball

CBall *pBall= new CBall (); // Создать объект в неуправляемой куче

pBall->Set (17, 21); // Установить исходное состояние этого объекта

pBall->Move (); // Переместить этот объект

pBall->Show (); // Выдать текущие координаты этого объекта

// Java и J#

CBall ball= new CBall (); // Создать объект в управляемой куче

ball.Set (7, 11); // Установить исходное состояние объекта

ball.Move (); // Переместить объект

ball.Show (); // Выдать текущие координаты объекта

//C#

CBall ball = new CBall(); // Создать объект в управляемой куче!

ball.Set(7, 11); // Установить исходное состояние объекта

ball.Move(); //Переместитьобъект

ball.Show(); // Выдать текущие координаты объекта

C++/CLI. Объект может быть создан двояко - либо объявлением переменной ball типа класса CBall, либо путём объявления указателя pBall типа класса CBall и создания объекта в куче (о куче будет рассказано в дальнейшем подробнее) посредством операции new с автоматическим присвоением адреса этого объекта указателю. В первом случае для доступа к открытым данным и функциям используется оператор "." (точка), а во втором случае - "->" (стрелка). После создания объектов функция Set() устанавливает исходные значения их данных. Затем функция Move() перемещает объекты, и новые значения их данных выдаются функцией Show() на консоль.

C# и Java. В языках Java и C# запрещены указатели. Вместо них используются ссылочные переменные, значения которых управляются системой. Ссылочные переменные ссылаются к данным, размещённым в управляемой куче.

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

2.3Объекты, классы и uml

.NET технология позволяет разрабатывать программу, интегрировав её из компонентов, написанных на разных языках программирования, например.на C++/CLI, C# и J#.

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

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

Для графического представления объектно-ориентированных систем в настоящее время используется язык UML. Унифицированный язык моделирования UML (Unified Modeling Language) предназначен для описания объектно-ориентированных систем в виде совокупности диаграмм, тем самым раскрывая статическую и динамическую суть системы как модели, состоящей из взаимодействующих объектов.

Перед применением языка UML необходимо проанализировать проектируемую систему, выявить основные сущности и понятия, образовать набор классов, из которых будет создаваться всё множество объектов системы. Затем приступают к разработке диаграмм языка UML: диаграмм вариантов использования, представляющих систему с точки зрения пользователя, диаграмм классов, представляющих классы и их статическую взаимосвязь, диаграмм последовательности, изображающих динамическое функционирование объектов во времени, и др.

На рис. 2.3.1 изображен класс CBall из примера 2.2.1 на языке UML. Класс представляется в виде прямоугольника, разделённого на три части, в которых размещается имя класса, перечень атрибутов и, наконец, перечень функций класса. Перед именами данных и функций ставятся символы " - " и "+", указывающие на доступ private и public соответственно.

Рис. 2.3.1. Класс CBall

Из рис. 2.3.1 видно, что на языке UML представлен класс, имеющий имя CBall, закрытые данные x и у и открьггые функции Set(), Move() и Show().

Важно, что это представление класса не зависит от языков программирования и, в частности, от C++/CLI, Java и C#.

Рис. 2.3.2. Объекты класса CBall

На рис. 2.3.2 изображены объекты класса CBall на языке UML. В прямоугольнике помещается имя объекта, отделённое от класса этого объекта двоеточием. Если объект безымянный, то ставится только двоеточие перед именем класса. Имя объекта и класса подчёркиваются.

В дальнейшем в книге диаграммы языка UML будут использоваться при разработке некоторых программ с единственной целью – познакомить читателя с нотацией этого языка. Язык UML довольно-таки богат, и при необходимости освоить его по многочисленной литературе. В задачи книги не входит подробное изложение языка UML. Познакомиться с нотацией этого языка можно по книге Рамбо Дж., Якобсона А. и Буча Г. "UML: специальный справочник".