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

Java

Documentul descrie implementarea unei clase Transport în Java cu câmpuri precum numărul de pasageri, greutatea fiecărui pasager, tipul transportului și vârsta. Sunt implementați constructorii, metodele de acces și modificare a datelor, metode pentru introducerea datelor de la tastatură și random, metode pentru afișarea și compararea obiectelor clasei Transport.

Încărcat de

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

Java

Documentul descrie implementarea unei clase Transport în Java cu câmpuri precum numărul de pasageri, greutatea fiecărui pasager, tipul transportului și vârsta. Sunt implementați constructorii, metodele de acces și modificare a datelor, metode pentru introducerea datelor de la tastatură și random, metode pentru afișarea și compararea obiectelor clasei Transport.

Încărcat de

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

Ministerul Educaţiei al Republicii Moldova

Universitatea de Stat din Moldova


Facultatea de Matematică şi Informatică
Departamentul “Informatica »

Dare de seama la „Java”

Lucrare de laborator № 1

Tema : „Realizarea claselor în Java”

Varianta: № 09

Clasa: „Transport"

Efectuat: studentul (-a) grupei I1801

numele, prenumele: Madan Victor

Verificat: lect.univers., magistru in inform.

Epifanova Irina .

- Chişinău 2020 -
Formularea priblemei:

De creat clasa “Transport” cu câteva câmpuri.

Câmpurile obligatorii:
- un cîmp de tip intreg (int), pentru păstrarea numărul de pasageri ai transportului;
- un vector dinamic, în care se păstrează informaţia despre greutatea fiecatui pasager;
- un câmp de tip intreg, static, se păstrează numărul de obiecte create ale clasei;

Câmpuri opţionale: tipul (avion, autocar etc), marca, viteza, virsta =perioda de funţionare a transportului.

De creat trei tipuri de constructori pentru această clasă (cu alocare dinamică a memoriei):
- constructor standard (fără parametri)
- câteva constructori cu parametri
- constructor de copiere

 De creat metodele pentru acces la toate câmpurile clasei şi de modificare a lor (metodele set() si get()).
 De creat metoda pentru a afişa la ecran toată informaţia despre Transport, adică toate câmpurile din
această clasă.
 De descries metoda, care completeaza toate campurile obiectului cu valori citite de la tastatura.
 De descries metoda, care completeaza toate campurile obiectului cu valori aleatoare.
 De creat metoda, care calculează greutate totală a pasagerilor unui Transport.
 De creat metoda, ce compară două Transporturi (două instanţe (obiecte) a clasei : obiectului curent cu
obiectul primit ca parametru) în baza numărului de pasageri.
 De creat metoda statică, ce compară doi transporturi (două instanţe (obiecte) a clasei – ambele obiecte
primim ca parametrii) după greutatea sumară a tuturor pasagerilor.

În metoda main() de creat cîteva Transporturi, utilizând toţi constructorii declaraţi. După creerea fiecărei
instantze a clasei “Transport”, de afişat la ecran câmpurile cu ajutorul metodei respective. De creat un vector
dinamic din obiectele clasei şi de initializat vectorul creat, folosind 3 tipuri de constructor. De afişat la ecran
(in ciclu) informatia a tuturor transporturi în vector. De comparat câteva perechi de Transporturi în baza
numărului de pasageri şi câteva perechi - în baza greutătii sumare a pasagerilor cu ajutorul metodei respective.
Rezultatele comparării de afişat la ecran. De calculat greutatea medie a pasagerilor unui Transport. Rezultatele
de afişat la ecran.
De afişat la ecran numarul general de Transporturi creaţi, folosind câmpul static clasei.

Pentru nota 10. Adaugator pentru tot ce este descris mai sus:
- un constructor care primeşte ca parametru denumirea fişierului textual (String), de unde se incarcă valori
pentru câmpurile obiectului creat.
- o funcţie care înscrie toate cîmpurile clasei în fişier, numele fisierului se indică ca parametru la intrare.
- În funcţia main pentru toate obiectele create de salvat datele în fişiere, denumirile cărora se preiau de la
numele obiectelor.

