JAVA predavanje 7

java_thumbZačetno spoznavanje s tabelami.

Razred Pravokotnik:

  • atributi, ki določajo velikost in lego (ta je določena s koordinatami levega gornjega oglišča).
  • metode: nastaviVelikost, nastavi Lego, izracunajObseg, izracunajPloscino, izpisiPravokotnik
  • 2 konstruktorja:

- konstruktor brez parametrov kreira pravokotnik s stranicama a=b=1 in levi gornjim ogljiščem v točki (0,1);
- konstruktor s štirimi parametri, ki predstavljajo začetne vrednosti vseh štirih atributov

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class Pravokotnik {
private double x, y, a, b; //deklaracija atributov
private static int stevec = 0 // NADGRADNJA števec
 
public Pravokotnik(){
a = 1;
b = 1;
x = 0;
y = 1;
stevec++; // NADGRADNJA števec
}
 
public Pravokotnik(double x, double y, double a, double b){ // overloading
this.a = a;
this.b = b;
this.x = x;
this.y = y;
stevec++; // NADGRADNJA števec
}
 
public static int vrniStevec(){ // NADGRADNJA števec
return stevec;
}
 
 
// Deklaracija metod
public void nastaviVelikost(double a, double b){ //ne vrača podatkov, zato je void
this.a = a;
this.b = b;
}
 
public void nastaviLego(double x, double y){
this.x = x;
this.y = y;
}
 
public double izracunajObseg{
return 2*(a+b);
}
 
public double izracunajPloscino(){
return a*b;
}
 
public void izpisi Pravokotnik(){
System.out.printf("a=%.2f, b=%.2f, x=%.2f, y=%.2f %n", a, b, x, y);
System.out.printf("Obseg je %.2f %n", izracunajObseg() );
System.out.printf("Ploscina je %.2f %n%n", izracunajPloscino() );
}
}
 

 

 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class TestPravokotnik{
 
public static void main(String[] args){
 
//NADGRADNJA števec
System.out.println("Stevilo pravokotnikov je" + Pravokotnik.vrniStevec() );  
 

Pravokotnik p1 = new Pravokotnik();
//NADGRADNJA števec
  System.out.println("Stevilo pravokotnikov je" + Pravokotnik.vrniStevec() );  

Pravokotnik p2 = new Pravokotnik(3, 5, 8, 4);

//NADGRADNJA števec (x, y, a, b)
 System.out.println("Stevilo pravokotnikov je" + Pravokotnik.vrniStevec() );  
 
p1.izpisiPravokotnik();
p2.izpisiPravokotnik();
 
p1.nastaviLego(2,2);
p2.nastaviLego(7,0);
 
p2.nastaviVelikost(1,0.5);
 
p1.izpisiPravokotnik();
p2.izpisiPravokotnik();
}
}

 



NADGRADNJA: nadgradite razred Pravokotnik tako, da bo omogočal tudi štetje kreiranih pravokotnikov.

3 spremembe:

  • števec kreiranih pravokotnikov
  • ob vsakem kreiranju pravokotnika je treba števec povečati za 1
  • dodati je treba metodo, ki vrne vrednost števca
/* V kodi glej // NADGRADNJA števec */

 

Referenca THIS

Referenca this predstavlja naslov tistega objekta, ki smo ga navedli ob klicu metode.


Primer: V razredu Pravokotnik imamo metodo ploscina. V razredu TestPravokotnik smo deklarirali objekta p1 in p2, za katera lahko pokličemo tudi metodo ploscina.

Klic:

- p1.ploscina();
- p2.ploscina();

1
2
3
public double ploscina(){
return a*b;
}

 

je isto, kot če bi napisali

1
2
3
public double ploscina(){
return this.a * this.b;
}

 

 

Referenca this je avtomatsko dodana v prevajalnik. Ispustimo jo lahko, ko stvar ni dvoumna.



