3.3 Создание самостоятельного класса

3.3 Создание самостоятельного класса


Объекты с одинаковой структурой данных (Атрибуты) и поведением (Методы или Операции) группируются в классы.

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

Каждый образец класса, имеет свои собственные значения для каждого атрибута, но вместе они используют названия атрибутов и операции с другими образцами класса.

3.3.1 Определение класса

Давайте рассмотрим пример определения класса:

С первой выделенной строки в следующем фрагменте кода начинает блок определения класса.
Пример 1:
/**
The HelloWorld class implements an application that simply displays Hello World! to the standard output.
*/
class HelloWorld {
public static void main(String[] args)   {
System.out.println( Hello World! ); //Display the string.
     }
 }


Класс - основной стандартный блок объектно-ориентированного языка типа Java -является шаблоном, который описывает данные и поведение, связанное с образцами данного класса. Когда мы сформируем класс, мы можем создавать объекты данного класса Данные, связанные с классом или объектом сохраняются в переменные; поведение, связанное с классом или объектом осуществляется с помощью методов. Методы подобны функциям или процедурам на языках типа С.

Вот самая простая форма определения класса на языке Java
class name   {
...
     }


Определение класса начинается с ключевого слова class и далее следует название класса. Переменные и методы класса выделяются фигурными скобками, которые начинают и заканчивают блок определения класса. Приложение «Hello World» не имеет никаких переменных и имеет единственный метод с названием main .

3.3.2 Определение методов

Вызов функции к объекту – выполнение метода, который является подобным телу процедуры. Метод может и не возвращать никакого значения. Метод - функция, содержащаяся в пределах класса.

В Java, функция, объявленная внутри класса называется методом. Для объявления членов класса обычно используется ключевое слово public, для того, чтобы все функции и переменные, объявленные после этого ключевого слова были доступны как для других членов класса, так и для любой другой части программы, в которой находится данный класс.

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

Например функция:
public void setdate(int day,   int month,   int year);
не имеет никакого возвращаемого значения или пустое возвращаемое значение, и имеет три целочисленных параметра. В примере, данном выше, функция объявлена со спецификатором доступа public.

Параметр функции может быть более сложен, поскольку может иметь частную переменную, параметры и т.д. Он также не должен иметь того же самого имени как у компонента данных.

Есть несколько выгод от ограничения доступа к структуре данных перед явным объявлением списка функций. Любая ошибка, которая приводит к неправильному значению даты (например, январь 35, 1998) должна быть вызвана кодом в функции, так первая стадия отладки, локализации, заканчивается прежде, чем даже выполнится программа. Другое преимущество состоит в том, что потенциальный пользователь должен только исследовать определение члена функций, чтобы учесть это.

Следующая программа показывает, как создавать класс в Java, а также как создавать объекты и использовать их.
Пример 2:
class Fruit
{
boolean seedless;
boolean seasonal;
float price;

void setProperties(boolean seed, boolean season, float p)
     {
seedless = seed;
seasonal = season;
price       = p;
     }

void printProperties()
     {
System.out.println(   Following are properties of Fruit   );
if(seedless)
System.out.println(  Fruit is seedless   );
else
System.out.println(  Fruit is seeded   );
if (seasonal)
System.out.println(  Fruit is seasonal  );
else
System.out.println(  Fruit is not seasonal  );
System.out.println(  Price is   +price );
      }
 }
class FruitDemo
     {
public static void main(String args[]) {
Fruit f = new Fruit();
f.setProperties(true,false,50.0F); // To provide float
//values we make use of the character F after the value,
//else the compiler flashes an error message
printProperties ();
 }


Рассмотрим вышеупомянутую программу и изучим синтаксис каждой записи:
Класс FruitDemo и Fruit - два независимых класса. В FruitDemo, мы имеем метод main(), в котором мы находим следующую запись
Fruit f = new Fruit();
Эта инструкция создает объект 'f' класса Fruit. Оператор new используется для создания объекта, так как с его помощью выделяется достаточное количество памяти для сохранения объектов данного типа.

Поскольку мы создали объект класса Fruit, мы можем вызвать любой метод данного класса. Так, с помощью записи,
f.setProperties(true,false,50.0F)
мы вызываем метод setProperties () класса Fruit, который передаёт объекту три значения. Этот метод установит значения трех полей. Значение истина будет передано полю seedless, следующие значение ложь будет передано переменной, seasonal, и значение 50.0F будет передано полю price.

Запись,
f.printProperties();
будет воспроизводить свойства объекта 'f'.

Вывод вышеупомянутой программы будет следующий:
Рисунок 3.3: Вывод

Мы можем создать n объектов класса. Тогда, как один объект отличается от другого?
Каждый объект отличается от другого, потому что значения полей объектов различны. Объекты совместно используют методы, но они имеют различные значения атрибутов или свойств. Например, если мы изменяем класс FruitDemo следующим образом:
class FruitDemo
{
public static void main(String args[])
     {
Fruit fl,f2,f3;
f1= new Fruit();
f2= new Fruit ();
f3= new Fruit();

f1.setProperties (true,false,50.0F);
f2.setProperties(false,false,20.0F);
f3.setProperties(false,true,25.0F);
     }
 }


Схематическое представление этих трёх объектов представлено на рисунке 3.4.
Рисунок 3.4: Объекты класса Fruit

Объекты f1, f2, f3 имеют различные значения для переменных образца или полей. Это означает, что значения переменных образца отличаются от образца к образцу. Чтобы проверить это, давайте далее изменим класс FruitDemo, добавив после инструкций следующее:
f1.printProperties ();
f2.printProperties ();
f3.printProperties ();


Здесь, каждый объект вызовет один и тот же метод, потому что методы не имеют различий для различных объектов, но напечатанные значения будут различны. Эти значения соответствуют значениям каждого объекта. С помощью записи f1.printProperties () будут напечатаны значения объекта f1, а не значения объекта f2 и так далее.

назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net