După ce totul a fost terminat fără greşele — de spus “URRRRRAAAAAA !!!” şi de prezentat primul laborator
profesorului. :)

Exemplul lucrării practice (listingul programului)


import java.io.*;
import java.util.*;
import java.util.Random;
import java.util.Scanner;

class transport
{
String tipul; //tipul transportului
int pasageri; //nr de pasageri
int grasime[ ]; //vector dinamic ce reprezinta KG-ul fiecarui pasager
static int numar; //parametru static ce reprezinta numarul de obiecte create
int varsta; //varsta transportului

//////////////////constructori////////
transport() //constructor implicit (fara parametri)
{ tipul="Megane";
pasageri=3;
grasime=new int[pasageri]; //aloc memorie pentru vectorul dinamic
for(int i=0;i<pasageri;i++){ //cu ajutorul ciclului for initializez datele vectorului
grasime[i]=280;}
varsta=5;
numar++; //incrementez numar,cand apelez constroctorii>se mareste numarul obiectelor create
}

transport(int varsta,int pasager) //constructor cu parametri


{tipul="Toyota";
if(pasager>0) //verific daca parametrul transmis corespunde regulii
this.pasageri=pasager; //cu ajutorul referintei this atribui parametrului obiectului curent valoarea noua
grasime=new int[pasager];
for(int i=0;i<pasager;i++)
grasime[i]=180;
this.varsta=varsta; //atribui parametrului varsta a obiectului corent valoare noua
numar++;
}

transport(transport Doi) //constructor de copiere


{tipul=Doi.tipul; //copii din obiectul transmis ca parametru toate datele in parametrii obiectului curent
pasageri=Doi.pasageri;
grasime=new int[pasageri];
for(int i=0;i<pasageri;i++)
grasime[i]=Doi.grasime[i];
numar++;
varsta=Doi.varsta;
}
///////Metodele de acces si schimb a datelor campurilor clasei/////

public void setPasageri(int n) //metoda de schimbare a numarului pasagerilor>se schimba si marimea vectoruui dinamic KG
{if(n>0 && n!=pasageri) {int tmp[]=new int[pasageri]; //pentru a salva datele curente din vector dinamic se creeaza o copie tmp
for(int i=0;i<pasageri;i++)
tmp[i]=grasime[i]; //se copie datele
grasime=new int[pasageri];
int min=(pasageri<n? pasageri:n); //se verifica daca se doreste micsorarea vectorului sau marirea
for(int i=0;i<min;i++)
grasime[i]=tmp[i]; //se transmit datele din tmp in KG
pasageri=n; //se schimba numarul pasagerilor}}
}}

public int getPasageri() //acces parametrul pasageri


{return pasageri;}

public void setGrasime(int id,int grasime_nou) //metoda de schimbare a KG a unui pasager anumit conform id
{ if(id>=1 && id<=pasageri && grasime_nou>=0 && grasime_nou<=200) //se verifica validitatea id si KG_nou transmise ca parametri metodei
grasime[id]=grasime_nou;} //se face schimbul

public int getGrasime(int id) //metoda pentru acces la KG-ul unui anumit pasager conform id
{if(id>=1 && id<=pasageri) //verific validitatea parametrului transmis id
return grasime[id]; //daca e valid returnez valoarea KG-ului cu parametrul dat
return -1;} //daca nu trasnmit -1 (eroare)

public void setTipul(String tipulnou) //metoda de schimbare a numelui


{ tipul=tipulnou;}

public String getTipul() //obtinere a numelui


{return tipul;}

///////////////////////////////////////Metodele pentru introducere de la tastatura////////////////////////

static String inString()//introducere de la tastatura a unui string


{BufferedReader box=new BufferedReader(new InputStreamReader(System.in));
String str="";
try {str=box.readLine();}
catch(IOException e){}
//Integer t=Integer.valueOf(str);
//int res=t.intValue();
return str;
}

static int inInt() //introducere de la tastatura a unui int (convertire din string in int)
{return (Integer.valueOf(inString()).intValue());}

static float inFloat() //introducere de la tastatura float (convertire din string in float)
{return(Float.valueOf(inString()).floatValue());
}

void inputAll() //folosesc metodele scrise precendent pentru a obtine datele unui obiect al clasei transport introdus de al tastatura
{ System.out.println("\n");
System.out.println("Introdu tipul ");
tipul=inString();
do{System.out.println("Introdu nr de pasageri ");
pasageri=inInt();}
while(pasageri<0); //va fi aratat mesajul pana cand utilizatorul nu va introduce un nr mai mare decat 0
grasime=new int[pasageri];
for(int i=0;i<pasageri;i++)
{do{System.out.println("Introduceti KG pasagerului "+i);
grasime[i]=inInt();}
while (grasime[i]<0 || grasime[i]>200); //afisez mesajul pana cand nu vor fi introduse datele din intervalul (0,200)
}
do{System.out.println("Introduceti perioada de functionare a transportului \n");
varsta=inInt();}
while(varsta<0); //metoda va primi doar valori a varstei mai mari ca 0

}
/////////////////Metoda dea fisare a datelor campurilor obiectului calsei balaur/////////
void afisare()
{System.out.println("\n");
System.out.println("tipul: "+tipul);
System.out.println("nr de pasageri:"+pasageri);
for(int i=0;i<pasageri;i++){
System.out.println("KG pasagerului "+i+" este:"+grasime[i]);}
System.out.println("perioada de funtionare a transportului:"+varsta);
System.out.println("\n");}

//////////Metoda de introducere randomizata a datelor campurilor////////

void randomizare() //metoda de introduce random a datelor


{ String tipuri[]={"Porsche","Mazda","BMW","Mercedes","Toyota"}; //declar un string cu nume din care metoda va alege unul random conform indicelui
int id=(new Random().nextInt(tipuri.length)); //alege un nr random care va fi indicele dupa care va fi ales numele
tipul=tipuri[id]; //numelui ii atribui un nume random din lista de mai sus
do{pasageri=(new Random()).nextInt(10);} while (pasageri==0); //astept un nr pentru pasageri !=0
grasime=new int[pasageri]; //aloc memorie pentru vectorul dinamic
for(int i=0;i<pasageri;i++) //cu ajutorul ciclului dau valori aleatorii vectorului de la 0 la 120
grasime[i]=new Random().nextInt(120);
do{
int varsta=new Random().nextInt(500);}
while (varsta==0); } // valoare aleatoare a varstei inafara de 0

//////Metoda de comparare a greutatii a doua transporturi cu pasageri//////


public int kilograme()
{ int sum=0;
for(int i=0;i<pasageri;i++)
sum+=grasime[i];
return sum;
}

static void Kilograme(transport A,transport B)


{ System.out.println("\n");
System.out.println("Se compara greutatea transportului cu pasageri "+A.tipul+" cu cel "+B.tipul);

if((A.kilograme()/A.pasageri)>(B.kilograme()/B.pasageri)) System.out.println("Este mai greu "+A.pasageri); //compar media aritmetica a sumei KG-
urilor/nr pasagerilor
else if((A.kilograme()/A.pasageri)<(B.kilograme()/B.pasageri))System.out.println("Este mai greu "+B.pasageri);
else System.out.println("Ambele transporturi sunt la fel ");
}
//////////Metoda de cintarire a 2 transporuri,in urma acreia pierd cativa pasageri/////

static void Bodybuilding(transport Prim,transport Secund) //metoda de cintarire


{ System.out.println("\n");
System.out.println("Greutatea pasagerilor din "+Prim.tipul+" si "+Secund.tipul);
int n=Prim.pasageri; int i=0;
do{int x=new Random().nextInt(120); //compar KG unui transport din doi cu un numar random
if(x>Prim.grasime[i]) Prim.pasageri--; //daca KG-ul transportului e mai mare ca nr random
else Secund.pasageri--; //se scade nr pasagerilor celuilat transport,daca nu,se scade nr.pasagerilor transportului comparat
i++;
} while (Prim.pasageri!=-1 && i>Prim.pasageri);
if(Prim.pasageri>Secund.pasageri) System.out.println(" Luzerrr "+Secund.tipul);else if(Secund.pasageri>Prim.pasageri) System.out.println(" Luzerrr
"+Prim.tipul);
else System.out.println(" Winners \n");}

////////////////Metoda principala main/////

public static void main(String a[])


{int n=0;int m=0;int i;
transport A=new transport(); //creez un obiect nou cu constructorul implicit
A.inputAll(); //introduc datele de la tastatura prin metoda inputAll
A.afisare(); //afisare date prin apelarea metodei afisare

transport B=new transport(2,4); //creez alt obiect cu constructor cu parametri caruia ii transmit parametrii
B.setGrasime(6,120); //schimb KG la pasagerului cu id-ul 6
B.setPasageri(3); //scgimb nr de pasageri
B.setTipul("Opel"); //schimb tipul transportului
B.afisare(); //afisare obiect B

transport C=new transport(B); //Creez obiect C prin copierea obiectului B


C.inputAll(); //introduc datele de la tasattura pentru obiectul C
C.afisare(); //afisez datele obiectului C

System.out.println("Introduceti numarul de transporturi care vor fi creati in v.d");


Scanner in=new Scanner(System.in); //se citeste de la tastatura numarul
int num=in.nextInt(); //se introduce in variabila num

System.out.println(" Transporturile din vector: ");


if(num>1){ //daca num >1 se initializeaza vectorul dinamic cu obiecte
transport metale[]=new transport[num]; //aloc memorie vectorului,obiectele fiind de tip transport,si nr lor e num
for(i=0;i<num-2;i+=3){//initializez obiectele in trei etape cu 3 constructori diferiti
metale[i]=new transport(); //prima etapa initializez obiectele cu constructor implicit
metale[i].afisare(); //afisez obiectele initializate anterior
if((i+1)<=num){ //in a doua etapa folosesc constructor cu 2 parametri
metale[i+1]=new transport((int)(i+100),(int)(num/((i+1)*2))); //paarmetrii sunt dependenti de variabial contor i
metale[i+1].afisare();}
if((i+2)<=num){
metale[i+2]=new transport(A); //a treia etaapa folosesc contructor de copiere,caruia ii transmit obiectul A creat anterior
metale[i+2].afisare();}
}
int max=0;
for( i=0;i<num;i++)
{ int vit;
vit=metale[i].kilograme();
if(vit>max)max=vit;
}
System.out.println("Cel mai greu transport cu pasageri:"+max);

transport.Bodybuilding(metale[0],metale[1]); //apelez metoda statica cu primele doua obiecte al vectorului dinamic


System.out.println("Datele dupa batalie: ");
metale[0].afisare(); //afisez datelor celor 2 obiecte dupa lupta
metale[1].afisare();
}

else System.out.println("Introduceti un numar valid de transporturi "); //daca numarul introdus e mai mic ca 2 cer un alt numar valid

transport.Kilograme(A,B); //compar KG a doua transporturi A si B prin metoda statica


transport.Bodybuilding(A,C); //intrunez in comparare balaurii A si C
System.out.println("Datele dupa batalie :"); //Afisez datele transporturilor A si C dupa comparare
A.afisare();
C.afisare();

System.out.println("Randomizare: ");
B.randomizare(); //introduc alte random in obiectul B cu metoda randomizare
B.afisare(); //afisez datele lui B introduse random
System.out.println("\n Nr de transporturi create: "+transport.numar); //afisez nr total de transporturi creati
}}

Rezultatele rulării programului (testingul programului)

E:\jdk\bin>javac tpa.java KG pasagerului 0 este:180 KG pasagerului 1 este:56


KG pasagerului 1 este:180 KG pasagerului 2 este:89
E:\jdk\bin>java transport KG pasagerului 2 este:180 perioada de funtionare a transportului:5
perioada de funtionare a transportului:2
Introduceti numarul de transporturi care
Introdu tipul Introdu tipul vor fi creati in v.d
RangeRover Dacia 6
Introdu nr de pasageri Introdu nr de pasageri
4 3 Transporturile din vector:
Introduceti KG pasagerului 0 Introduceti KG pasagerului 0
67 76
Introduceti KG pasagerului 1 Introduceti KG pasagerului 1 tipul: Megane
54 56 nr de pasageri:3
Introduceti KG pasagerului 2 Introduceti KG pasagerului 2 KG pasagerului 0 este:280
56 89 KG pasagerului 1 este:280
Introduceti KG pasagerului 3 Introduceti perioada de functionare a KG pasagerului 2 este:280
80 transportului perioada de funtionare a transportului:5
Introduceti perioada de functionare a
transportului 5

2
tipul: Toyota
tipul: Dacia nr de pasageri:3
nr de pasageri:3 KG pasagerului 0 este:180
tipul: Opel KG pasagerului 0 este:76 KG pasagerului 1 este:180
nr de pasageri:3 KG pasagerului 2 este:180
perioada de funtionare a transportului:100 perioada de funtionare a transportului:2 Luzerrr Dacia
Datele dupa batalie :

Cel mai greu transport cu pasageri:840 tipul: RangeRover


tipul: RangeRover nr de pasageri:4
nr de pasageri:4 KG pasagerului 0 este:67
KG pasagerului 0 este:67 Greutatea pasagerilor din Megane si Toyota KG pasagerului 1 este:54
KG pasagerului 1 este:54 Luzerrr Toyota KG pasagerului 2 este:56
KG pasagerului 2 este:56 Datele dupa batalie: KG pasagerului 3 este:80
KG pasagerului 3 este:80 perioada de funtionare a transportului:2
perioada de funtionare a transportului:2
tipul: Megane
nr de pasageri:3
KG pasagerului 0 este:280
KG pasagerului 1 este:280 tipul: Dacia
tipul: Megane KG pasagerului 2 este:280 nr de pasageri:2
nr de pasageri:3 perioada de funtionare a transportului:5 KG pasagerului 0 este:76
KG pasagerului 0 este:280 KG pasagerului 1 este:56
KG pasagerului 1 este:280 perioada de funtionare a transportului:5
KG pasagerului 2 este:280
perioada de funtionare a transportului:5
tipul: Toyota Randomizare:
nr de pasageri:2
KG pasagerului 0 este:180
KG pasagerului 1 este:180 tipul: Toyota
tipul: Toyota perioada de funtionare a transportului:100 nr de pasageri:5
nr de pasageri:0 KG pasagerului 0 este:32
perioada de funtionare a transportului:103 KG pasagerului 1 este:27
KG pasagerului 2 este:93
KG pasagerului 3 este:79
Se compara greutatea transportului cu KG pasagerului 4 este:93
pasageri RangeRover cu cel Opel perioada de funtionare a transportului:2
tipul: RangeRover Este mai greu 3
nr de pasageri:4
KG pasagerului 0 este:67
KG pasagerului 1 este:54 Greutatea pasagerilor din RangeRover si Nr de transporturi create: 9
KG pasagerului 2 este:56 Dacia
KG pasagerului 3 este:80 E:\jdk\bin>
Concluzii.

La realizarea acestui laborator am utilizat Intellij IDEA, deoarecere acest program imi permite de a vedea
greselile ce leam comis si variantele de a le corecta.
Ce am invatat: valorile statice se creaza doar o singura data.
Plusuri: Laboratorul nr 1 este realizata pentru o nota trecatoare.
Minusuri: As fi droit ca codul sa mie mai scurt si sa fi facut lucrul cu fisierul txt.

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