laborator6 -Java
Transcript of laborator6 -Java
-
7/25/2019 laborator6 -Java
1/6
TEHNOLOGII JAVA
PENTRU DEZVOLTAREA APLICAIILORLUCRARE DE LABORATOR 6
Clase i obiecte n Java.Metode clas(statice). Motenirea.
I. SCOPUL LUCRRII
Lucrarea de faare rolul de a prezenta i familiariza studentul cu noiuni de bazale limbajului Java: metodele clas, subclasele i motenirea.
La sfritul acestei lucrri, studentul va avea posibilitatea sscrie programe Java n
care sfoloseascnoile noiuni.
II. NOIUNI TEORETICE
1. Metodele clas(statice)
Vezi Curs 6, seciunea 4.3.Sconsiderm urmtorul exemplu:
public class Film{
static int pretBilet=30000;static String cinematograf="Patria";
public String nume;public int durata; // in minute
public boolean luatOscar;
public Film(String num,int nrMin,boolean oscar){nume=num;
durata=nrMin;luatOscar=oscar;
}
static int getPretBilet(){return pretBilet;
}
static void printCinema(Film f){
System.out.println("Filmul "+f.nume+" este difuzat la
cinematograful "+cinematograf);}
1
-
7/25/2019 laborator6 -Java
2/6
public void afisare()
{System.out.println("Nume: "+nume);System.out.println("Durata (in minute): "+durata);
if(luatOscar)System.out.println("Filmul a primit premiul Oscar\n");
elseSystem.out.println("Filmul nu a primit premiul
Oscar\n");
}
public static void main(String args[ ]) {System.out.println("Pretul unui bilet este: "
+Film.getPretBilet()+" lei");Film f1=new Film("Titanic",180,true);
f1.afisare();Film.printCinema(f1);
}}
Observaii:O metod staticeste consideratcaparine clasei i nu instanierilor clasei. O
metod static poate s refere numai variabile sau metode statice (pentru c numaiacestea exist fr a se fi instaniat un obiect din clasa respectiv), dar poate s fieapelatdin orice metoda clasei.
Metoda main( ) care reprezint punctul de plecare pentru orice program Java,este declaratca fiind statici deci poate sfie referitfrinstanierea unui obiect.
Limbajul Java permite declararea unei secvene de cod ca fiind staticn modulurmtor:static {
secventa de cod
}
Astfel de secvene se pot declara numai n afara metodelor. Corespunztor, nmomentul n care clasa respectivajunge sfie ncrcat(pentru ca fost referit) se vorexecuta toate secvenele de cod declarate n acest mod la nivelul clasei. Sconsidermurmtoarea aplicaie Java.
class Floare
{
int nrPetale;static
{
System.out.println("floarea");}public Floare(int nrPetale)
{this.nrPetale=nrPetale;
}public void afiseaza()
{System.out.println(nrPetale);
}}
2
-
7/25/2019 laborator6 -Java
3/6
public class Exemplu
{static{
Floare f=new Floare(10);f.afiseaza();
}public static void main(String args[]){
}
}
Programul afieaz:
Floarea
10
dei n metoda main( ) nu sunt prevzute prelucrri, s-au executat secvenele de cod
indicate cu atributul static din ambele clase definite.
Sconsiderm un alt exemplu:
public class Test{
int x;
static int y=0;
static void modificaY() {
y+=10;
}void modificaY(int y) {
this.y=y;
}void modificaX(int x) {
this.x=x;
}void func() {
Test t=new Test();y=1;
t.y=1;Test.y=1;
Test.modificaY();t.modificaY(2);System.out.println(y);
x=1;t.modificaX(2);
System.out.println(x);}
public static void main(String args[]) {
Test t=new Test();t.func();
}
}
3
-
7/25/2019 laborator6 -Java
4/6
n metoda func( ) a clasei Testa fost creat un obiect care reprezinto instanierea clasei. Se observ c n timp ce pentru variabila static y exist 5 variante pentruatribuirea unei valori (toate referindu-se la variabila globaly), pentru variabila xceledoumodificri ale valorii lui xse referla variabile diferite n primul caz (x=1) estevorba despre data membru xa obiectului pentru care se executmetoda, iar n cel de-al
doilea caz (t.modifica(x)) este vorba despre data membru xa obiectului de tip Testcreatn metoda func().
2. Motenirea
Vezi Curs 6, seciunea 4.5.Sconsiderm urmtorul exemplu (programul Vehicule.java):
class Vehicul
{ public String denumire;public int nrRoti;
public Vehicul(String denumire,int nrRoti){
this.denumire=denumire;this.nrRoti=nrRoti;
}
public void afisareVehicul(){
System.out.println("\n");
System.out.println("Denumire: "+denumire);System.out.println("Nr roti: "+nrRoti);
}
}class Bicicleta extends Vehicul
{public boolean combustibil;
public Bicicleta(String denumire,int nrRoti){
super(denumire,nrRoti);combustibil=false;
}public void afisareBicicleta()
{afisareVehicul();System.out.println("Bicicleta nu consuma combustibil");
}}
class Motocicleta extends Bicicleta{
public Motocicleta(String denumire,int nrRoti){
super(denumire,nrRoti);
combustibil=true;}
4
-
7/25/2019 laborator6 -Java
5/6
public void afisareMotocicleta()
{afisareVehicul();System.out.println("Motocicleta consuma combustibil");
}}
class Automobil extends Vehicul{
public String combustibil;
public boolean volan;
public Automobil(String denumire,int nrRoti,String combustibil)
{super(denumire,nrRoti);
this.combustibil=combustibil;volan=true;
}public void afisareAutomobil()
{
afisareVehicul();System.out.println("Combustibil: "+combustibil);
System.out.println("Volan: da");}
}
public class Vehicule
{public static void main(String args[ ])
{
Vehicul v;Bicicleta b=new Bicicleta("Pegas",2);
b.afisareBicicleta();Automobil a=new Automobil("BMW",4,"benzina");a.afisareAutomobil();
v=a;
v.afisareVehicul();
/ / v. af i sar eAut omobi l ( ) ; er oar eMotocicleta m=new Motocicleta("Honda",2);
m.afisareMotocicleta();b=m; / / cor ect
b.afisareBicicleta();v=m; / / cor ect
}
}
5
-
7/25/2019 laborator6 -Java
6/6
III. MODUL DE LUCRU
1. Se editeazcodul sursal programului Java folosind un editor de text disponibil(deex., se poate utiliza Notepad).
2.
Se salveaz fiierul cu extensia .java. Fiierul trebuie salvat la urmtoarea locaie:c:\JBulider7\jdk1.3.1\bin
3. Compilarea mini-aplicaiei Java se va face din linia de comand. Se poate procedaastfel. Se deschide o fereastrMS-Dos: Start ->Run, se tiprete commandn csuade text i se apasbutonul OK. Printr-o schimbare de directoare i subdirectoare setrece la locaia: c:\JBulider7\jdk1.3.1\bin. Sau, se lanseazWindowsCommander.Se trece la locaia c:\JBulider7\jdk1.3.1\bin. Se deschide o fereastr MS-Dos:Commander ->Run Dos.
4. Pentru compilare, se tiprete la prompterjavac nume_fiier_surs.javai se apasEnter. De ex., dacfiierul se numete Test.java, se va scriejavac Test.java. n cazul
n care programul conine erori acestea vor fi semnalate i afiate n fereastraMS-Dos, dup care va apare iar prompter-ul. Dac programul nu conine erori icompilarea se face cu succes, atunci va apare numai prompter-ul.
5. Pentru rularea aplicaiei Java, se lanseazinterpretorul Java. Se tiprete la prompterurmtoarea comandjava nume_clas_care_conine_main i se apas Enter. Deex., dacclasa din program care conine metodamain( )se numete Test, se va scrie
java Test.
IV. TEM
1.
Se vor parcurge toate exemplele prezentate n platforma de laborator testndu-sepractic.
2. Modificai clasaFilmastfel.- adugai clasei o metodstaticcare sreturneze valoarea datei membru durata.- ncercai s apelai metoda afisare( ) n cadrul metodei printCinema( ) i invers,apelai metoda printCinema( )n cadrul metodei afisare( ).Explicai la fiecare caz n parte rezultatele obinute.3. Creai urmtoarea ierarhie de clase:
Discheta Hard-disk
Disc
Un disc are un nume i o capacitate. O discheta are n plus o stare (1 daceste write-protected, 0 altfel). Un hard-disk are n plus un controler (de tip sir de caractere;exemplu: IDE, SCSI). Superclasa are un constructor (cu parametri) i o funcie deafiare (afieazvalorile datelor membru). Clasa discheta are un constructor, o funcie deafiare i o funcie care seteaz (modific) starea dischetei. Clasa hard-disk are unconstructor i o funcie de afiare. Scriei un program Java care lucreazcu obiecte detipul celor 3 clase.
6