Anna Urba«ska
127284
06.11.2012
J¦zyki, Automaty i Obliczenia
Laboratorium
wiczenie 4
2FDI grupa L14
1. Kryteria oceny
kryterium
ocena
1
Brakuje celu ¢wiczenia
2.0
2
Struktura aplikacji jest poprawna
3.0
3
Kod jest zgodny z algorytmem
3.5
4
W kodzie s¡ wci¦cia (tabulatory) zwi¦kszaj¡ce czytelno±¢
4.0
5
W kodzie s¡ komentarze odwoªuj¡ce si¦ w sposób jednoznaczny do algorytmu
4.5
6
Prawidªowe odpowiedzi na wszystkie pytania
5.0
Ocena jest wyznacza w sposób przyrostowy, np. sprawozdanie speªniaj¡ce kryteria 1, 2, 4, 5 i 6 ale
nie speªniaj¡ce kryterium 3 ocenione zostanie na 3.0.
2. Cel ¢wiczenia
Celem ¢wiczenia jest ulepszenie stryktury kodu napisanego na 3 laboratorium poprzez zastosowanie
wzorców projektowych.
3. Algorytm programu z pliku fasady
Nie kopiuj z instrukcji do ¢wiczenia, tylko wpisz taki algorytm, który opisuje kod z twojego pliku.
Metoda wczytajDane:
1. Tworzymy obiekt klasy OdczytDanychService i zapisujemy go do nowej zmiennej $odczytDanychSe-
rvice
2. Ustawiamy nazwe pliku z którego zostan¡ wczytane dane do wykonania operacji
3. Wykonujemy metode - odczytaj() aby wczytac dane z pliku
4. Do zmiennej $zbiory przypisujemy zbiory pobrane z pliku
5. Zwró¢ $zbiory
Metoda oblicz:
1. Tworzymy obiekt klasy OperacjeNaZbiorachService i zapisujemy go do zmiennej $operacjeNaZbio-
rachService
2. Za pomoc¡ metody setzbiory() ustawiamy dane na których zostanie przeprowadzona operacja;
3. Wykonujemy metode - roznica()
4. Pobieramy wynik ró»nicy i zapisujmy go do zmiennej $wynik
5. Zwracamy $wynik
4. Algorytm programu z pliku kontrolera
Nie kopiuj z instrukcji do ¢wiczenia, tylko wpisz taki algorytm, który opisuje kod z twojego pliku.
Metoda processRequest:
1. Za pomoc¡ metody getAction() pobieramy numer akcji.
1
2. Tworzymy nowy obiekt klasy Gui i zapisujemy do zmiennej $gui.
3. Je»eli numer akcji jest równy self::KONTROLER_WCZYTAJ_DANE_Z_PLIKU to wywoªujemy
metod¦ onClicWczytaj().
4. Je»eli numer akcji jest równy self::KONTROLER_WYKONAJ_OPERACJE_NA_ZBIORACH to
wywoªujemy metod¦ onClicOblicz().
5. Je»eli numer akcji jest równy self::KONTROLER_POKAZ_WYNIK to wywoªujemy metod¦ onC-
licPokazWynik().
6. Wywoªujemy metod¦ show();
5. Kod programu
5.1. Plik OperacjeNaZbiorachFacade.php
1 <?php
2
3 require_once " OperacjeNaZbiorachService . php" ;
4
5 require_once " OdczytDanychService . php" ;
6 /∗
7
∗
To change t h i s template , choose Tools | Templates
8
∗
and open the template in the e d i t o r .
9
∗
/
10
11 /∗∗
12
∗
D e s c r i p t i o n o f OperacjeNaZbiorachFacade
13
∗
14
∗
@author jao05
15
∗
/
16 c l a s s OperacjeNaZbiorachFacade {
17
/∗
18
∗
Wczytuje dane z p l i k u o nazwie $nazwaPliku
19
∗
@param s t r i n g $nazwaPliku
20
∗
@return array
21
∗
/
22
p u b l i c f u n c t i o n wczytajDane ( $nazwaPliku ) {
23
24
$odczytDanychService = new OdczytDanychService ( ) ; // pkt1
25
$odczytDanychService−>setNazwaPliku ( $nazwaPliku ) ; // pkt2
26
$odczytDanychService−>odczyt aj ( ) ; // pkt3
27
$zbiory = $odczytDanychService−>getZbiory ( ) ; // pkt4
28
29
return $zbiory ; // pkt5
30
}
31
32
/∗∗
33
∗
O b l i c z a ( wpisz prawidow o p e r a c j) z b i o rÓw
34
∗
z t a b l i c y $ z b i o r y
35
∗
@param array t a b l i c a ze zbiorami ( t a b l i c a m i )
36
∗
@return array t a b l i c a z wynikiem o b l i c z e
37
∗
/
38
p u b l i c f u n c t i o n o b l i c z ( $zbiory ) {
39
40
$operacjeNaZbiorach = new OperacjeNaZbiorachService ( ) ; // pkt1
41
$operacjeNaZbiorach−>s e t z b i o r y ( $zbiory ) ; // pkt2
42
$operacjeNaZbiorach−>r o z n i c a ( ) ; // pkt3
43
$wynik = $operacjeNaZbiorach−>getwynik ( ) ; // pkt4
44
45
return $wynik ;
46
2
47
}
48 }
49 ?>
5.2. Plik Controller.php
1 <?php
2
3 require_once " . / View/Gui . php" ;
4 /∗
5
∗
To change t h i s template , choose Tools | Templates
6
∗
and open the template in the e d i t o r .
7
∗
/
8
9 /∗∗
10
∗
D e s c r i p t i o n o f C o n t r o l l e r
11
∗
12
∗
@author jao05
13
∗
/
14 c l a s s C o n t r o l l e r {
15
/∗∗
16
∗
akcja wczytania danych z p l i k u
17
∗
/
18
const KONTROLER_WCZYTAJ_DANE_Z_PLIKU = 1 ;
19
/∗∗
20
∗
wykonanie o b l i c z e
21
∗
/
22
const KONTROLER_WYKONAJ_OPERACJE_NA_ZBIORACH = 2 ;
23
/∗∗
24
∗
Wy w i e t l e n i e wyniku
25
∗
/
26
const KONTROLER_POKAZ_WYNIK = 3 ;
27
/∗∗
28
∗
pokazanie p l i k u gui . xhtml
29
∗
/
30
const KONTROLER_POKAZ_GUI_XHTML = 4 ;
31
32
p r o t e c t e d f u n c t i o n getAction ( ) {
33
34
i f ( i s s e t ( $_REQUEST[ ' wczytaj ' ] ) && $_REQUEST[ ' wczytaj ' ] === ' Wczytaj ' )
35
{
36
return s e l f : :KONTROLER_WCZYTAJ_DANE_Z_PLIKU;
37
}
38
39
i f ( i s s e t ( $_REQUEST[ ' o b l i c z ' ] ) && $_REQUEST[ ' o b l i c z ' ] === ' Oblicz ' )
40
{
41
return s e l f : :KONTROLER_WYKONAJ_OPERACJE_NA_ZBIORACH;
42
}
43
44
i f ( i s s e t ( $_REQUEST[ ' pokazWynik ' ] ) && $_REQUEST[ ' pokazWynik ' ] === ' Pokaz Wynik ' )
45
{
46
return s e l f : :KONTROLER_POKAZ_WYNIK;
47
}
48
49
return s e l f : :KONTROLER_POKAZ_GUI_XHTML;
50
}
51
52
p u b l i c f u n c t i o n processRequest ( ) {
53
54
$akcja = $this −>getAction ( ) ; // 1
3
55
$gui = new Gui ( ) ; // 2
56
i f ( $akcja === s e l f : :KONTROLER_WYKONAJ_OPERACJE_NA_ZBIORACH )
57
{
58
$gui−>onClickOblicz ( ) ;
59
}
60
i f ( $akcja === s e l f : :KONTROLER_POKAZ_WYNIK )
61
{
62
$gui−>onClickPokazWynik ( ) ;
63
}
64
i f ( $akcja === s e l f : :KONTROLER_WCZYTAJ_DANE_Z_PLIKU )
65
{
66
$gui−>onClickWczytaj ( ) ;
67
}
68
$gui−>show ( ) ;
69
}
70 }
71 ?>
5.3. Plik Gui.php
1 <?php
2 /∗
3
∗
To change t h i s template , choose Tools | Templates
4
∗
and open the template in the e d i t o r .
5
∗
/
6
7 /∗∗
8
∗
D e s c r i p t i o n o f Gui
9
∗
10
∗
@author jao04
11
∗
/
12 c l a s s Gui {
13
p r i v a t e $wynikObliczen ;
14
15
16
p u b l i c f u n c t i o n onClickWczytaj ( )
17
{
18
$nazwaPliku = $_FILES [ ' P l i k ' ] [ 'tmp_name ' ] ; // pkt4 . 1
19
$ f a s c a d e = new OperacjeNaZbiorachFascade ( ) ; // pkt 4 ,2
20
$_SESSION [ ' z b i o r y ' ] = $ f a s c a d e −>g e t z b i o r y ( ) ; // pkt 4.3
21
22
23
}
24
p u b l i c f u n c t i o n onClickOblicz ( )
25
{
26
$zbiory = $_SESSION [ ' z b i o r y ' ] ;
27
$ f a s c a d e = new OperacjeNaZbiorachFascade ( ) ;
28
$_SESSION [ ' wynik ' ] =$fascade −>getwynik ( ) ;
29
30
31
32
33
}
34
p u b l i c f u n c t i o n onClickPokazWynik ( )
35
{
36
$wynikO = $_SESSION [ ' wynik ' ] ;
37
$this −>$wynikObliczen = print_r ( $wynikO , TRUE) ;
38
39
}
40
p u b l i c f u n c t i o n show ( )
4
41
{
42
$html = file_get_contents ( " gui . xhtml" ) ;
43
$search = array ( " : wynik : " ) ;
44
$ r e p l a c e = array ( $wynikObliczen ) ;
45
$html = s t r _ r e p l a c e ( $search , $replace , $html ) ;
46
echo $html ;
47
48
}
49
50
51
}
52 ?>
6. Odpowiedz na pytania
6.1. Zadanie 1
Jakie s¡ zadania komponentów Model, View i Controller we wzorcu projektowym Model View
Controller?
Nie wiem
6.2. Zadanie 2
Do programu z zaj¦¢ chcemy doda¢ now¡ funkcjonalno±¢: przycisk Poka» zbiory. Po klikni¦ciu w ten
przycisk ma si¦ pojawi¢ okienko prezentuj¡ce zbiory, które zostaªy odczytane z pliku. Jakie pliki nale»y
doda¢ do aplikacji? W jakich katalogach znajd¡ si¦ te pliki?
Nie wiem
6.3. Zadanie 3
Do programu z zaj¦¢ chcemy doda¢ now¡ funkcjonalno±¢:
Jakie pliki nale»y doda¢ do aplikacji? W jakich katalogach znajd¡ si¦ te pliki?
Nie wiem
5