laborator5 - Java

download laborator5 - Java

of 6

Transcript of laborator5 - Java

  • 7/25/2019 laborator5 - Java

    1/6

    TEHNOLOGII JAVA

    PENTRU DEZVOLTAREA APLICAIILORLUCRARE DE LABORATOR 5

    Clase i obiecte n Java.Crearea obiectelor. Constructori. Variabile clas

    I. SCOPUL LUCRRII

    Lucrarea de faare rolul de a prezenta i familiariza studentul cu noiuni de bazale limbajului Java: clase i crearea obiectelor, rolul constructorilor, semnificaia iutilizarea variabilelor clas.

    La sfritul acestei lucrri, studentul va avea posibilitatea sscrie programe Java ncare sfoloseascnoile noiuni.

    II. NOIUNI TEORETICE

    1. Crearea obiectelor

    Vezi Curs 5, seciunea 4.1.Sconsiderm urmtorul exemplu:

    public class Vehicul

    {public String categoria;

    public String marca;public int nrRoti;public boolean aerCond;

    public boolean volan;

    public Vehicul(String nume,boolean aerCond) {categoria="automobil";

    marca=nume;

    nrRoti=4;this.aerCond=aerCond;volan=true;

    }

    public Vehicul(String nume) {

    categoria="bicicleta";marca=nume;nrRoti=2;

    aerCond=false;volan=false;

    }public void afisare() {

    System.out.println("Categorie vehicul "+contor+": "+categoria);

    1

  • 7/25/2019 laborator5 - Java

    2/6

    System.out.println("Denumire "+categoria+": "+marca);

    System.out.println("Nr roti: "+nrRoti);System.out.print("Aer conditionat: ");if(aerCond)

    System.out.println("da");else

    System.out.println("nu");System.out.print("Volan: ");if(volan)

    System.out.println("da");

    elseSystem.out.println("nu");

    System.out.print("\n");

    }

    public static void main(String args[ ]) {

    Vehicul b1,m1,m2;b1=new Vehicul("Pegas");

    m1=new Vehicul("Dacia",false);m2=new Vehicul("Cielo",true);b1.afisare();

    m1.afisare();m2.afisare();

    }}

    Observaii:

    Un fiier surs java care conine o clas public trebuie salvat cu numeleclasei respective la care se adaugextensia.java.ntr-un fiier sursjava poate exista cel mult o clasdeclaratpublic.Astfel programul de mai sus se va salva ntr-un fiier cu numele Vehicul.java.

    Altfel, la compilare se va semnala eroare.Clasa Vehiculconine doi constructori. Utilizarea mai multor constructori pentru

    aceeai clas se recomand atunci cnd se urmrete iniializarea obiectelor clasei nmoduri diferite. Astfel, n main( )se vor crea obiecte (vehicule) ce reprezint biciclete iautomobile, n funcie de utilizarea unui constructor sau al altuia.

    Unul din contextele n care utilizarea notaiei bazate pe this (thiseste referinactre obiectul curent) este necesar, este atunci cnd se definete un parametru sau o

    variabil local cu acelai nume ca o dat membru a clasei. Astfel, pentru a se facediferena ntre variabila localsau parametru i data membru a clasei, aceasta din urmeste accesat explicit prin referina this (vezi primul constructor al clasei Vehicul:t hi s. aer Cond=aer Cond).

    ntr-un constructor se poate referi ca prim instruciune un constructor al claseicurente. Este singura poziie din definiia unui constructor n care poate s apar oreferire la un alt constructor. Un astfel de apel apare sub forma:

    t hi s( l i st aDeAr gument e) ; / / const r uct or di n aceeasi cl asa

    unde listaDeArgumentereprezintlista valorilor parametrilor constructorului invocat.

    Exemplu:

    2

  • 7/25/2019 laborator5 - Java

    3/6

    public class Floare

    {public String denumire;public int nrPetale;

    public String zonaClima="-";

    public Floare(String denum,int nrP) {denumire=denum;nrPetale=nrP;

    }

    public Floare(String denum,int nrP,String clima) {this(denum,nrP);zonaClima=clima;

    }public void afisare() {

    System.out.println("Denumire: "+denumire);System.out.println("Numar petale : "+nrPetale);

    System.out.println("Zona climatica: "+zonaClima+"\n");}

    public static void main(String args[ ]) {

    Floare floare1=new Floare("narcisa",7);Floare floare2=new Floare("orhidee",30,"tropicala");

    floare1.afisare();floare2.afisare();

    }}

    Observaii:Variabilele membru se pot iniializa cnd sunt declarate. Se recomand ca

    iniializarea s se fac n constructor (n principal, pentru ca fiecare obiect al clasei spoatavea valori diferite pentru datele membru). n cazul n care o datmembru membrueste iniializatla declarare iar apoi i n constructor, atunci valoarea sa va fi cea pe careo primete n constructor. Dac n constructor nu mai primete nici o valoare, atuncivaloarea sa va rmne cea de la declarare.

    Astfel, obiectul floare1 va avea pentru data membru zonaClimavaloarea -deoarece n primul constructor (cel care este utilizat pentru crearea acestui obiect),aceasta datmembru nu primete nici o valoare. Obiectul floare2, n schimb, este creat

    cu ajutorul celui de-al doilea constructor, care iniialiazeazdata membru zonaClimalavaloarea celui de-al treilea parametru al sau care este tropicala.

    2. Variabile clas

    Vezi Curs 5, seciunea 4.2.Sconsiderm clasa Vehiculprezentatn seciunea anterioar. O vom modifica

    adugndu-i o datmembru staticnumitcontorcare numrobiectele clasei ce suntcreate n program. Aceastnouvariabil, fiind declaratstatic, este asociatclasei, cinu instanelor clasei. O variabilclaspoate fi accesatprin numele clasei, deci nu este

    nevoie de crearea unei instane a clasei doar pentru a o accesa. O variabilstaticestecreato singurdat, la ncrcarea clasei.

    3

  • 7/25/2019 laborator5 - Java

    4/6

    public class Vehicul{

    static int contor=0;

    public String categoria;public String marca;

    public int nrRoti;public boolean aerCond;

    public boolean volan;

    public Vehicul(String nume,boolean aerCond){categoria="automobil";

    marca=nume;nrRoti=4;

    this.aerCond=aerCond;volan=true;

    contor++;}

    public Vehicul(String nume){

    categoria="bicicleta";marca=nume;nrRoti=2;

    aerCond=false;volan=false;

    contor++;}

    public void afisare()

    { System.out.println("Categorie vehicul "+contor+": "+categoria);

    System.out.println("Denumire "+categoria+": "+marca);

    System.out.println("Nr roti: "+nrRoti);System.out.print("Aer conditionat: ");

    if(aerCond)System.out.println("da");

    elseSystem.out.println("nu");

    System.out.print("Volan: ");if(volan)

    System.out.println("da");else

    System.out.println("nu");System.out.print("\n");

    }

    public static void main(String args[ ]) {

    Vehicul b1,m1,m2;b1=new Vehicul("Pegas");

    b1.afisare();

    m1=new Vehicul("Dacia",false);

    m1.afisare();m2=new Vehicul("Cielo",true);

    4

  • 7/25/2019 laborator5 - Java

    5/6

    m2.afisare();

    System.out.println("\nExista "+Vehicul.contor+" obiecteale clasei Vehicul");

    }

    }

    Sconsiderm un alt exemplu:

    class Salariat{

    public static final double impozit=0.15;public String nume;

    public String functia;public int varsta;public double salariuBrut;

    public Salariat(String num,String func,int ani,double sal)

    { nume=num;

    functia=func;

    varsta=ani;salariuBrut=sal;

    }

    public double salariuNet(){

    return salariuBrut*(1-impozit);}public void afisare()

    {

    System.out.println("Nume salariat: "+nume);System.out.println("Functia: "+functia);System.out.println("Varsta: "+varsta);

    System.out.println("SalariuBrut: "+salariuBrut+" lei");System.out.println("SalariuNet: "+salariuNet()+" lei \n");

    }}

    public class UtilSal{public static void main(String args[ ]){Salariat s1=new Salariat("Popa Ion","contabil",36,7300000);Salariat s2=new Salariat("Rada Alina","secretara",28,6000000);System.out.println("Impozit: "+(int)(Salariat.impozit*100)+"% \n");s1.afisare();s2.afisare();

    }}

    Observaii:

    Am utilizat n clasa Salariato datmembru impozitcare este declarati statici final, ceea ce nseamnceste considerato constantde ctre compilator (valoarea sa

    nu poate fi modificat).Programul de mai sus trebuie salvat ntr-un fiier surscu numele UtilSal.java.

    5

  • 7/25/2019 laborator5 - 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 clasa Salariat astfel nct salariul fiecrui angajat spoatfi exprimat in dolari. De asemenea, programul s afieze i cursul de schimb al dolaruluiutilizat n calcule.

    3. Scriei clasa Student. Fiecare student are un nume, an, grup, i dounote obinutela o anumitmaterie - una pe semestrul 1 iar cealaltpe semestrul 2. Clasa conineun constructor ce iniializeazdatele membru ale clasei la valorile parametrilor si,o funcie care calculeazi returneazmedia celor dounote, i o funcie de afiarece afieazvalorile datelor membru i valoarea mediei. Scriei un program completn care sutilizai obiecte ale clasei Salariat.

    6