laborator6 -Java

download laborator6 -Java

of 6

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