Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
83.97 Кб
Скачать

Язык Java

Зарождения языка

Свое начало язык берет в 1991 года, когда Джеймс Гослинг, Патрик Ноутон), Крис Вирт, Эд Франк и Майк Шеридан предложили язык Java для разработки программного обеспечения контроллеров. Требования – компактность, надежность и независимость от платформы (поскольку производителей таких устройств уже было много). Были предприняты попытки модифицировать язык программирования C++, но разработчики поняли, что его возможностей не хватает для решения поставленных задач, и создали новый. Первое название языка Oak, затем его сменили на Java. Поскольку разные контролеры реализуют различные машинные языки, пришлось ввести так называемую виртуальную машину JVM (JVM - Java Virtual Machine). Для каждого типа контроллера создавалась своя виртуальная машина, которая выполняла программу, представленную на едином для всех компиляторов языка Java промежуточном языке. Располагая компилятором языка Java, достаточно для внедрения Java программы на некотором процессоре установить соответствующую этому процессору виртуальную машину JVM.

Итак, JVM машина решила проблему переносимости (мобильности) программного кода. Кроме того, наличие особой среды выполнения управляемого кода повысило защищённость и надёжность программ.

Компания Sun Microsystems выпустила первую версию языка Java в начале 1996 года. На данный момент последней версией Java является Java SE 7, вышедшая 7 июля 2011 года.

Ооп в языке Java

Основные элементы ООП: объекты и классы. К примеру, реализуем класс CBall, имеющий два свойства. Каждый раз при вызове функции Move() координата x увеличивается на 5, а координата у - на 10 пикселей.

Если не указан модификатор доступа то в С++ по умолчанию private, в java – public.

Все методы класса должны быть определены внутри определения класса. Соответственно, в Java не используются прототипы функций. Недопустимо определение вложенных классов. Нельзя определять методы вне тела класса, создавая таким образом глобальные функции. Тем не менее, внутри класса можно определять статические методы и поля (с помощью ключевого слова static), которые будут играть роль глобальных методов и данных.

// Java

class CBall {

private int x, у; // Закрытые координаты 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.prlntln ("x= " + x + " y= " + у);}

}

// C++

class CBall

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= " + у);}

};

По синтаксису: на языке Java доступ (private/public) необходимо указывать перед объявлением каждой переменной и перед описанием каждой функции, и здесь двоеточия отсутствуют. В конце объявления класса отсутствует «.

Создание и использование объектов:

// Java

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

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

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

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

// C+ +

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 запрещены указатели. Вместо них используются ссылочные переменные, значения которых управляются системой. Ссылочные переменные ссылаются к данным, размещённым в управляемой куче. Оператор new создаёт здесь объект в управляемой куче. Удаляют объекты сборщики мусора.

Наследование (создание иерархии объектов)

Язык Java запрещает множественное наследование классов, но разрешают множественное наследование интерфейсов (Интерфейс- это конструкция языка программирования Java, в рамках которой могут описываться только абстрактные публичные (abstract public) методы и статические константyst свойства (final static)). Описание класса CColBall, порождённого из базового класса CBall (добавили свойство: цвет).

//Java

Public/abstract/final class CColBall extends CBall //не указывается модификатор доступа, по умолчанию считается public

{

private int col; // Закрытая переменная цвет

public void Set (int vCol, int vX, int vY)

{col= vCol; super.Set (vX, vY); }

public void Show ( ) // Открытая функция ' Показать данные'

{System.out.println ("col= "+ col); super.Show ();}

}

//С++

class CColBall : public CBall // Порождение из класса CBall

{

private: int col;

public:

void Set (lnt vCol, lnt vX, int vY)

{col= vCol; CBall::Set (vX, vY); }

void Show ( ) // Функция 'Показать данные'

{Console::Write ("col= " + col); CBall::Show (); }

};

Тело функции Set() класса CColBall присваивает значение новой переменной col и посредством функции Set() класса CBall присваивает значения закрытым переменным базового класса CBall (оператор привязки "::" и ключевые слова super соотносят функцию Set() к классу CBall). Аналогично функция Show() класса CColBall использует функцию Show() базового класса CBall, чтобы выдать скрытые значения x и у. Функция Move() класса CColBall наследуется из класса CBall, оставшись неизменённой. При ссылке к функциям базового класса использовано ключевое слово super.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]