string tipa objekti - datu bāzes tehnoloģijas | izglītība … · web viewan exception handler...

32
Java klase – objektu šablons Java klases eksemplāri - objekti Katram objektam ir sekojošas īpašības: 1) stāvoklis – objekta datu vērtības; 2) uzvedība (behavior) – ko ar objektu var darīt (izmantot datus un metodes); 3) identitāte – katra objekta unikalitāte (dati var būt vienādi, bet divi objekti tomēr ir atšķirīgi). Java klase Java klases Java klases Java klases 1

Upload: lyhuong

Post on 27-Jun-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Java klase – objektu šablons

Java klases eksemplāri - objekti

Katram objektam ir sekojošas īpašības:1) stāvoklis – objekta datu vērtības;2) uzvedība (behavior) – ko ar objektu var darīt (izmantot datus un

metodes);3) identitāte – katra objekta unikalitāte (dati var būt vienādi, bet

divi objekti tomēr ir atšķirīgi).

Java klaseJava klases objekts

Java klases objektsJava klases objekts

1

Java klases objektos pieeja datiem iespējama tikai izmantojot klases metodes – tā ir datu iekapsulēšana (encapsulation)

Pieejas tipi klases datiem un metodēm:

1) private – nevar izmantot no citām klasēm;2) public – var izmantot arī no citām klasēm;3) protected – apakšklašu metodēm ir tieša pieeja superklases

datiem.

Java klase

Metode A Metode B

Datu vienība

2

Mainīgo tipi un konsoles izvadsMainīgo tipi:1) veselie skaitļi: byte, short, int, long;2) reālie skaitļi: double, float;3) simboli: char;4) loģiskie jeb būla mainīgie: boolean (vērtības: true, false).

class Piemers1 {public static void main (String args[]) { // Galvenā metode, ar to sākas izpilde.int i1, i2, i3;i1 =1; Rezultāts:i2 = 2;i3 = i1 +i2;System.out.println("Summa = " + i3); } }

Alternatīvi pieraksta varianti:class Piemers1 {public static void main (String args[]) {int i1=1, i2=2, i3;i3 = i1 +i2;System.out.println("Summa = " + i3); } }

class Piemers1 {public static void main (String args[]) {int i1=1, i2=2, i3;System.out.println("Summa = " + (i1 + i2)); } }

class Piemers2 {public static void main (String args[]) { Rezultāts:char simb1, simb2, simb3, simb4;simb1 = 'Y';simb2 = 88; // Simbola kodssimb3 = simb2;simb3++; // Simbola koda palielināšanasimb4 = simb1;simb4++;System.out.println(simb1 + " " + simb2 + " " + simb3+ " " + simb4); } }

3

Vienkāršo mainīgo definēšana un sākotnējo vērtību piešķiršanapublic class Piemers3 {public static void main (String[ ] args) {char simb_main_16 = 'A';byte vesals_main_8 = 127;short vesals_main_16 = 32767;int vesals_main_32 = 2147483647;long vesals_main_64 = 922337203;float real_main_32 = 3.40282347E+38F;double real_main_64 = 1.7976931348623157E+38F;boolean loģiskais_main = true;System.out.println(simb_main_16); } }

Mainīgā vērtības palielināšana vai samazināšana par 1 vienību

int i = 2;i =i+1; // i = 3i++; // i = 3++i; // i = 3i--; // i = 2--i; // i = 2int n = 3;int m = 2 * ++n; // n = 4, m = 8 Vispirms izmaina vērtību, tad sarēķinaint m = 2 * n++; // n = 4, m = 6 Vispirms sarēķina, tad izmaina vērtību

Konstantes (vērtības nevar tikt mainītas)static final double p = 3.1416;

Komentāri

........................// Vienas rindas komentārs/* Vairāku rindu komentāri *//** Komentāri dokumentu veidošanai*/

4

Masīvi

class Piemers3 {public static void main (String args[]) {int masivs1[];masivs1 = new int[10];masivs1[0] = 0;masivs1[9] = 9;System.out.println(masivs1[0] + " " + masivs1[9]); } }

Alternatīva masīva definēšanas forma:class Piemers3 {public static void main (String args[]) {int[] masivs = new int[10];masivs1[0] = 0;masivs1[9] = 9;System.out.println(masivs1[0] + " " + masivs1[9]); } }

Divdimensiju masīva veidošana:class Piemers4 {public static void main (String args[]) {int masivs2[] [] =new int [5] [5];int i, j, k = 0;for (i =0; i <5; i++) { for (j=0; j<5; j++){ masivs2[i][j]=k; k++; System.out.print(masivs2[i][j] + " ");} System.out.println(); } } }

int [] masivs3 = {1, 2, 3, 4, 5};

int skaits = 10;int {} masivs4 = new int[skaits];

5

Simbolu rindas mainīgo definēšana izmantojot klasi String

import java.math.*;public class Tests{public static void main(String[] args){ String x = "ABCDE";int y = x.length(); // y vērtība ir 5System.out.println("Simbolu skaits = " + y);String z = x.substring(0, 3); // rezultāts ir "ABC"String r = x.substring(0, 3) + z + 'G'; // rezultāts ir "ABCABCG"System.out.println("z = " + z + ";" + "r = " + r); boolean m = z.equals (r); // simbolu rindu vienādības pārbaudeSystem.out.println("Salidzinajums = " + m); }}

6

String tipa objektiString teksts = “Aaaaaaaaaa”; // Konkatenācijas operatori: + un +=

7

Interfeiss – līdzigs klasei, bet metode tiek tikai nosaukta, bez tās darbību definēšanas

interface Lookup { Object find (String name); }

8

Salīdzināšanas un loģikas darbības

Salīdzināšanas darbības:1) vienāds == ;2) nevienāds != ;3) lielāks > ;4) mazāks < ;5) lielāks vienāds >= ;6) mazāks vienāds <= .

