130 likes | 367 Views
L8. Objekt-orienteeritus programmeerimises Klassikirjeldus Klassiväli. Klassimeetod Isendiväli. Isendimeetod Isend. Konstruktor. Punkt, sirge, kolmnurk . Loe: Aabits vihik 2 ja vihik 3. Punkt. Punkt tasandil on antud oma kahe koordinaadiga.
E N D
L8 • Objekt-orienteeritus programmeerimises • Klassikirjeldus • Klassiväli. Klassimeetod • Isendiväli. Isendimeetod • Isend. Konstruktor Punkt, sirge, kolmnurk. Loe: Aabits vihik 2 ja vihik 3.
Punkt Punkt tasandil on antud oma kahe koordinaadiga. Kolm punkti (mis ei asu ühel ja samal sirgel) määravad alati mingi kolmnurga, st on teatud kindla kolmnurga tippudeks. y (1; 2) (5; 1) x (3; -4)
[vt Aabits. Vihik 2] class Punkt{ private double x; private double y; Punkt(double a, double b){//kon x = a; y = b; }//konstruktor . . . public double kaugus(Punkt p){ return Math.sqrt( (x-p.x( ))*(x-p.x( )) + (y-p.y( ))*(y-p.y( ))); }//kaugus . . . public String toString(){ return "("+Test_PS.ümar(x)+ "; " + Test_PS.ümar(y) + ")"; }//toString Punkt privaatsed isendiväljad: x y isendimeetodid: x( ) y( ) veerand( ) kaugus( ) kaugus(Punkt p) kaugus(Sirge s) toString( )
class Test_Punkt{ static Punkt p1 = new Punkt(1.0, 2.0); static Punkt p2 = new Punkt(5.0, 1.0); static Punkt p3 = new Punkt(3.0, -4.0); public static void main(String[] args){ System.out.println("Punktid on:"); System.out.println(p1); System.out.println(p2); System.out.println(p3); väljastadaKolmnurk(); }//main static void väljastadaKolmnurk(){ . . . }//väljastadaKolmnurk }//Test_Punkt Test_Punkt Punkt p1 Punkt p2 Punkt p3 main( ) väljastadaKolmnurk( )
class Test_Punkt{ static Punkt p1 = new Punkt(1.0, 2.0); static Punkt p2 = new Punkt(5.0, 1.0); static Punkt p3 = new Punkt(3.0, -4.0); public static void main(String[] args){ . . . }//main static void väljastadaKolmnurk(){ . . . }//väljastadaKolmnurk }//Test_Punkt Punkt x: 1.0 y: 2.0 Punkt x: 5.0 y: 1.0 Test_Punkt Punkt p1 Punkt p2 Punkt p3 main( ) väljastadaKolmnurk( ) Punkt x: 3.0 y: -4.0
Punkt p2 = new Punkt(5.0, 1.0); Rakendatakse klassi Punkt konstruktorit: Punkt(5.0,1.0) - täidab isendi väljad p2 Isendi kohaviit omistatakse 3. 2. new Punkt teeb koha isendile Punkt x: y: 1. Konstruktor klassis Punkt Punkt(double a, double b){//kon x = a; y = b; }//konstruktor
class Test_Punkt{ static Punkt p1 = new Punkt(1.0, 2.0); static Punkt p2 = new Punkt(5.0, 1.0); static Punkt p3 = new Punkt(3.0, -4.0); public static void main(String[] args){ System.out.println("Punktid on:"); System.out.println(p1);// ehk: System.out.println(p1.toString( )); System.out.println(p2); System.out.println(p3); väljastadaKolmnurk(); }//main static void väljastadaKolmnurk(){ . . . }//väljastadaKolmnurk }//Test_Punkt Isendimeetod klassist Punkt public String toString(){ return "("+Test_PS.ümar(x)+ "; " + Test_PS.ümar(y) + ")"; }//toString Klassimeetod klassist Test_PS public static double ümar(double x){//tagastatake ümar x double arv = Math.pow(10, KOHTI_PEALE_KOMA); return Math.round(x*arv)/arv; }//ümar [vt Aabits. Vihik 2]
static void väljastadaKolmnurk(){ double a = p1.kaugus(p2); double b = p2.kaugus(p3); double c = p3.kaugus(p1); double p = (a + b + c) / 2; System.out.println("Kolmnurga küljed on: "); System.out.println(a + ", " + b + ", " + c); System.out.println("Kolmnurga ümbermõõt on " + 2*p); System.out.println("Kolmnurga pindala on " + Math.sqrt(p*(p-a)*(p-b)*(p-c))); }//väljastadaKolmnurk Isendimeetod klassist Punkt public double kaugus(Punkt p){ return Math.sqrt( (x-p.x( ))*(x-p.x( )) + (y-p.y( ))*(y-p.y( ))); }//kaugus Klassimeetod klassist Math public double sqrt(double arg){ . . . }
java Test_Punkt Punktid on: (1.0; 2.0) (5.0; 1.0) (3.0; -4.0) Kolmnurga küljed on: 4.123105625617661, 5.385164807134504, 6.324555320336759 Kolmnurga ümbermõõt on 15.832825753088922 Kolmnurga pindala on 10.999999999999996 Meetodid main( ), väljastadaKolmnurk( ) kaugus( ), toString( ) ümar( ) sqrt( ) println( ) Klassid Test_Punkt Punkt Test_PS Math System PrintStream
Ülesandeid 1. Muuta peameetodis antud punktide koordinaate. 2. Muuta meetodit Test_Punkt.väljastadaKolmnurk( ) nii, et kolmnurga andmed väljastataks ümardatult. 3. Lisada meetodisse Test_Punkt.väljastadaKolmnurk( ) ka kolmnurga nurkade arvutamine ja väljastamine. [vt ka Aabits. Vihik 3, lk 4] Kontrollida programmi tööd (peameetodit rakendades).
x [vt Aabits. Vihik 2] y Sirge privaatsed isendiväljad: k b isendimeetodid: tõus( ) algordinaat( ) kaugus(Punkt p ) kaugus( ) lõikepunkt(Sirge s) nurk(Sirge s) b k on tõus b on algordinaat tagastatakse k tagastatakse b -”- selle sirge kaugus punktist p -”- selle sirge kaugus nullpunktist -”- selle sirge lõikepunkt sirgega s -”- selle sirge ja sirge s vaheline teravnurk
Sirge privaatsed isendiväljad: k b isendimeetodid: tõus( ) algordinaat( ) kaugus(Punkt p ) kaugus( ) lõikepunkt(Sirge s) nurk(Sirge s) Punkt privaatsed isendiväljad: x y isendimeetodid: x( ) y( ) veerand( ) kaugus( ) kaugus(Punkt p) kaugus(Sirge s) toString( ) Test_PS klassiväljad: Punkt p1 Punkt p2 Sirge s1 Sirge s2 klassimeetodid: ümar( ) main( )