Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6. Создание пользовательских классов в Jav...doc
Скачиваний:
8
Добавлен:
10.11.2019
Размер:
108.03 Кб
Скачать

Void init(int a,int b) // модифицирующий метод, изменяющий

{ // значения полей х,у класса Point1

x=a;

    y=b;

    }

}

Пример (класс Point содержит закрытые поля, два конструктора и методы getX и setX):

public class Point // заголовок класса

{

private int x,y; // объявление полей х,у – закрытые поля

public Point() // объявление конструктора без параметров

{

x = 0;

y = 0;

}

public Point(int init_x, int init_y) // объявление конструктора

// с параметрами

{

x = init_x;

y = init_y;

}

public int getХ() // общий метод доступа – возвращает

// значение поля х, не изменяя его

{

return x;

}

public void setХ(int newX) // общий модифицирующий метод – изменяет

// значение поля х

{

x = newX;

}

}

Метод доступа getХ:

  • объявлен общим (public);

  • является методом доступа – возвращает значение поля х, не изменяя его;

  • имеет тип int; чтобы быть синтаксически и логически правильным, код для такого метода должен заканчиваться воз­вращением константы или какой-либо переменной этого типа.

  • не принимает параметры.

Метод доступа setХ:

  • объявлен общим (public);

  • является модифицирующим методом – изменяет значение поля х;

  • имеет тип void; метод не возвращает значений, и код для метода не содержит выражения для возвращения;

  • принимает параметр newX, и, как и в конструкторе, параметр имеет определенный тип данных (int). Метод присваивает значение параметра полю объекта.

В программе, использующей класс Point, получить доступ или изменить значение поля Х в объекте класса Point можно только с по­мощью методов getX и setX. Однако в коде, находящемся внутри определения класса, возможен прямой дос­туп к полям данного класса.

Пример (фрагмент кода тестовой программы, в которой создается и используется объект класса Point):

Point myPoint = new Point();

int myX = myPoint.getX();

System.out.println(myX);

myPoint.setX(4,8);

myX = myPoint.getX();

System.out.println(myX);

Результат работы фрагмента тестовой программы:

0

4

Добавим в объявление класса Point метод moveX, позволяющий переместить точку (т.е. объект класса Point) по горизонтали на заданное значение.

Пример (класс Point с добавленным методом moveX):

public class Point // заголовок класса

{

private int x,y; // объявление полей х,у – закрытые поля

public Point() // объявление конструктора без параметров

{

x = 0;

y = 0;

}

public Point(int init_x, int init_y) // объявление конструктора

// с параметрами

{

x = init_x;

y = init_y;

}

public int getХ() // общий метод доступа – возвращает

// значение поля х, не изменяя его

{

return x;

}

public void setХ(int newX) // общий модифицирующий метод – изменяет

// значение поля х

{

x = newX;

}

public void moveX(int addX)

{

x = x + addX;

}

}

Логика класса может быть проверена только программой, кото­рая им пользуется. Полная тестовая программа должна использо­вать все конструкторы и методы, определенные в классе, и вы­дать на экран сообщение, которое позволит пользователю опре­делить, достигнут ли желаемый эффект.

Пример тестовой программы для класса Point:

/* Эта тестовая программа проверяет все конструкторы

и все методы класса Point */

public class TestPoint

{

public static void main(String[] args)

{

Point myPoint1; // создается объект myPoint1 класса Point2

Point myPoint2; // создается объект myPoint2 класса Point2

// Проверяет конструктор, который не принимает параметров

int someX = 5;

myPoint1 = new Point;

myPoint1.setX(someX);

someX = myPoint1.getX();

System.out.println("myPoint1 X: " + someX);

// Проверяет конструктор, который принимает параметры

someX = 7;

int someY = 12;

myPoint2 = new Point(someX,someY);

someX = myPoint2.getX();

System.out.println("myPoint2 X: " + someX);

// Проверяет метод moveX

someX = 9;

myPoint2.moveХ(someX);

someX = myPoint2.getX() ;

System.out.println("after moving myPoint2 X: " + someX);

}

Результаты работы тестовой программы:

myPoint1 X: 5

myPoint2 X: 7

after moving myPoint2 X: 16

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