Sunteți pe pagina 1din 7

Ministerul Educației, Culturii și Cercetării

Centrul de Excelență în Informatică și Tehnologii Informaționale

Studiu Individual №2
Tema:Produse program cu utilizarea ierarhiilor de clase
Varianta 23

A elaborat: Șulghin Alexandr


A evaluat: Musteață Victoria

Chișinău 2018
Cuprins
Abilitățile evaluate: ............................................................................................................................................ 3
Cerințe față de lucrare:....................................................................................................................................... 3
Cerințe față de problem: .................................................................................................................................... 3
Problema:............................................................................................................................................................ 4
Listing-ul programului: ....................................................................................................................................... 4
Tabel de valori: ................................................................................................................................................... 6
Teste:................................................................................................................................................................... 6
Concluzie: ............................................................................................................................................................ 7
Bibliografie:......................................................................................................................................................... 7
Criterii de evaluare: ............................................................................................................................................ 7

2
Abilitățile evaluate:
Utilizarea posibilităților POO:clase,moștenire,polimorfism,încapsulare.

Cerințe față de lucrare:


 Lucrarea de studiul individual se va prezenta imprimată și în format electronic pînă la data
limită stabilită.
 Lucrarea de studio individual va include tematica, codul sursă și testarea programelor
elaborate.
 Să se trimită sursa proiectului și raportul la adresa opreavictoria86@gmail.com însoțită de
numele elevului, grupa și numărul studiului individual.
 Vor fi admiși la examen doar acei elevi care au prezentat toate lucrările de studio individual.

Cerințe față de problem:


 Folosiți principiile POO la elaborarea programului.
 Fiecare clasă trebuie să conțină o denumire sugestivă, date și metode corespunzătoare.
 Fiecare clasă trebuie să conțină constructori supraîncărcați, metoda toString() supradefinită.
 Moștenirea să se aplice doar în cazul în care aceasta este necesară.
 Folosiți relațiile de asociere și agregare între obiecte acolo unde este cazul.
 Programul să conțină un meniu minimalizat.

3
Problema:
Cricova. Compuneți o ierarhie de clase ce descriu tipuri de vinuri. Instanțiați câteva obiecte de vinuri.
Deschidedeți o companie de producer a vinului. Calculați prețul vinurilor din companie. Sortați vinurile în
funcție de indicele de tărie.Găsiți vinurile ce au cantitatea cuprinsă într-un diapason citit de la tastatură.

