Сходства
1 Исходный текст программы компилируется в промежуточный код, не зависящий от языка и платформы; этот код в дальнейшем выполняется в специальной управляемой среде.
2 Автоматический сбор мусора (Garbage Collection).
3 Программы в Java и C# состоят из классов (class) – основной структурной единицы приложения.
4 Механизм области видимости имен. В C# – пространство видимости имен, в Java – использование пакетов (packages).
5 Рабочий язык – С.
6 Запрет на использование указателей. В C# допускается ограниченное использование указателей в блоках кода, помечаемых как "ненадежные" (unsafe).
7 Отсутствие заголовочных файлов. Весь код помещается в пакеты (packages) и сборки (assemblies).
8 Объекты создаются с помощью ключевого слова new, выделение памяти производится из "кучи" (heap), находящейся в распоряжении среды выполнения.
9 Многопоточность поддерживается путем блокирования объектов
10 И в Java, и C# разрешается наследование только от одного класса; вместе с тем, можно подключать к классу более одного интерфейса
11 Отсутствие глобальных функций и констант, все элементы должны принадлежать классам.
12 Не применяются операторы ->, ::. Во всех случаях используется оператор ". ".
13 Любая величина должна быть проинициализирована до того, как будет использована.
14 Нельзя использовать целые числа (integers) для управления операторами if.
15 Блоки try могут иметь заключительное предложение finally.
Отличия
1 В Java главная точка входа в приложение есть public static void main (String [] args). Этот синтаксис является неизменным. В C# метод Main () мб переопределен.
2 В C# имеется оператор goto (gперехода на метку), в языке Java – нет.
3 В C# можно определять структуры и перечисления; в Java эта возможность исключена.
|
4 Имеются различия в реализации оператора switch.
10.39 Описание статической модели на языке UML
Статические модели обеспечивают представление структуры систем в терминах базовых строительных блоков и отношений между ними. «Статичность» этих моделей состоит в том, что здесь не показывается динамика изменений системы во времени. Эти модели несут в себе структурные описания и описания операций, реализующих заданное поведение системы. Основным средством для представления статических моделей являются диаграммы классов. Вершины диаграмм классов нагружены классами, а дуги (ребра) — отношениями между ними.
Вершина в диаграмме классов — класс. Имя класса указывается всегда, свойства и операции — выборочно. Предусмотрено задание области действия свойства (операции). Если свойство (операция) подчеркивается, его областью действия является класс, в противном случае областью действия является экземпляр.
Свойства
Общий синтаксис представления свойства имеет вид
Видимость Имя [Множественность]: Тип = НачальнЗначение {Характеристики}
Уровни видимости:
public(по умолч) protected private | Любой клиент класса может использовать свойство (операцию), символ + Любой наследник класса может использовать свойство (операцию), символ # Свойство (операция) может использоваться только самим классом, символ - |
Характеристики свойств:
changeable addOnly frozen | Нет ограничений на модификацию значения свойства Для свойств с множественностью, большей единицы; дополнительные значения могут быть добавлены, но после создания значение не может удаляться или изменяться После инициализации объекта значение свойства не изменяется |
Операции
|
Общий синтаксис представления операции имеет вид
Видимость Имя (Список Параметров): ВозвращаемыйТип {Характеристики}
Характеристики операций:
leaf isQuery sequential guarded concurrent | Конечная операция, операция не может быть полиморфной и не может переопределяться (в цепочке наследования) Выполнение операции не изменяет состояния объекта В каждый момент времени в объект поступает только один вызов операций. Как следствие, в каждый момент времени выполняется только одна операция объекта. Допускается одновременное поступление в объект нескольких вызовов, но в каждый момент времени обрабатывается только один вызов охраняемой операции. В объект поступает несколько потоков вызовов операций (из параллельных потоков управления). Разрешается параллельное (и множественное) выполнение операции. |
Множественность
Иногда бывает необходимо ограничить количество экземпляров класса:
- задать ноль экземпляров (в этом случае класс превращается в утилиту, которая предлагает свои свойства и операции);
- задать один экземпляр (класс-singleton);
- задать конкретное количество экземпляров;
- не ограничивать количество экземпляров (по умолчанию).
Количество экземпляров класса называется его множественностью. Выражение множественности записывается в правом верхнем углу значка класса. Множественность применима не только к классам, но и к свойствам. Множественность свойства задается выражением в квадратных скобках, записанным после его имени.