V razredu Pravokotnik želimo dodati metodo, ki primerja dva pravokotnika med sabo in vrne true, če je pravokotnik this večji.

1
2
3
4
public boolean vecji(Pravokotnik p){	//primerjava objektov med seboj
return this.ploscina() > p.ploscina();
}
 

 



primer klica:
1
2
3
- p1.vecji(p2);     // ali je p1 večji od p2
// referenca this predstavlja naslov objekta p1
- p2.vecji(p1);

 




TABELE


Tabela je sestavljena podatkovna struktura, ki združuje elemente istega tipa.


Primer 1
: Simuliranje metov kocke
Namesto šestih samostojnih spremenljivk, ki so takrat predstavljale posamezne števce lahko uporabimo tebele.

Primer 2: Če moramo predstaviti podatke o osebnih dohodkih nekega delavca za 12 mesecev preteklega leta.
Namesto 12 samostojnih spremenljivk uporabimo tabelo.


Deklaracija tabele


2 koraka, podobno, kot pri objektih:
  • deklaracija spremenljivk, ki predstavlja tabelo
  • kreiranje tabele


Primer 1: (deklaracija tipa)

1
int[] stevci;

 



int[] -  tip spremenljivke; je določen s tipom elementov in z ustreznim številom parov oglatih oklepajev.

stevci -  ime spremenljivke

1
stevci = new int[6];

 



new -  operator za dodelitev prostora
int -  tip elementov
[6] -  število elementov


Element je en sestavni del tabele!

stevci
Spremenljivka hrani naslov tabele.

Dostop do posameznih elementov je možen s pomočjo indeksov. Indeks je zaporedna številka elementa v tabeli; v javi se indeksi začenjo z 0.

Oba koraka lahko združimo:

1
int[] stevci = new int[6];

 



Primer 2:
1
double[] od = new double[12];

 



od
Tabela deluje z enima samim imenom od.
Če želimo dostopati do elementov uporabimo indeks.


Vpis vrednosti v tabelo


Ko tabeli dodelimo prostor v pomnilniku z operatorjem new, java sama vzpostavi začetne vrednosti elementov.

  • elementi numeričnega tipa dobijo vrednost 0
  • elementi tipa boolean dobijo vrednost false
  • elementi tipa char dobijo vrednost '\u0000'
  • elementi, ki predstavljajo objekte dobijo vrednost null


Vrednosti lahko določimo s prireditvenim stavkom. Vsakemu elementu posebej priredimo vrednost s prireditvenim stavkom.

1
2
3
4
5
6
7
od[0] = 1218.40;
od[1] = 1088.35;
od[2] = 1301.72;
.
.
.
od[11] = 1835.45;

 




Za prirejanje vrednosti vsem elementom naenkrat uporabimo zanko:

1
2
3
for(int i=0; i<12; i++){
od[i] = BranjePodatkov.preberiDouble();
}


Spremenljivka i nastopa v vlogi indeksa! i določa, kateri element vrednosti trenutno urejamo.

2. možnost:
Inicializacija tabele s seznamom vrednosti: ko tabelo deklariramo naštejemo vrednosti posameznih elementov.

1
double[] od = {1218.40, 1088.35, 1301.72, ..., 1835.45};

 



1
int[] stevci = {0,0,0,0,0,0};

 




Atribut length


V javi pripada vsaki tabeli atribut, ki se imenuje length, ki predstavlja dolžino tabele (števec elementov).

od.length (12)

stevci.length (6)

 

1
2
3
for(int i = 0; i < od.length; i++){
od[i] = BranjePodatkov.preberiDouble();
}

 

 



Če v for zanki uporabimo length pomeni, da če podaljšamo tabelo nam ni potrebno ničesar popravljati (zgoraj je določeno 12 elementov).

Vsi vodiči so na voljo BREZPLAČNO!
Pišite mi

Želite mnenje ali pomoč pri vašem projektu?

Pišite mi in bom pomagal, kakor bom v tistem trenutku lahko.