Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

package point; //создаем собственный пакет



package point; //создаем собственный пакет

import java.util.Scanner;

 

class Point { //создаем класс Point

 

double x; // абсцисса точки

double y; // ордината точки

 

/* Далее - конструктор по умолчанию, его можно не описывать явно, тогда объект

будет создаваться, а его поля будут получать те значения

по умолчанию, что предусмотрены типом данных. Для int это 0, для

double это 0.0 и т.д.

*/

 

Point() {

x = 0;

y = 0;

}

 

/* Второй конструктор - с двумя параметрами, он поможет создавать точку

с нужными координатами, сразу указывая их при создании объекта.

*/

 

Point(double x, double y) {

 

/* Имена параметров, перекрывающие имена полей, выбраны специально, чтобы показать, что даже неудачный подбор имён не создаёт неразрешимой проблемы. В Java имеется специальное слово this, которое заменяет имя того объекта,

для которого был вызван выполняемый метод или того объекта, который

только создаётся конструктором. Соответственно, this.x - это абсцисса

(первое поле) создаваемого объекта.

*/

 

this.x = x;

this.y = y;

}

 

// Метод выводящий точку на экран в формате: (x;y)

void printPoint() {

System.out.print("("+x+";"+y+")");

}

 

// Метод перемещающий точку в указанное положение

void setPoint(double a, double b) {

x = a;

y = b;

}

 

void setPoint(double a) { //перегрузка предыдущего метода, перемещение точки

x = a; // на биссектрису I и III координатных четвертей

y = a;

}

 

// Метод для задания новых координат точки с клавиатуры

void inputPoint() {

Scanner inp = new Scanner(System.in);

System.out.print("Введите абсциссу: ");

double a = inp.nextDouble();

System.out.print("Введите ординату: ");

double b = inp.nextDouble();

 

setPoint(a,b);

}

/* Метод проверяющий, совпадают ли две точки. Метод работает

с двумя точками, но свойства той, для которой метод вызывается,

доступны непосредственно, а свойства второй точки, передаваемой

через аргумент — доступны как имя_объекта.имя_свойства

*/

boolean isSame(Point a) {

if(x == a.x && y == a.y) {

return true;

} else {

return false;

}

}

// Метод вычисляющий расстояние между двумя точками

double getDistance(Point a) {

return Math.sqrt(Math.pow(x-a.x, 2) + Math.pow(y-a.y, 2));

}

// Метод вычисляющий расстояние от указанной точки до начала координат

double getRadius() {

Point a = new Point(0,0);

return this.getDistance(a);

}

} // конец класс Point

 

class Point3D extends Point{double z; // создаем класс объектов «трехмерная точка»

//- наследник класса «точка»

 

Point3D(double x, double y, double z){ // первый конструктор

super(x,y); //класс Point – суперкласс для класса Point3D,

this.z=z; // из него наследуются 2 поля, третье - создается



}

 

Point3D(){ //второй конструктор)

this(-1,-1,-1);

}

double getDistance(double x, double y, double z){ // перегруженный метод
//определения расстояния между точками

double dx=this.x-x;

double dy=this.y-y;

double dz=this.z-z;

return Math.sqrt(dx*dx+dy*dy+dz*dz);

}

 

double getDistance(Point3D other){ // перегруженный метод

return getDistance(other.x, other.y, other.z); //определения расстояния между точками

}

} //конец класса Point3D

 

 

public class Main { //класс, содержащий метод main

public static void main(String[] args) {

Point a = new Point(); //создаем объект класса Point

 

System.out.println("Задайте координаты первой точки на плоскости: ");

// Применяем к объекту метод для ввода координат с клавиатуры:

 

a.inputPoint();

 

// Создаём второй объект с помощью конструктора с двумя параметрами

// Параметры мы указали такие, что точка также совпадёт с началом

// отсчёта, как если бы воспользовались конструктором по умолчанию:

 

Point b = new Point(0,0);

 

System.out.println("Задайте координаты второй точки на плоскости: ");

 

// Применяем ко второму объекту метод для ввода координат с клавиатуры:

b.inputPoint();

 

/* Далее мы проверим, совпадают ли точки и, если нет, то вычислим

расстояние между ними и выведем его на экран. Сравнение точек мы

производим с помощью метода, сравнение a==b всегда даст ложный

результат, поскольку a и b хранят ссылки (адреса) объектов, а даже

два объекта с одинаковыми значениями всех полей имеют разные

адреса в памяти.

*/

Point c = new Point(2,3);

 

if(a.isSame(b)) {

System.out.println("Точки совпадают!");

} else {

System.out.println("Расстояние между точками: "+b.getDistance(a));

}

 

/* Далее мы проверим какая из точек расположена ближе к началу

координат. И сообщим об этом пользователю.

*/

 

if(a.getRadius() < b.getRadius()) {

System.out.println("К началу координат ближе первая точка!");

} else if(a.getRadius() == b.getRadius()) {

System.out.println("Точки равноудалены от начала координат!");

} else {

System.out.println("К началу координат ближе вторая точка!");

}

 

Point3D p=new Point3D(10,20,30); //создаем объект p класса Point3D

 

System.out.println("x="+p.x+"y="+p.y+"z="+p.z); // Выводим на экран координаты p

 

Point3D p1=new Point3D(30,40,10); //создаем две трехмерных точки p1 и p2

Point3D p2=new Point3D(0,0,0);

Point p3=new Point(4,6); // создаем двумерную точку p3

 

System.out.println("p1="+p1.x+","+p1.y+","+p1.z); //вывод координаты на экран

System.out.println("p2="+p2.x+","+p2.y+","+p2.z);

System.out.println("p1.getDistance(p2)="+p1.getDistance(p2)); // вычисление и //вывод на экран расстояния между точками p1 и p2

System.out.println("p1.getDistance(4,6)="+p1.getDistance(4,6)); //вычисление и

//вывод на экран расстояния между точкой p1 и двумерной точкой с координатами // (4,6)

System.out.println("p1.getDistance(p3)="+p1.getDistance(p3)); ////вычисление и

// вывод на экран расстояния между точкой p1 и точкой p3

 

} //конец метода main

 

} //конец класса Main


Дата добавления: 2015-11-04; просмотров: 18 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
class WrongState extends Exception{} | sovpod,kasanie,peresek,vnutri,poglotil,notach;

mybiblioteka.su - 2015-2024 год. (0.014 сек.)