Sunteți pe pagina 1din 6

Proiect Laborator Java

Descriere și punctaj
Criterii notare
Detalii pentru realizarea documentului
Transmiterea proiectului

Descriere și punctaj
Pentru notarea la laborator veți realiza un document conform descrierii de mai jos.

1. Titul și nume studenți.


2. (1p) Descrieți folosind imagini, instalarea Java și a unui IDE (Visual Studio
Code, IntelJ, etc.) pe computerul propriu.
3. (3p) Descrieți un Business Intelligence Tool realizat in Java.
4. (2p) Descrieți rezolvarea a 2 probleme alegere din problemele prezentate pe
site-ul pbinfo.ro:
problema 1 va fi aleasă din categoria:
https://www.pbinfo.ro/probleme/categorii/1/algoritmi-elementari
problema 2 va fi aleasă din categoria:
https://www.pbinfo.ro/probleme/categorii/2/tablouri-unidimensionale-
vectori
Includeți în document:
un link către problemele alese de pe site-ul pbinfo.ro;
textul problemelor;
codul pentru rezolvarea problemelor;
exemple de rulare și rezultatele obținute (folosind imagini sau text);
5. (3p) Realizați o ierarhie de clase Java care poate fi folosită pentru modelarea
și procesarea datelor dintr-un sistem (problemă) la alegere. Includeți:
o scurtă descriere a sistemului care îl modelați;
codul Java;
diagrama de clase în format vizual;
minim un nivel de derivare (preferabil 2 sau chiar 3 nivele de derivare);
minim patru clase diferite;
minim o metodă virtuală suprascrisă (override) în clasele derivate;

1
un exemplu în care creați obiecte (având ca tip clasele realizate) și un
exemplu de apelare a metodelor pentru procesarea datelor (se va include
și apelul metodei virtuale).

Exemplul 1 - diagramă clase:

Animal
+int age
+String gender

+isMammal()
+mate()

Duck
Fish Zebra
+String beakColor
-int sizeInFeet +bool is_wild
+swim()
+quack() -canEat() +run()

Exemplul 2 - cod Java

public abstract class Instrument {


public Instrument(boolean isFunctional) {
this.isFunctional = isFunctional;
}

public void play() {


if (isFunctional) {
playInstrument();
}
else {
System.out.println(instrumentName() + " is not functional");
}
}

protected abstract String instrumentName();

protected abstract void playInstrument();

protected boolean isFunctional;


}

2
public abstract class WindInstrument extends Instrument {
WindInstrument(boolean isFunctional) {
super(isFunctional);
}
}

public class Saxophone extends WindInstrument {


public Saxophone(boolean isFunctional) {
super(isFunctional);
}

@Override
protected void playInstrument() {
System.out.println("ooo Saxophone!");
}

@Override
protected String instrumentName() {
return "Saxophone";
}
}

public class Trumpet extends WindInstrument {


Trumpet(boolean isFunctional) {
super(isFunctional);
}

@Override
protected void playInstrument() {
System.out.println("Trumpet tra la la!!!");
}

@Override
protected String instrumentName() {
return "Trumpet";
}
}

3
import java.util.ArrayList;

public class Orchestra {


private ArrayList<Instrument> instruments = new ArrayList<Instrument>();

public void addInstrument(Instrument i) {


instruments.add(i);
}

public void play() {


for (Instrument i : instruments) {
i.play();
}
}
}

Exemplul 2 - Diagrama de clase

Orchestra
-List<Instrument> instrumentsA

+addInstrument(Instrument) : void
+play() : void

contains
0..*

Instrument
#boolean isFunctional

+play()
#playInstrument() : void
#instrumentName() : String

WindInstrument StringsInstrument PercussionInstrument

Trumpet Saxophone

Bibliografie: http://elf.cs.pub.ro/poo/laboratoare/clase-abstracte-interfete

4
Criterii notare
Pentru notă se ia în considerare:

calitatea informațiilor;
corectitudinea codului Java (nu se punctează codul care conține erori de
compilare);
calitatea prezentării (ex.: codul inclus în document tebuie să fie evidențiat -
syntax highlighting).

Detalii pentru realizarea documentului


Documentul va fi realizat în format markdown: https://commonmark.org/help/.

Pentru realizarea documentului în format markdown folosiți Visual Studio Code cu


extensia Markdown Preview Enhanced
https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-
preview-enhanced.

Documentația pentru folosirea Markdown Preview Enhanced:

instalare:
https://shd101wyy.github.io/markdown-preview-enhanced/#/vscode-installation
noțiuni de bază:
https://shd101wyy.github.io/markdown-preview-enhanced/#/markdown-basics
includere imagini în forma standard:
https://shd101wyy.github.io/markdown-preview-enhanced/#/markdown-
basics?id=images
includere cod cu syntax highlighting:
https://shd101wyy.github.io/markdown-preview-enhanced/#/markdown-
basics?id=syntax-highlighting
includere cod și imagini dintr-un fișier extern:
https://shd101wyy.github.io/markdown-preview-enhanced/#/file-imports
generare diagramă clase:
https://shd101wyy.github.io/markdown-preview-enhanced/#/diagrams?
id=mermaid;
https://mermaid-js.github.io/mermaid/#/classDiagram
formule matematice:
https://shd101wyy.github.io/markdown-preview-enhanced/#/math

5
Transmiterea proiectului
La trimitere includeți:

documentul original markdown și toate dependințele (imagini, fișiere cu cod


Java) grupate într-un singur fișier în format zip.
documentul în format PDF (documentația pentru conversia markdonw în
format PDF: https://shd101wyy.github.io/markdown-preview-
enhanced/#/puppeteer).

Data limita: 10 iunie 2020, ora 12:00

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