Loģikas darbības:1) un (and) & ;2) vai (or) | ;3) izslēdzošais vai (xor) ^ ;4) nē (not) ! .

Nosacījuma operatori

if (alga >= 1000) {nodokli = 300;}else if (alga >= 500) {nodokli = 100;}else (nodokli = 0;}

switch (tips) { // tips vērtība var būt 5, 6 vai cita case 5: ... break; case 6: ... break; default: ... break; }

9

while un for cikli

while (nosacījums) {operatori};

while (nosacījums) {operatori; if (nosacījums) break; // Izeja no cikla operatori;}while (nosacījums) {operatori; if (nosacījums) continuebreak; // Turpinājums, ja izpildās operatori;}

for (int i = 1; i <= 10; i++) {operatori};

for (Cilveks masivs : a) System.out.println(a);

10

Rezultāta tipa norādīšana

import java.math.*;public class Tests{public static void main(String[] args){ double x = 10.2;int y ;y = (int) Math.round(x);System.out.println("y = " + y); }}

11

Īpašo situāciju apstrāde (exception handling)

try {Programmas kods.} catch (īpašās situācijas tips e) {Īpašās situācijas apstrādes komandas.} finally {Programmas kods, izpildās beigās vienmēr.}

The term exception is shorthand for the phrase "exceptional event." Definition: An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. When an error occurs within a method, the method creates an object and hands it off to the runtime system. The object, called an exception object, contains information about the error, including its type and the state of the program when the error occurred. Creating an exception object and handing it to the runtime system is called throwing an exception.After a method throws an exception, the runtime system attempts to find something to handle it. The set of possible "somethings" to handle the exception is the ordered list of methods that had been called to get to the method where the error occurred. The list of methods is known as the call stack (see the next figure).

The runtime system searches the call stack for a method that contains a block of code that can handle the exception. This block of code is called an exception handler. The search begins with the method in which the error occurred and proceeds through the call stack in the reverse order in which the methods were called. When an appropriate handler is found, the runtime system passes the exception to the handler. An exception handler is considered appropriate if the type of the exception object thrown matches the type that can be handled by the handler.The exception handler chosen is said to catch the exception. If the runtime system exhaustively searches all the methods on the call stack without finding an appropriate exception handler, as shown in the next figure, the runtime system (and, consequently, the program) terminates.

12

Īpašās situācijas

Programmas izpildes laikā var rasties īpasas situācijas, kurāsjāizpilda noteiktas darbības. Īpašās situācijas veido:

1) kļūdas programmās;2) situācijas, kuru apstrādei nepieciešams papildus programmas kods.

Ir:1) iebūvētās īpašās situācijas (ArithmeticException,

IllegalArgumentException, ...);2) programmētāja definētās īpašās situācijas.

Īpašo situāciju apstrādei izmanto slēgvārdus:1) try {bloks, kurā tiek izskatītas īpašās situācijas}2) catch (īpašās_situācijas_tips) {īpašās situācijas apstrāde}

