Скачиваний:
76
Добавлен:
09.05.2014
Размер:
38.91 Кб
Скачать

Системы программирования Internet-приложений

Лабораторная работа #1

Вариант 112

Работы выполнили

Голубцов Евгений

Пермяков Валерий

Группа 3100

2010

На языке Java написать консольную программу, которая определяет, какие точки из массива A входят в заданную область S. Программа должна запрашивать параметр R у пользователя и выводить на экран координаты точек, входящих в область. Для координат и параметра R использовать типы данных с плавающей точкой. Для ввода R использовать стандартный поток ввода System.in.

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

Код программы:

lab1.java

import java.io.*;

class lab1 {

public static void main(String args[])

throws IOException {

double R;

PointInArea arrayOfPoints[] = { new PointInArea ( 4, 3),

new PointInArea ( 5,-4),

new PointInArea (-4,-4),

new PointInArea (-3, 3),

new PointInArea (-2, 2) };

BufferedReader inputStr = new BufferedReader (new InputStreamReader (System.in));

System.out.println ("Введите R:");

try {

R = Double.parseDouble (inputStr.readLine());

}

catch (NumberFormatException e) {

System.out.println ("Нужно ввести положительное число!");

return;

}

if (R <= 0) {

System.out.println ("Требуется ввести положительное число!");

return;

}

System.out.println("Точки, попадающие в заданную область:");

for (int i=0; i<arrayOfPoints.length; i++) {

if (arrayOfPoints[i].isInArea(R))

System.out.println(arrayOfPoints[i]);

}

}

}

PointInArea.java

class PointInArea extends Point

implements IfaceArea {

private enum Quarters { first , second, third, fourth };

private Quarters qrtr;

public PointInArea (double x_coord) {

this (x_coord, x_coord);

}

public PointInArea (double x_coord, double y_coord) {

super (x_coord, y_coord);

if (x_coord >= 0)

if (y_coord >= 0)

qrtr = Quarters.first;

else qrtr = Quarters.fourth;

else if (y_coord >= 0)

qrtr = Quarters.second;

else qrtr = Quarters.third;

}

public boolean isInArea (double R) {

switch (qrtr) {

case second:

if (x >= -R/2 && y <= R)

return true;

break;

case third:

if (y >= (-x - R))

return true;

break;

case fourth:

if ((Math.pow(x, 2) + Math.pow(y, 2)) <= Math.pow(R, 2))

return true;

break;

}

return false;

}

}

Point.java

class Point {

double x, y;

public Point (double x_coord, double y_coord) {

x = x_coord;

y = y_coord;

}

public String toString() {

return "x = " + x + "; " + "y = " + y + ";";

}

}

IfaceArea.java

public interface IfaceArea {

boolean isInArea (double R);

}

Соседние файлы в папке java.lab1