Объекты классов в Java и Java 2 ME. Часть V

Объекты представляют класс, наследуя от своего класса все возможности. Объявить объект очень просто, необходимо вначале указать класс, а потом объект этого класса. Делается это следующим образом.

Telefon object;

Точно так же как создается переменная int а, создается и объект класса. Такая запись создаст пустой объект класса, инициализирующийся значением null. Конечно, это еще не полноценный объект, а всего лишь ссылка на данный класс. Чтобы создать полноценный класс, нужно воспользоваться ключевым словом new, с помощью которого происходит выделение области памяти для содержания создаваемого объекта.

Telefon object;
object = new Telefon();
или
Telefon object = new Telefon();

Обе записи создания объекта класса Telefon одинаковы. Чаще всего используется вторая запись, но это можно оставить на усмотрение программиста. Сначала создается пустая ссылка object, а потом с помощью ключевого слова new выделяется память для объекта и он инициализируется конструктором класса Telefon(). Именно тут и необходим хорошо продуманный конструктор с параметрами, инициализирующий объект с заданными значениями.
Теперь давайте рассмотрим пример сложнее. Создадим класс с конструктором для инициализации высоты и ширины дисплея и в методе main() создадим объект класса Telefon, вычислив при этом площадь экрана абстрактного телефона.

class Telefon
{
int w, h, s;

// конструктор класса Telefon
Telefon (int a, int b)
{
w = a;
h = b;
}

// метод, вычисляющий площадь экрана
void Area()
{
s = w*h;
}
}

// класс RunTelefon может находиться в файле RunTelefon.java
class RunTelefon
{
public static void main (String args[])
{
// создаем объект класса Telefon
Telefon object = new Telefon (70, 90);

// вычисляем площадь дисплея
object.Area();
}
}

Разберем весь пример более подробно. Итак, мы создаем класс Telefon с тремя переменными: w, h и s, в которых в последствии будут храниться, соответственно, ширина, высота и площадь дисплея телефона. Затем мы создаем конструктор класса Telefon для инициализации высоты и ширины дисплея. Метод Area() класса Telefon вычисляет площадь экрана, сохраняя полученный результат в переменной s. После этого идет класс RunTelefon с методом main(), являющийся входной точкой для всей программы. Как только написанное приложение начнет работать, программа найдет метод main() и начнет выполнять содержимое именного этого метода.

В первой строке кода метода main() происходит создание объекта класса Telefon со значениями ширины – 70 и высоты – 90 для экрана телефона. Вторая строка кода вызывает метод Area(), вычисляющий площадь дисплея. Метод Area() нельзя просто так вызвать в программе, он должен ссылаться на объект класса Telefon. Запись object.Area() как раз и указывает на то, что объект класса Telefon вызывает метод Area(). Если имеется несколько объектов класса Telefon, или скажем несколько различных телефонов, тогда вызов метода Area() должен происходить для каждого из объектов класса Telefon, например:

object1.Area();
object2.Area();
object3.Area();

При условии, что все перечисленные объекты были ранее объявлены и созданы. Для каждого из таких объектов класса Telefon будет вычисляться только своя площадь экрана. Давайте рассмотрим еще более сложную программу, создав несколько объектов класса Telefon, а заодно используем другую схему работы метода Area(), воспользовавшись ключевым словом return.

class Telefon
{
int w, h, s, n;

// конструктор
Telefon (int a, int b)
{
w = a;
h = b;
}

// вычисляет площадь дисплея
int Area()
{
return w*h;
}

}

// class RunTelefon может находиться в файле RunTelefon.java
class RunTelefon
{
public static void main (String[] args)
{
// создадим объект siemens
Telefon siemens = new Telefon (101, 80);

// создадим объект nokia
Telefon nokia = new Telefon (128, 128);

// сохраним полученную площадь в s
s = siemens.Area();

// сохраним полученную площадь в n
n = nokia.Area();
}
}

В реализации класса Telefon изменился только метод Area(), использовалось ключевое слово return. С его помощью результат умножения высоты на ширину, то есть результат работы всего метода возвращается для дальнейшего использования в коде программы. В рабочем цикле программы в методе main(), этот результат сохраняется в двух переменных s и n для каждого из объектов класса Telefon. В данном случае площадь экрана для объекта siemens равна 101х80=8080, а для объекта nokia 128х128=16384 и оба результата хранятся в различных переменных.

У вас наверно сразу возникает вопрос, а как увидеть получившийся результат? Действительно, просчитать значение не составляет труда, но хотелось бы увидеть полученный результат на дисплее. Для этого в Java существует встроенный метод println(). Чтобы увидеть на экране результат работы метода Area(), нужно добавить вызов метода println().

s = siemens.Area();
System.out.println(“Площадь экрана siemens равна: ” + s);
n = nokia.Area()
System.out.println(“Площадь экрана nokia равна: ” + n);

Метод print(), как уже говорилось, встроенный и принадлежит классу System, поэтому такая запись. out – это поток ввода, связывающий программу с консолью. Реально в программировании телефонов метод println() используется, как правило, в диагностических целях, но как логическое завершение примера подойдет. С помощью кавычек ограничивается количество выводимого на экран текста, это необходимое условие. Запись, + s, применяет операцию конкатенации на основе оператора +, с помощью которого на экран выводится значение переменной s, то есть целочисленное значение равное площади экрана.

Резюмируя объектно-ориентированное программирование, можно с уверенностью заявить – это не сложно, не страшно, достаточно понятно и, что самое главное, просто в использовании. Создав необходимый класс, объявив объект и воспользовавшись методами созданного класса, вы получаете неограниченные возможности в программировании приложений. Но главное – большое количество необходимых классов и методов уже созданы за вас и собраны в специальные библиотеки, о которых мы поговорим в конце всего цикла статей. Вам же остается только воспользоваться этими готовыми классами, создавая свои объекты классов.

Содержание

Основы языка программирования Java. Часть I
Синтаксис и семантика языка Java. Часть II
Операторы языка Java. Часть III
Метод main в языках Java и Java 2 ME. Часть IV
Объекты классов в Java и Java 2 ME. Часть V
Условные и управляющие операторы Java. Часть VI
Циклы языка программирования Java. Часть VII
Массивы данных в Java и Java 2 ME. Часть VIII
Наследование в языке программирования Java. Часть IХ
Интерфейсы в Java и Java 2 ME. Часть Х
Пакеты в Java и Java 2 ME. Часть ХI

2 КОММЕНТАРИИ