SPRAWOZDANIE
Języki programowania obiektowego
ćwiczenie nr 5
Applet JAVA- „Oscylator”
Klasa Vector2D
public class Vector2D
{
double x;
double y;
Vector2D() //konstruktor domyślny klasy “Vector2D”
{
x=0;
y=0;
}
Vector2D(double a, double b) //konstruktor z parametrami dla klasy “Vector2D”
{
x=a;
y=b;
}
public Vector2D suma( Vector2D c) //funkcja składowa zwracająca nowy wektor,
będący sumą dwóch wektorów
{
Vector2D suma= new Vector2D(x+c.x,y+c.y);
return suma;
}
public Vector2D roznica( Vector2D c) //funkcja składowa zwracająca nowy wektor będący
różnicą dwóch wektorów
{
Vector2D roznica= new Vector2D(x-c.x,y-c.y);
return roznica;
}
public Vector2D skalar (double c) //funkcja składowa zwracająca nowy wektor, który jest
wynikiem pomnożenia wektora przez stała
{
Vector2D skalar= new Vector2D(c*x,c*y);
return skalar;
}
public double dlugosc() //funkcja składowa zwracająca długość wektora
{
double dl= Math.sqrt(x*x+y*y);
return dl;
}
public Vector2D znormalizowany() //funkcja składowa zwracająca wektor po
znormalizowaniu
{
Vector2D znormalizowany= new Vector2D(x/dlugosc(),y/dlugosc() );
return znormalizowany;
}
}
Klasa SpringApplet
import java.awt.*;
import javax.swing.*;
public class SpringApplet extends JApplet
{
public void init( )
{
Vector2D obiekt1=new Vector2D(4,5);
Vector2D obiekt2=new Vector2D(8,1); //wywołanie nowych obiektów
dla klasy „Victor2D”
Vector2D sum = obiekt1.suma(obiekt2); //zapisanie do nowej zmiennej wyniku
sumy dwóch stworzonych wektorów
Vector2D roz = obiekt1.roznica(obiekt2); //różnica tych wektorów zapisana
do nowej zmiennej
Vector2D norm1 = obiekt1.znormalizowany();
Vector2D norm2 = obiekt2.znormalizowany(); //zapisanie obliczonych wektorów
znormalizowanych do nowych zmiennych
double dlug1 = obiekt1.dlugosc(); //zapisanie do nowych zmiennych długości
wektorów
double dlug2 = obiekt2.dlugosc();
Vector2D skal = obiekt1.skalar(3); //zapisanie do nowej zmiennej wyniku
pomnożenia wektora przez stałą
System.out.println("wektor 1: "+obiekt1.x +" "+obiekt1.y); //wyświetlanie na konsoli
wyników wyliczonych dla
stworzonych wektorów
System.out.println("wektor 2: "+obiekt2.x +" "+obiekt2.y);
System.out.println("suma: "+sum.x+" "+sum.y);
System.out.println("różnica: "+roz.x+" "+roz.y);
System.out.println("wektor znormalizowany 1: "+norm1.x+ " "+norm2.y);
System.out.println("wektor znormalizowany 2: "+norm2.x+ " "+norm2.y);
System.out.println("długość 1: "+dlug1);
System.out.println("długość 2: "+dlug2);
System.out.printl(”mnożenie przez stałą: ” +skal.x+” ”+skal.y);
}
Public void paint(Graphisc g)
{
}
}
Wynik programu (wyświetlany na konsoli)
Wektor 1: 4.0 5.0
wektor 2: 8.0 1.0
suma: 12.0 6.0
różnica: -4.0 4.0
wektor znormalizowany 1: 0.6246950475544243 0.12403473458920847
wektor znormalizowany 2: 0.9922778767136677 0.12403473458920847
długość: 16.4031242374328485
długość: 28.06225774829855
mnożenie przez stalą: 12.0 15.0
Odpowiedzi na pytania
1. Klasa Timer jest osobnym wątkiem, uruchamianym o zadanym czasie, i ewentualnie powtarzanym w równych odstępach czasu. Klasie Timer towarzyszy zawsze klasa TimerTask.
TimerTask implementuje interfejs Runnable, zawiera więc abstrakcyjną funkcję składową run(), którą trzeba przykryć. Od wywołania tej funkcji składowej rozpoczyna się wykonywanie wątku. Kolejną funkcją składową klasy TimerTask jest funkcja składowa cancel(), która przerywa wątek i zwraca wartość true jeśli się to udało.
2. Funkcje składowe mogą zwracać wartości typów prostych, jak też obiekty dowolnych klas.
3. Obiekt Graphics jest graficznym kontekstem apletu, służy do graficznego przedstawienia klass i zawartych w nich funkcji składowych.
public void paint(Graphics g)
{
}