class PiemersTryCatch {public static void main (String args[] ) {int d, a;try {d = 0; a = 42/d; System.out.println( a); }catch (ArithmeticException e) {System.out.println("Kļuda! Dalisana ar nulli.");}

System.out.println("Turpinājums!"); }}

3) throw Savas īpašās situācijas izveidošana4) throws Uzskaita īpašās situācijas, kuras tiek pārtvertas5) finally {komandu bloks, kurš tiek izpildīts pēc bloka try/catch izpildes}

13

Klases definēšana

class Cilveks {public int PersKods;public String Uzvards;public String Vards;public static String Valsts = “Latvija”; }

public class Klases_nosaukums {objekta_atribūts_1objekta_atribūts_2… konstruktors_1konstruktors_2…metode_1metode_2 … }

14

Konstruktors jeb konstruktora metode

1. konstruktora variantsclass Kaste {//Klases mainīgiedouble platums;double augstums;double biezums;// KonstruktorsKaste(duble p, double a, double b) {platums = p;augstums = a;biezums = b;}// Metodeduble Tilpums () { return platums*augstums*biezums;} }

2. konstruktora variantsclass Kaste {//Klases mainīgiedouble platums;double augstums;double biezums;// KonstruktorsKaste(duble platums, double augstums, double biezums) {this.platums = platums;this.augstums = augstums;this. biezums = biezums;}// Metodeduble Tilpums () { return platums*augstums*biezums;} }

3. konstruktora variantsclass Kaste {//Klases mainīgiedouble platums;double augstums;double biezums;// Konstruktors definē objektu sākotnējās vērtības. // Visi klases objekti sākumā ir vienādiKaste(duble p, double a, double b) {platums = 10;augstums = 10;biezums = 10;}// Metodeduble Tilpums () { return platums*augstums*biezums;} }

15

Viena konstruktora izsaukšana no cita konstruktora

this()

Metode

public String UzvVar() {String main_1 = “Tukšs”;if (Uzvards != null) main_1 = Uzvards + Vards;return main_1; }

16

Klases definēšanas piemērspublic class Darbinieks {// klases eksemplāra atribūti private String uzvards; private double alga; private int dzim_gads; // konstruktor-funkcija public Darbinieks (String uzv, double alg, int gads) { uzvards = uzv; alga = alg; dzim_gads = gads; } // metodes public String getUzvards() { return uzvards; } public double getAlga() { return alga; } public int getDzim_gads() { return dzim_gads; } public void Algas_maina (double procents) { double pieaugums = alga * procents /100; alga += pieaugums; } }

public class DarbinieksTests { public static void main (String [] args) { Darbinieks [] darbinieki = new Darbinieks [3]; darbinieki [0] = new Darbinieks ("Koks", 400.50, 1980); darbinieki [1] = new Darbinieks ("Celms", 500.50, 1985); darbinieki [2] = new Darbinieks ("Sakne", 550.50, 1970); for (Darbinieks e : darbinieki) System.out.println("uzvards= "+ e.getUzvards() + ", alga= " +

e.getAlga() ); } }

17

Klases objekta (klases eksemplāra) izveidošanaclass Punkts { public double x, y; }

Punkts mainPunkts = new Punkts();mainPunkts.x = 123.5;mainPunkts.y = 456.5;

Klases mainīgie (visai klasei viena un tā pati mainīgā vērtība)public static Punkts Obj_punkts = new Punkts;

Metodespublic void clear() { x = 0; y =0; } // Metodei nav parametru un tā neatgriež // nekādu vērtību (tāpēc tips – void) public double attālums(Punkts p_punkts) { double xx, yy; xx = x – p_punkts.x; yy = this.y – p_punkts.y; return Math.sqrt(xx * xx + yy * yy); }double mai_punkts = a_punkts.attālums(b_punkts); // Metodes izsaukums

Klases jeb statiskās metodes (strādā tikai ar klases mainīgiem jeb atribūtiem)

18

Saites starp objektiem

1. Saite – "lieto" (dependence, uses-a).

2. Saite – agregācija (B var eksistēt bez A).

3. Saite – kompozīcija (B nevar eksistēt bez A).

4. Saite - mantošana (inheritance, is-a).

Objektu klase A Objektu klase B

Objektu klase A Objektu klase B

Objektu klase A Objektu klase B

Objektu klase A Objektu klase B

19

Klašu piemēri

1. Klases Cilveks definējums. Galvenās metodes (main) definējumā nav.

public class Cilveks{// Klases mainīgieprivate String vards;private String uzvards;//Konstruktora funkcijapublic Cilveks(String a, String b) {vards = a; uzvards = b;}//Metodespublic String getVards() {return vards;}public String getUzvards() {return uzvards;}public void setVards(String x) {vards = x;}public void setUzvards(String y) {uzvards = y;} }

2. Klases CilveksTests definējums. Definējumā ir galvenā (main) metode.Divu klases Cilveks eksemplāru datu ierakstīšana masīvā masivs[]

public class CilveksTests{public static void main(String[] args){ Cilveks masivs[] = new Cilveks[2];masivs[0] = new Cilveks("Juris", "Koks");masivs[1] = new Cilveks("Rasma", "Zars");// Masīva masivs[] datu izvadeSystem.out.println("masiva[] dati:");for (Cilveks c : masivs)

System.out.println(c.getVards()+" " + c.getUzvards()); } }

3. Rezultāts:

Klases Cilveks definējumsvardsuzvardsgetVards()getUzvards()setVards()setUzvards()

Masīvs masivs[]Juris KoksRasma Zars

20

Juris KoksJuris

RasmaJurisZarsKoksJuris

RasmaJurisZarsKoksJuris

Juris KoksJuris

4. Klases CilveksTests definējums. Definējumā ir galvenā (main) metode.Divu klases Cilveks objektu izveidošana un to datu izvadepublic class CilveksTests{Cilveks Obj1, Obj2;Obj1 = new Cilveks("Juris", "Koks");Obj2 = new Cilveks("Rasma", "Zars");// Objekta datu izvadeSystem.out.println("Objekta Obj1 dati:");System.out.println(Obj1.getVards() + " " + Obj1.getUzvards());System.out.println("Objekta Obj2 dati:");System.out.println(Obj2.getVards() + " " + Obj2.getUzvards()); }}

5. Rezultāts:

6. Divu klases Cilveks objektu izveidošana, datu ievade izmantojot set metodes un izvade.

public class CilveksTests{public static void main(String[] args){ //Divu klases Cilveks objektu izveidošanaCilveks Obj1, Obj2;Obj1 = new Cilveks("n", "n");Obj2 = new Cilveks("n", "n");// Metožu izmantošana datu ievadeiSystem.out.println("Metožu izmantošana:");Obj1.setVards("Juris");Obj1.setUzvards("Koks");Obj2.setVards("Rasma");Obj2.setUzvards("Zars");// Objektu datu izvadeSystem.out.println("Objekta Obj1 dati:");System.out.println(Obj1.getVards() + " " + Obj1.getUzvards());System.out.println("Objekta Obj2 dati:");System.out.println(Obj2.getVards() + " " + Obj2.getUzvards()); }}

7. Rezultāts:

21

Objekta tipa mainīgo definēšana

public class CilveksTests{public static void main(String[] args){ //Objekta mainīgā izveidošana un tā inicializēšanaCilveks objekts; // Klases Cilveks objekta mainīgā objekts izveidošanaobjekts = new Cilveks("Zane", "Sakne"); /* Objekta piesaiste objekta mainīgajam */System.out.println("Objekta dati:");System.out.println(objekts.getVards()+ " " + objekts.getUzvards());}}

public class CilveksTests{public static void main(String[] args){ /*Objekta mainīgā izveidošana, tā inicializēšana piesaistot tam jaunizveidotu objektu */Cilveks objekts = new Cilveks("Zane", "Sakne"); System.out.println("Objekta dati:");System.out.println(objekts.getVards()+ " " + objekts.getUzvards());}}

public class CilveksTests{public static void main(String[] args){ /* Objekta mainīgā izveidošana, tā inicializēšana piesaistot tam jaunizveidotu tukšu objektu un objekta datu ievade izmantojot Set metodes */Cilveks objekts = new Cilveks("n", "n"); objekts.setVards("Inese");objekts.setUzvards("Liepa");System.out.println("Objekta dati:");System.out.println(objekts.getVards()+ " " + objekts.getUzvards());}}

22

Klašu paketes

package pakete_1;class Klase_1 { ... }

23

Datu ievade

import java.io.*;class Ievade {public static void main(String args[]) throws IOException{char c;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("Ievadiet simbolus! Lai pabeigtu, nospiediet 'q'.");do {c = (char) br.read();System.out.println(c);}while (c != 'q'); }}

Rezultāts:Ievadiet simbolus! Lai pabeigtu, nospiediet 'q'.a <Enter>ab <Enter>bq <Enter>qProcess completed.

24