|
Вступление Примеры Словарь Вопросы Sun Microsystems |
Примеры программирования на Java
import java.applet.*;
import java.awt.*;
//========================================
class Coordinate
// Для начала в программе объявляется новый класс Coordinate,
// который содержит координаты x и y. Используя обьекты класса Coordinate,
// можно хранить координаты объекта. Функция-конструктор класса использует
// значения его параметров для ввода переменных координат:
{
public int x;
public int y;
public Coordinate(int x, int y)
{
// Параметры функции-конструктора тоже называются х и у, как и переменные-
// члены класса. Для различия между ними используется ключевое слово this.
// Функцию-конструктор можно было бы описать и так:
// public Coordinate(int a, int b)
// {
// x = a;
// y = b;
// }
this.x = x;
this.y = y;
}
}
//============================================
public class Graphica extends Applet implements Runnable
// Создается класс, который будет потомком класса Applet.
// Класс Graphica будет использовать потоки, поэтому используется
// интерфейс Runnable, который говорит компилятору, что класс
// Graphica содержит функцию run
{
Graphics g;
Color bgColor; // Цвет фона
int total = 30; // Число точек, в которых высчитывается значение
// функции
int X = 20; // Задание положения
int Y = 100; // центра координат
int T = 0; // Начальный момент времени равен нулю
int grad = 3; // Шаг расчета(число градусов, через которое вычис-
// ляется значение функции)
int zoom = 40; // Масштабный коэффициент
Coordinate coordinate[];
//==================================
public void init()
{
g = getGraphics();
// Установка шрифта для вывода текста
Font font = new Font("TimesRoman", Font.BOLD, 7);
g.setFont(font);
bgColor = new Color(255,255,255);
setBackground(bgColor);
// Вызов основной функции программы, в которой идет расчет
// заданного графика (определение его координат)
get_coordinates();
}
//==============================
// Поскольку в программе строится график функции от двух переменных,
// под одной из которых подразумевается время, то без использования
// потоков не обойтись
public void start()
{
(new Thread(this)).start();
}
//=====================================
public void run()
{
while (true)
{
get_coordinates();
T++;
if (T > 4*(total))
T = 0;
repaint();
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
}
}
}
//=======================================
void get_coordinates()
{
//Ввыделение памяти под массив координат
coordinate = new Coordinate[total];
for (int i = 0 ; i < total; i++)
{
//System.out.println("x="+i); Вывод информации при
//System.out.println("y="+f(i)); отладке программы
//Расчет местоположения точки функции в графическом
// окне
int y = Y - f(i*4);
int x = X + i*8;
// Заполнение массива
coordinate[i] = new Coordinate(x,y);
}
}
//=============================================================
int f(int p) // Заданная функция y=sin(x-T)
{
double rad = grad*p*Math.PI/180; // Пересчет градусов в радианы
double P = zoom*Math.sin(rad - (grad*Math.PI/180)*T) ;
int PP = (int) P; // Преобразование типов double --> int
return PP;
}
//=============================================================
public void paint(Graphics g)
{
g.drawLine(X,5,X,150); // Рисование
g.drawLine(X,Y,280,Y); // осей координат
for ( int i = 0; i < 13; i++) // Разбиение оси Х
{
g.drawLine(X+i*20,Y-5,X+i*20,Y+5);
g.drawString(""+i,X+i*20,Y+15);
}
g.drawString("Y",25,20);
g.drawString("X",280,Y+15);
g.setColor(Color.green);// Установка цвета графика
//Вывод итогового графика функции
for ( int i = 0; i < (total-1); i++)
g.drawLine(coordinate[i].x, coordinate[i].y, coordinate[i+1].x, coordinate[i+1].y);
}
//===============================================================
}
|
||