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::danezpliku to wywoªujemy metod¦ onClicWczytaj().
4. Je»eli numer akcji jest równy self::operacjenazbiorach to wywoªujemy metod¦ onClicOblicz().
5. Je»eli numer akcji jest równy self::pokazwynik to wywoªujemy metod¦ onClicPokazWynik().
6. Wywoªujemy metod¦ show();
5. Kod programu
5.1. Plik OperacjeNaZbiorachFascade.php
1 <?php
2
3 require_once " OdczytDancyhService . php" ;
4
5 require_once " OperacjeNaZbiorachService . php" ;
6
7
8
9
10 c l a s s OperacjeNaZbiorachFascade {
11
12
13
p u b l i c f u n c t i o n wczytajDane ( $nazwaPliku )
14
{
15
16
$odczytDanychService = new OdczytDanychService ; // punkt 4.1
17
$odczytDanychService−>setnazwaPliku ( $nazwaPliku ) ; // pkt 4.2
18
$odczytDanychService−>odczytaj ( ) ; // pkt 4.3
19
$zbiory =$odczytDanychService−>g e t z b i o r y ( ) ; // pkt 4.4
20
return $zbiory ; // pkt 4.5
21
22
23
}
24
p u b l i c f u n c t i o n o b l i c z ( $zbiory )
25
{
26
$operacjeNaZbiorach =new OperacjeNaZbiorachService ( ) ; // 5.1
27
$operacjeNaZbiorach−>s e t z b i o r y ( $zbiory ) ; // 5 ,2
28
$operacjeNaZbiorach−>r o z n i c a ( ) ; // 5.3
29
$wynikObliczen = $operacjeNaZbiorach−>getwynikObliczen ( ) ; // 5.4
30
return $wynikObliczen ; // 5.5
31
32
33
34
}
35
36
37
38
39
40 }
41 ?>
5.2. Plik Controller.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 .
2
5
∗/
6
7 /∗∗
8
∗ D e s c r i p t i o n o f C o n t r o l l e r
9
∗
10
∗ @author jao04
11
∗/
12 c l a s s C o n t r o l l e r {
13
14
15
16
const danezpliku = 1 ;
17
18
const o p e r a c j e n a z b i o r a c h = 2 ;
19
20
const pokazwynik = 3 ;
21
22
const pokazgui = 4 ;
23
24
p r o t e c t e d f u n c t i o n getAction ( )
25
{
26
i f ( i s s e t ($_REQUEST[ ' Wczytaj ' ] ) )
27
{
28
return s e l f : : danezpliku ;
29
}
30
i f ( i s s e t ($_REQUEST[ ' Oblicz ' ] ) )
31
{
32
return s e l f : : o p e r a c j e n a z b i o r a c h ;
33
}
34
i f ( i s s e t ($_REQUEST[ ' Pokaz_Wynik ' ] ) )
35
{
36
return s e l f : : pokazwynik ;
37
}
38
return s e l f : : pokazgui ;
39
}
40
41
p u b l i c f u n c t i o n processRequest ( )
42
{
43
$pobierzAkcje = $th is −>getAction ( ) ; // 1
44
$obiektKlasyGui = new Gui ( ) ; // 2
45
i f ( $pobierzAkcje == s e l f : : o p e r a c j e n a z b i o r a c h ) //
3
46
{
47
$obiektKlasyGui−>onClickOblicz ( ) ; // 3.1
48
}
49
else i f ( $pobierzAkcje == s e l f : : pokazwynik ) // 4
50
{
51
$obiektKlasyGui−>onClickPokazWynik ( ) ; // 4.1
52
}
53
else i f ( $pobierzAkcje == s e l f : : danezpliku ) // 5
54
{
55
$obiektKlasyGui−>onClickWczytaj ( ) ; // 5.1
56
}
57
58
$obiektKlasyGui−>show ( ) ; // 6
59
60
61
}
62 }
63 ?>
3
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 −>wczytajDane ( $nazwaPliku ) ; // 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 −>o b l i c z ( $zbiory ) ;
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
$t hi s −>wynikObliczen = print_r ( $wynikO , TRUE) ;
38
39
}
40
p u b l i c f u n c t i o n show ( )
41
{
42
$html = file_get_contents ( " gui . xhtml" ) ;
43
$search = array ( " : wynik : " ) ;
44
$ r e p l a c e = array ( $ th is −>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 ?>
4
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