Listing-ul programului:
package Alexandr373;
import java.util.*;//biblioteca pentru scaner
class Cricova{//clasa principala Cricova
public String tip;//tipul vinului
public double pret;//pretul vinului
public double indice;//indicele de tarie a vinului
public double cantitate;//cantitatea vinului
public Cricova(String tip,double pret,//constructorul clasei Cricova
double indice, double cantitate) {
this.tip=tip;
this.pret=pret;
this.indice=indice;
this.cantitate=cantitate;
}
public double calcpret() {//metoda pentru calcularea pretului
return(pret*cantitate);//formula de calculare a pretului
}

public class E21 {//clasa de baza

public static void main(String[] args)throws Exception {//metoda main

Cricova v1= new Cricova("Cuvee Prestige Brut ",138,13,50);//instantierea obiectelor


Cricova v2= new Cricova("Illustro ",345,12.5,90);
Cricova v3= new Cricova("Vartely Chateau",72,16,150);
Cricova v4= new Cricova("Traminer",58,12,200);
Cricova v5= new Cricova("Negru de Purcari Vintage",482,13,20);
double tp;//declararea variabilei pentru calculul pretului total
tp=v1.calcpret()+v2.calcpret()+v3.calcpret()+v4.calcpret()+v5.calcpret();//calculul pretului total
System.out.println("Pretul vinurilor este: "+tp+" lei");//afisarea pretului total
ArrayList<Cricova> vin = new ArrayList<Cricova>();//crearea unui array list
vin.add(v1);//salvarea obiectelor in arraylist
vin.add(v2);
vin.add(v3);
vin.add(v4);
vin.add(v5);
System.out.print("Vinurile cu indicele de tarie mai mic de 13% sunt : ");
if(v1.indice<13&&v1.indice>=12) {//conditiile pentru a sorta vinurile dupa indicele de tarie
System.out.print(vin.get(0).tip);//extragerea obiectului cu ajutorul metodei get
}
if(v2.indice<13&&v2.indice>=12) {
System.out.print(vin.get(1).tip+"si ");
}
if(v3.indice<13&&v3.indice>=12) {
System.out.print(vin.get(2).tip);
}
if(v4.indice<13&&v4.indice>=12) {
System.out.println(vin.get(3).tip+";");
4
}
if(v5.indice<13&&v5.indice>=12) {
System.out.print(vin.get(4).tip);
}
System.out.print("Vinurile cu indicele de tarie cuprins intre 13% si 15% sunt : ");
if(v1.indice>=13&&v1.indice<15) {
System.out.print(vin.get(0).tip+"si ");
}
if(v2.indice>=13&&v2.indice<15) {
System.out.print(vin.get(1).tip);
}
if(v3.indice>=13&&v3.indice<15) {
System.out.print(vin.get(2).tip);
}
if(v4.indice>=13&&v4.indice<15) {
System.out.print(vin.get(3).tip);
}
if(v5.indice>=13&&v5.indice<15) {
System.out.println(vin.get(4).tip+";");
}
System.out.print("Vinurile cu indicele de tarie mai mare de 15% sunt : ");
if(v1.indice>15) {
System.out.print(vin.get(0).tip);
}
if(v2.indice>15) {
System.out.print(vin.get(1).tip);
}
if(v3.indice>15) {
System.out.println(vin.get(2).tip+".");
}
if(v4.indice>15) {
System.out.print(vin.get(3).tip);
}
if(v5.indice>15) {
System.out.print(vin.get(4).tip);
}
Scanner q=new Scanner(System.in);//introducerea datelor de la tastatura
Scanner w=new Scanner(System.in);
int mn,mx;
try {//blocul try pentru exceptii
System.out.println("Introduceti diapazonul : ");
mn=q.nextInt();
mx=w.nextInt();
if(mn/1==mn) { //verifica daca este numar

System.out.print("Vinurile cantitatea carora se cuprinde in diapazonul respectiv sunt : ");


if(v1.cantitate>=mn&&v1.cantitate<=mx) {//conditiile de verificare daca cantitatea se contine in
diapazonul introdus
System.out.print(vin.get(0).tip+"("+vin.get(0).cantitate+" litri)");//extragerea obiectelor cu
ajutorul metodei get
}
if(v2.cantitate>=mn&&v2.cantitate<=mx) {
System.out.print(vin.get(1).tip+"("+vin.get(1).cantitate+" litri)");
}
if(v3.cantitate>=mn&&v3.cantitate<=mx) {
System.out.print(vin.get(2).tip+"("+vin.get(2).cantitate+" litri)");
}
5
if(v4.cantitate>=mn&&v4.cantitate<=mx) {
System.out.print(vin.get(3).tip+"("+vin.get(3).cantitate+" litri)");
}
if(v5.cantitate>=mn&&v5.cantitate<=mx) {
System.out.print(vin.get(4).tip+"("+vin.get(4).cantitate+" litri)");
}
}else
{
throw new Exception();//crearea exceptiei
}
}
catch(Exception e)
{
System.out.print("S-au introdus date gresite!");//afisarea propozitiei respective in caz de
exceptie

Tabel de valori:

№ Condiția Rezultatul

1 Prețul vinurilor 69990.0 lei


2 Vinuri cu i.t<13% Illustro și Traminer
Vinuri cu 13%<=i.t<15% Cuvee Prestige Brut și Negru de Purcari Vintage
Vinuri cu i.t>=15 Vartely Chateau
3 Vinuri cu cantitatea Negru de Purcari Vintage(20.0 litri)
curpinsă în diapazon
10 40

Teste:

6
Concluzie:
În această lucrare am avut de realizat o problemă, în care trebuia de creat o ierarhie de clase cu
descrierea tipurilor de vinuri.Trebuia de instanțiat câteva obiecte.Sarcinile de bază au fost: Calcularea
prețului tuturor vinurilor, sortarea vinurilor după indicele de tărie și găsirea vinurilor cantitatea cărora se
cuprinde într-un diapason citit de la tastatură.Dificultăți am întâlnit în salvarea obiectelor clasei într-un
arraylist, la sortarea și gasirea vinului dupa cantitatea cuprinsă în diapason.La aflarea prețului nu am întâlnit
dificultăți, am creat o clasă cu o formula de a afla prețul fiecărui obiect la general, după care în main am
declarat o variabilă ce va calcula suma dintre prețurile fiecărui vin.Sortarea am făcut-o cu ajutorul metodei
get, pentru a prelua obiectul, și cu instrucțiunea if pentru a allege obiectele corespunzătoare
condițiilor.Găsirea vinurilor după cantitate am realizat cu ajutorul scanner-ului pentru a introduce
diapazonul de la tastatură, cu get și if pentru a găsi vinurile cantitatea cărora se include în diapazonul
introdus.Lucrarea îmi este de folos pentru că în decursul realizării am repetat temele, care nu le știam destul
de bine.

Bibliografie:

 https://stackoverflow.com/questions/14648224/how-do-i-store-an-object-in-arraylist
 https://stackoverflow.com/questions/18441846/how-to-sort-an-arraylist-in-java
 https://stackoverflow.com/questions/32262059/java-find-element-in-array-using-condition-and-
lambda
 https://www.homeandlearn.co.uk/java/array_lists.html

Criterii de evaluare:
Nota 5-6. Realizarea minimului necesar:crearea, editarea și salvarea proiectului sursă;declararea
claselor;declararea metodei main(); declararea variabilelor; inițializarea variabilelor; executarea
proiectului;efectuarea, imprimarea și prezentarea raportului;respectarea termenilor de prezentare.

Nota 7-8. Realizarea minimului necesar, aplicarea principiilor POO, utilizarea constructorilor supraîncărcați,
realizarea a trei clase între care există relație de moștenire(asociere, agregare), supradefinirea corectă a
metodelor, algoritm correct de calcul, identarea codului sursă;utilizarea adecvată a comentariilor;răspuns
correct la eventualele întrebări acordate de profesor.

Nota 9. Realizaarea minimului necesar.Realizarea integral a problemei propuse(minim 4 clase), algoritm


correct de calcul, identarea codului sursă;utilizarea adecvată a comentariilor;răspuns correct la eventualele
întrebări acordate de professor.

Nota 10.Proiectul va întruni toate cerințele de mai sus, iar programele vor cuprinde toate situațiile ce pot
genera excepții.Elevul va îmbunătăți programul cu alte sarcini practice relevante problemei
primate.Elaborarea și publicarea unui film video pe canalul personal sau a unui articol pe blogul personal ce
ilustrează pașii de elaborare a programului însoțite de explicații.

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