0% au considerat acest document util (0 voturi)
18 vizualizări

Laborator6 - Java

laborator6 -Java

Încărcat de

bredtm
Drepturi de autor
© © All Rights Reserved
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
18 vizualizări

Laborator6 - Java

laborator6 -Java

Încărcat de

bredtm
Drepturi de autor
© © All Rights Reserved
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 6

TEHNOLOGII JAVA

PENTRU DEZVOLTAREA APLICAIILOR


LUCRARE DE LABORATOR 6

Clase i obiecte n Java.


Metode clas (statice). Motenirea.
I.

SCOPUL LUCRRII

Lucrarea de fa are rolul de a prezenta i familiariza studentul cu noiuni de baz


ale limbajului Java: metodele clas, subclasele i motenirea.
La sfritul acestei lucrri, studentul va avea posibilitatea s scrie programe Java n
care s foloseasc noile noiuni.

II.

NOIUNI TEORETICE

1. Metodele clas (statice)


Vezi Curs 6, seciunea 4.3.

S considerm urmtorul exemplu:


public class
{
static
static
public
public
public

Film
int pretBilet=30000;
String cinematograf="Patria";
String nume;
int durata; // in minute
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);
}

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");
else
System.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 static este considerat c aparine clasei i nu instanierilor clasei. O
metod static poate s refere numai variabile sau metode statice (pentru c numai
acestea exist fr a se fi instaniat un obiect din clasa respectiv), dar poate s fie
apelat din orice metod a clasei.
Metoda main( ) care reprezint punctul de plecare pentru orice program Java,
este declarat ca fiind static i deci poate s fie referit fr instanierea unui obiect.
Limbajul Java permite declararea unei secvene de cod ca fiind static n modul
urmtor:
static {
secventa de cod
}

Astfel de secvene se pot declara numai n afara metodelor. Corespunztor, n


momentul n care clasa respectiv ajunge s fie ncrcat (pentru c a fost referit) se vor
executa toate secvenele de cod declarate n acest mod la nivelul clasei. S considerm
urmtoarea 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);
}
}

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.
S considerm 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();
}
}

n metoda func( ) a clasei Test a fost creat un obiect care reprezint o instaniere
a clasei. Se observ c n timp ce pentru variabila static y exist 5 variante pentru
atribuirea unei valori (toate referindu-se la variabila global y), pentru variabila x cele
dou modificri ale valorii lui x se refer la variabile diferite n primul caz (x=1) este
vorba despre data membru x a obiectului pentru care se execut metoda, iar n cel de-al
doilea caz (t.modifica(x)) este vorba despre data membru x a obiectului de tip Test creat
n metoda func().

2. Motenirea
Vezi Curs 6, seciunea 4.5.

S considerm 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;
}

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.afisareAutomobil(); eroare
Motocicleta m=new Motocicleta("Honda",2);
m.afisareMotocicleta();
b=m; //corect
b.afisareBicicleta();
v=m; //corect
}
}

III.

MODUL DE LUCRU

1. Se editeaz codul surs al programului Java folosind un editor de text disponibil(de


ex., 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 proceda
astfel. Se deschide o fereastr MS-Dos: Start ->Run, se tiprete command n csua
de text i se apas butonul OK. Printr-o schimbare de directoare i subdirectoare se
trece la locaia: c:\JBulider7\jdk1.3.1\bin. Sau, se lanseaz WindowsCommander.
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 prompter javac nume_fiier_surs.java i se apas
Enter. De ex., dac fiierul se numete Test.java, se va scrie javac Test.java. n cazul
n care programul conine erori acestea vor fi semnalate i afiate n fereastra
MS-Dos, dup care va apare iar prompter-ul. Dac programul nu conine erori i
compilarea se face cu succes, atunci va apare numai prompter-ul.
5. Pentru rularea aplicaiei Java, se lanseaz interpretorul Java. Se tiprete la prompter
urmtoarea comand java nume_clas_care_conine_main i se apas Enter. De
ex., dac clasa din program care conine metoda main( ) se numete Test, se va scrie
java Test.

IV.

TEM

1. Se vor parcurge toate exemplele prezentate n platforma de laborator testndu-se


practic.
2. Modificai clasa Film astfel.
- adugai clasei o metod static care s returneze 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:
Disc
Discheta

Hard-disk

Un disc are un nume i o capacitate. O discheta are n plus o stare (1 dac este writeprotected, 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 de
afiare (afieaz valorile datelor membru). Clasa discheta are un constructor, o funcie de
afiare i o funcie care seteaz (modific) starea dischetei. Clasa hard-disk are un
constructor i o funcie de afiare. Scriei un program Java care lucreaz cu obiecte de
tipul celor 3 clase.

S-ar putea să vă placă și