Documente Academic
Documente Profesional
Documente Cultură
Ingineria Programelor
Brainie Game
-2014-
Cuprins
1. Tema proiectului
2. Analiza jocului
5. Arhitectura sistemului
7. Principii şi euristici
Bibliografie
1.Tema proiectului
http://www.mathplayground.com/brainie.html
Tema proiectului este „Brainie” care este realizat in limbajul de programare Java
( limbaj orientat pe obiect). Jocul va fi creat utilizând trei şabloane de proiectare.
Jocul pe care l-am urmat ca model este aceasta din imaginea de mai jos.
2. Analiza jocului
Jocul „Brainie” are ca scop să testeze jucătorului abilităţile matematice cât şi atentia
distributivă şi timpul de reacţie prin distrugerea unor pătrate. Începe când se dă click pe
butonul de Start şi la fiecare 5 secunde se generează noi pătrate.
Sablonul Decorator
Şablonul decorator permite unui utilizator să adăuge noi funcționalități la un obiect
existent, fără a modifica structura acestuia. Acest tip de model de proiectare se încadrează
în modelul structural deoarece acest model actioneaza ca un înveliș la clasele deja
existente.
Acest model creează o clasă de decorator care înfășoară clasa originala și oferă
suplimentar funcționalitate şi păstrarea metodelor clasei intacte. O clasă înveleşte altă clasă,
ambele extind aceeaşi clasă abstractă.
Am demonstrat prin adăugarea de imagini la butoane şi schimbarea culoriloe la
jpaneluri şi făcând un border în jurul labelului unde se dă valoarea din joc.
Sablonul Singleton
Scop : Asigură ca o clasă să aibă doar o singură instanţă şi furnizează un
punct de acces global la ea.
Şablonul singleton este unul dintre cele mai simple şabloane de design în
Java. Acest tip de model de proiectare se încadrează în modelul de creație deoarece
acest model oferă una dintre cele mai bune moduri de a crea un obiect.
Acest model presupune o singură clasă, care este responsabilă cu crearea
unui obiect în timp ce se asigură că doar un singur obiect este creat. Această clasă
oferă o modalitate de a accesa numai obiectul, care poate fi accesate direct, fără a fi
nevoia de a instantia acel obiect al clasei.
Aceasta ridica o problema: este imposibil să se creeze o instanţă, prin urmare
se furnizeaza o metoda accesor printr-o metoda statica (getInstance()). Aceasta
metoda creeaza o singura instanta, daca ea nu exista deja, si returneaza referinta la
respectiva instanta (singleton) catre apelantul metodei. Referinta la singleton este
memorata ca atribut privat static al clasei singleton pentru rezolvarea apelurilor
ulterioare.
Sablonul State
Sablonul State reprezintă fiecare stare a unei entităţi sub forma unui obiect.
Asemenea obiecte sunt rareori descoperite în timpul analizei sau chiar a stadiului
incipient al proiectării. În şablonul de State se vor crea obiecte care reprezintă diferite
stări şi un obiect contextual a cărui comportament se schimbă în acelaşi timp cu
obiectul de stare. Se va găsi ca exemplu labelul în joc care arată starea jucătorului,
adică dacă se aşteaptă ca jucătorul să pornească jocul, dacă joacă sau dacă a oprit
jocul.
5. Arhitectura sistemului
Întregul sistem este fundamentat pe arhitectura orientată obiect folosind proprietăţile
acesteia, cum ar fi: moştenirea, polimorfismul, încapsularea, legarea dinamica.
Sisteme Orientate-Obiect
Obiectele ca manageri
conservă integritatea resurselor, i.e. reprezentarea datelor
Încapsularea
Ascunde reprezentarea de alte obiecte
Moştenirea
stabileste o ierarhie intre abstractiuni inrudite
Legarea dinamica
se determina ce operatie se apeleaza la momentul executiei
programului
import java.awt.Color;
import javax.swing.JPanel;
import org.junit.Test;
import Decorator.Decorator;
import Utils.MyJButton;
import Utils.Randoms;
@Test
public void test() {
MyJButton button = new MyJButton(2);
button.setActionCommand(""+2);
assertEquals(Integer.parseInt(button.getActionCommand()), 2);
}
@Test
public void test2() {
Randoms test = new Randoms();
int result = test.randInt(1,2);
assertEquals(1,result);
}
@Test
public void test3() {
Decorator test = new Decorator();
JPanel panel = new JPanel();
test.colorPanel(panel, Color.BLUE);
assertEquals(panel.getBackground(),Color.BLUE);
}
}
7. Principii
Întrucât s-au folosit șabloane de design, respectarea principiilor și a euristicilor
programării orientate obiect este posibilă.
Principiul deschis-închis este evident, deoarece se păstrează adesea starea
obiectelor în membrii privați pentru a nu putea fi modificați din greșeală, astfel încât
comportamentul obiectului să fie controlat.
Conform principiului lui Liskov, funcțiile care utilizează pointeri sau referințe la clase
de bază trebuie să poată folosi instanțe ale claselor derivate fără să își dea seama
de acest lucru.
Euristici
Evaluarea utilizatorului interfetei se bazeaza pe o serie de euristici (Jakob Nielsen):
Indeplinirea asteptarilor
- “Potrivirea” cu lumea reala
- Asigurarea consistentei & recurgerea la standarde
- Oferirea de ajutor & documentare
Utilizatorul decide – user is boss
- Controlul & libertatea utilizatorului
- Vizibilitatea starii sistemului
- Asigurarea flexibilitatii & eficientei
Tratarea erorilor
- Prevenirea erorilor
- Recognition, not recall
- Raportarea & diagnosticarea erorilor, recuperarea de dupa eroare (error
recovery)
Pastrarea simplitatii – keep it simple
- Realizarea unui design estetic & minimalist
Aplicare euristicilor formeaza un proces numit evaluare euristica. Acesta este o
metoda de inspectare, realizata de un expert in urmatoarele etape:
- Inspectarea profunda a interfetei
- Evaluarea interfetei conform euristicilor si redactarea listei problemelor survenite.
Fiecare problema trebuie justificata, conform unei euristici. Exemplu : “prea multe
optinuni de navigare in prima pagina a siteului” ( se elucideaza “Realizarea unui
design estetic & minimalist”).Intefata evaluata trebuie analizata macar de 2 ori. In
prima etapa, se pot detecta problemele generale si se poate obtine comportamentele
de ansamblu al sistemului. A doua faza poate aduce date importante privitoare la
elementele particulare.
Bibliografie
4. http://www.tutorialspoint.com/design_pattern/
5. http://www.vogella.com/tutorials/JUnit/article.html