Skip to content

Instantly share code, notes, and snippets.

@cipster
Last active May 24, 2017 21:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cipster/f455b0acdfea821046c54ff5b25c274d to your computer and use it in GitHub Desktop.
Save cipster/f455b0acdfea821046c54ff5b25c274d to your computer and use it in GitHub Desktop.
Andu nu este electronist. Este programator
public class Radio {
private String power;
private int volum, volumMax;
/** Se construieste un aparat de radio fara parametri */
public Radio() {
log("A fost creat un aparat de radio.");
> * In constructorul gol ar trebui sa setezi tu un power si volumMax default *
}
/** Se construieste un aparat de radio cu parametri */
public Radio(String power, int volumMax) {
this.power = power;
this.volumMax = volumMax;
log("A fost creat un aparat de radio, care este " + ANSI_RED_BACKGROUND + power + ANSI_RESET + " si are volumul maxim "+ volumMax +".")
> scoate mizeria asta. consola e alb-negru :P
}
/** Validare valori */
public String getPower() {
return power;
}
public void setPower(String power) {
if (power == "OPRIT")
> * Numai primitivele pot fi evaluate cu ==. String-ul este un obiect si pentru a evalua corect valoarea trebuie sa folosesti: ex "power.equals("OPRIT")" *
> * mai mult, asta e un caz perfect pentru a folosi un enum(tip de date in java special pt constante)*
if (power == "PORNIT") //n-am o alta idee ref. la cum as putea sa fac. Nu stiu daca merge in forma asta
> * desi nu e incorect, este greu de citit si descurajat sa nu pui acolade if(conditie){} *
this.power = power;
else
log("Aparatul de radio poate fi doar OPRIT sau PORNIT. Incearca din nou cu una dintre aceste valori.");
}
public int getVolum() {
return volum;
}
public void setVolum(int volum) {
if (0<=volum)
if (volum <= volumMax) //aici am incercat cu if (0<=volum)&&(volum <= volumMax) si alte variante
this.volum = volum; //dar nu m-a lasat cu alta. Nu stiu daca chiar functioneaza in forma actuala :-)
else
> * In cazul asta as face verificare si daca nu e in intervalul meu as arunca IllegalArgumentException(putem sa vorbim mai pe larg despre exceptii) *</span>
log("Volumul poate avea valori doar intre 0 si " + volumMax +". Incearca din nou.");
}
public int getVolumMax() {
return volumMax;
}
public void setVolumMax(int volumMax) {
if (volumMax >= 0)
this.volumMax = volumMax;
else
log("Eroare! Volumul maxim poate avea doar valori mai mari ca zero." + volumMax + "este negativ.");
}
/** Metode stare aparat */
public void porneste() {
power = "PORNIT";
log("Aparatul de radio a fost pornit.");
}
public void opreste() {
power = "OPRIT";
log("Aparatul de radio a fost oprit.");
}
public void stare() {
log("Aparatul de radio este "+ power +".");
}
/** Metode reglaj volum */
public void daMaiTare() {
volum++;
log("Ai crescut volumul cu 1 si acum este la "+ volum +".");
}
public void daMaiTare(int cuCat) { //cum plm faci validare pentru parametri? :-)))))
> * if(cuCat < 1){throw new IllegalArgumentException("volumul trebuie sa fie pozitiv");}*
> * if(volum + cuCat > volumMax){throw new IllegalArgumentException("Volumul ar fi dat peste cap. valoare maxima cu care poate fi incrementat este:" + (volumMax - volum));}*
volum+=cuCat;
log("Ai crescut volumul cu "+cuCat+" si acum este la "+ volum +".");
}
public void daMaiIncet() {
<span style="color:red">* Acelasi tipde validari *</span>
volum--;
log("Ai scazut volumul cu 1 si acum este la "+ volum +".");
}
public void daMaiIncet(int cuCat) {
volum-=cuCat;
log("Ai scazut volumul cu "+cuCat+" si acum este la "+ volum +".");
}
private static void log(String mesaj) {
System.out.println(mesaj);
}
/** Culoare text butoane :-) */
public static final String ANSI_RED_BACKGROUND = "\u001B[41m";
public static final String ANSI_GREEN_BACKGROUND = "\u001B[42m";
public static final String ANSI_RESET = "\u001B[0m";
> * Exces de zel *
public static void main(String[] args){
Radio r = new Radio();
Radio rr = new Radio("OPRIT", 10);
r.porneste();
r.stare();
r.daMaiIncet(3);
r.daMaiTare(15);
r.daMaiTare();
r.daMaiIncet();
r.opreste();
r.stare();
rr.porneste();
rr.stare();
rr.daMaiIncet(8);
rr.daMaiTare(3);
rr.daMaiTare(20);
rr.daMaiTare();
rr.daMaiIncet();
rr.opreste();
rr.stare();
}
}
@tatralor
Copy link

Nu merge, bosicule. Validarea nu isi face treaba. Abia astept sa ne vedem si sa discutam :-)

@tatralor
Copy link

Trebuie ca mi-a scapat ceva pe undeva

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment