Professional Documents
Culture Documents
Jeśli ktoś z was twierdzi, iż jakaś z odpowiedzi powinna wyglądać inaczej i co najważniejsze – wie jak
ją poprawić – to może przesłać to konkretne rozwiązanie na moją skrzynkę. Wszyscy, którzy wzięli
udział w opracowywaniu pytań zostaną o niej poinformowani.
Spis treści
1)Wymień i wyjaśnij znane ci problemy podczas projektowania graficznych interfejsów
użytkownika. .....................................................................................................................3
2)Opisz problem związany z poniższym zrzutem: ...........................................................3
3)Co rozumiesz pod pojęciem „użyteczność” (używalności)?..........................................3
4)Dlaczego występowanie statycznej nawigacji w serwisach internetowych jest takie
ważne?...............................................................................................................................3
5)Kto wykonuje ewaluacje heurystyczną? Dlaczego?......................................................3
6)W którym etapie projektowania interfejsu w metodyce przedstawionej na wykładzie
(UCD) następuje pierwsze określenie punktów styku użytkownika z systemem? ...........4
7)Narysuj prosty przykładowy projekt wizualny na trzech poziomach dla dowolnego
przypadku związanego z wystawianiem faktury dla kontrahenta. (faktura, kontrahent,
pozycja faktury, wystawca)...............................................................................................4
8)Do czego wykorzystuje się projekty abstrakcyjne widoków?........................................4
9)Do czego wykorzystuje się projekty wizualne widoków?.............................................4
10)Czy w projekcie leksykalnym określamy, podział na komponenty z jakich będzie
składał się interfejs? (odpowiedź uzasadnij).....................................................................4
11)Umotywuj stosowanie prototypowania w procesie wytwarzania interfejsow
graficznych........................................................................................................................5
12)Wymien i krotko scharakteryzuj podstawowe narzedzia stosowane w
prototypowaniu .................................................................................................................5
13)Do czego sluza znaczniki w html label, fieldset..........................................................6
14)Przeanalizuj zaprezentowany Interfejs użytkownika, wskaż i uzasadnij błędy
projektowe. – FORMULARZ (Z pracy domowej)............................................................6
15)Jakie opisy należy stosować przy nazywaniu przycisków typu Button?.....................6
16)Przestaw jakich nazw należy używać opisując nazwy aplikacji w Menu głównym
GNOME.............................................................................................................................7
17)Jakie pod względem funkcjonalnym znasz okna dialogowe?......................................7
18)Przedstaw zalecenia dokumentu GNOME Human Interface Guidelines dotyczące
pasków narzędzi................................................................................................................7
19)Kiedy i dlaczego należy stosować nazwę Stop zamiast Anuluj?.................................7
20)Przedstaw cztery filary RAD. ......................................................................................8
21)Na czym polega „timeboxing” w RAD?......................................................................8
22)Co rozumiesz pod pojęciem JAD (Joint Application Design lub Development) w
metodyce RAD?................................................................................................................8
23)Czy Delphi jest narzędziem RAD?..............................................................................8
24)Z jakich elementów składa się standardowy moduł Delphi?.......................................8
25)Przedstaw sposób konwersji klasycznych modułów (unit) z Delhi Pascal do .NET.
Zwróć szczególną uwagę na fragment inicjalizujący moduł: „begin... end.”....................9
26)
Czym różnią się pliki *.dfm od *.nfm w Delphi for .NET?..............................................9
27)2Czy przy zastosowaniu okien dialogowych modalnych działają timery? Odpowiedź
uzasadnij............................................................................................................................9
28)Na czym polega dziedziczenie projektu wizualnego formularza? Opisz znane ci
technologie (1 lub 2)........................................................................................................10
29)
Przedstaw koncencepję zastosowania Microsoft Windows Custom Controls do realizacji
projektów widoków abstrakcyjnych................................................................................10
30)Do czego służy Windows Workflow Foundation w .NET 3.x? Jak ta technologia jest
związana z UML?............................................................................................................11
31)Do czego służy i co to jest XAML?...........................................................................12
32)Czy LINQ to język do odpytywania warstwy prezentacji o stan interfejsu
użytkownika? (odpowiedź uzasadnij)..............................................................................12
33)Czym różni się wzorzec MVC od wzorca architektury warstwowej?.......................12
34)Kiedy zmodyfikowany model MVC można uznać za architekturę warstwową?......13
35)Do czego może służyć wzorzec Modelu Prezentacji?................................................13
36)Przedstaw zalety stosowania techniki „databinding” podczas realizacji interfejsu
użytkownika. Kiedy tą technikę należy stosować?..........................................................13
37)Z jakim wzorcem projektowym związany jest poniższy diagram sekwencji:...........13
38)Na czym polega zastosowanie wzorca Fabryki we wzorcu selektor prezentacji?.....14
39)Kiedy należy stosować wzorzec aplikacji WEB o nazwie „Front Controller”? ......14
40)Przedstaw różnice między wzorcem kontrolera pasywnego i aktywnego w
zastosowaniach dla aplikacji WEB..................................................................................15
1.Bierny Model......................................................................................................15
2.Aktywny Model..................................................................................................16
41)Dlaczego wzorzec „pośredni model prezentacji” pomaga stosować testy
automatyczne?.................................................................................................................16
42)Czy .NET wspomaga realizację wzorca Front Controller? Odpowiedź uzasadnij....16
43)Do czego można wykorzystać wzorzec Łańcuch Filtrów (Chain Filter)?.................17
44) Jakie informacje przesyła się za pomocą komunikatów w interfejsach opartych na
GUI?................................................................................................................................17
45)W jakich bibliotekach występuje pętla obsługi komunikatów? Kiedy
implementujemy ją sami, a kiedy jest zrealizowana przez bibliotekę.
.........................................................................................................................................17
46) W jaki sposób w .NET możemy obsługiwać własne komunikaty? .........................18
47)Do czego służy program Spy++?...............................................................................18
48)Napisz przykład wywołania pętli komunikatów w: Qt, .NET, MFC.........................18
49)Z jakich elementów składa się program graficznych napisany w WinAPI?..............19
50)Jaka jest struktura programu głównego w Delphi? Gdzie jest
uruchamiana pętla obsługi komunikatów?......................................................................19
51)Do czego służy biblioteka GLUT?.............................................................................20
52)Czy MFC zastępowało Win 32 API? Odpowiedź uzasadnij......................................20
53)Dlaczego powstało MFC?..........................................................................................20
54)Do czego w MFC służą metody z przedrostkiem Afx...?...........................................20
55)Jakie informacje przechowuje delegacja w .NET?....................................................21
56)Zadeklaruj przykładową delegację oraz jej wywołanie.
.........................................................................................................................................21
57)Do czego zostało wprowadzone w .NET słowo kluczowe „event”? Podaj przykład.
.........................................................................................................................................21
58)Jak można obsłużyć komunikaty w .NET przy wykorzystaniu interfejsu
IFilterMessage oraz przesłonięciu procedury WndProc?
.........................................................................................................................................22
1)Wymień i wyjaśnij znane ci problemy podczas projektowania
graficznych interfejsów użytkownika.
- Podczas projektowania serwisów internetowych bardzo istotne jest zaprojektowanie odpowiedniego układu
graficznego (w tym rozlokowania poszczególnych elementów, kolorystyki)
- Projektując aplikację typu desktop należy zwrócić szczególną uwagę na zalecenia projektowy odnośnie
platformy docelowej, np. położenie przycisków w oknach dialogowych, słownictwo itp.
- Należy korzystać z powszechnie znanych zaleceń projektowych takich jak skróty klawiszowe
- Tworząc formularze na strony internetowe należy pamiętać o odpowiednim rozlokowaniu i doborze kontrolek
- Należy unikać komunikatów błędów, w których użyte są sformułowania spoza dziedziny użytkownika lub
takich, które zawierają informacje czysto techniczne (np. numer błędów)
Problemem związanym z poniższym zrzutem jest niemożność określenia faktycznej ilości miejsca przeznaczonej
do wykorzystania. Etykieta podaje jedynie względny, procentowy stopień wykorzystania pojemności dysku, bez
ukazania jego całkowitego rozmiaru. Fakt ten wywołuje niepewności użytkownika i zmusza go do obliczenia
w/w wielkości we własnym zakresie.
Dlatego, że przeglądając strony internetowe często ogarnia nas zagubienie a statyczna nawigacja zapewnia nam
swego rodzaju bezpieczeństwo, jakiś stały punkt odniesienia, do którego w każdej chwili możemy wrócić.
Ponadto, nawigacja informuje nas gdzie jesteśmy w strukturze serwisu, umożliwia odnajdywanie dokumentów w
serwisie oraz mówi o tym co w danym miejscu się znajduje.
Ewaluacje heurystyczną wykonuje ekspert, ponieważ posiada on wiedzę heurystyczną opartą na z góry
przyjętych założeniach, niezależnych od doświadczenia lecz opartych na rozumowaniu.
6)W którym etapie projektowania interfejsu w metodyce
przedstawionej na wykładzie (UCD) następuje pierwsze określenie
punktów styku użytkownika z systemem?
W metodyce UCD (User Centered Design) pierwsze określenie styku użytkownika z systemem następuje na
etapie tworzenia projektu funkcjonalnego. Jednym z jego podetapów polega na określeniu przepływu zadań,
czyli na sprecyzowaniu interakcji użytkownika z systemem.
Całkowity odbiór aplikacji przez użytkownika musi uwzględniać odpowiednie diagramy sekwencji i zgodność
ze scenariuszami przypadków użycia. Jest on realizowany za pomocą scenopisów (np. „storyboards”), które są
dokumentami tekstowymi albo prezentacjami i definiują kolejność widoków. Przy niektórych projektach tworzy
się prototypy z możliwie wysokim poziomem interakcji.
(wyk2.pdf, slajdy 28-42)
Petra
Odp. brzmi: Czasowniki w formie rozkazującej, np. Zapisz, Wyślij, Edytuj itp.
16)Przestaw jakich nazw należy używać opisując nazwy aplikacji w
Menu głównym GNOME.
Okna podstawowe
Okna pomocnicze
Ostrzeżenia
Okna postępu
Asystenci (kreatory)
26)
Czym różnią się pliki *.dfm od *.nfm w Delphi for .NET?
Komponenty umieszczane na formularzu moga miec rózne własciwosci. Te dane musza byc
gdzies przechowywane. W VCL.NET miejscem, gdzie zapisywane sa te informacje, jest plik
*.nfm (w poprzednich wersjach Delphi plik miał rozszerzenie *.dfm), którego zawartosc została
przedstawiona na listingu 4.3
Praktycznie nigdy nie zachodzi potrzeba, aby recznie edytowac ten plik. To zadanie nalezy juz do
Delphi, które dokonuje zapisu i odczytu danych własnie z tego pliku. Pliki *.nfm zawieraja informacje
na temat formularza, jego własciwosci, komponentów oraz właściwości komponentów.
W pliku zródłowym formularza znajduje sie dyrektywa każącą kompilatorowi dołączyć do
projektu plik *.nfm:
Jest to specjalna instrukcja — na pierwszy rzut oka wyglądająca jak komentarz, jednak jest
informacja dla kompilatora o włączeniu do projektu wszystkich plików z rozszerzeniem *.nfm.
Okna modalne i nie modalne mogą służyć jako przykład kontroli przepływu informacji
synchroniczny i asynchroniczny. (Delphi)
29)
Przedstaw koncencepję zastosowania Microsoft Windows Custom
Controls do realizacji projektów widoków abstrakcyjnych.
Widoki: Telefonistki
Widoki abstrakcyjne: Zlecenie
Widoki abstrakcyjne: Lokalizacja
Np.:
Organizacje coraz częściej funkcjonują zgodnie z pewna koncepcją procesów biznesowych. Niektóre elementy
procesów są automatyzowane. Zasadne zatem jest tworzenie kodu który
umożliwia planowanie kroków poszczególnych procesów (suport for workflow based applications)
Język opisu interfejsu oparty na XMLu, wykorzystany w technologii WPF (cześć Frameworka .NET 3.0).
Daje projektantom interfejsu więcej możliwości niż GDI (m.in. obiekty 3d, obroty i skalowanie kontrolek,
użycie animacji i wideo), oddziela pracę programisty i projektanta.
32)Czy LINQ to język do odpytywania warstwy prezentacji o stan
interfejsu użytkownika? (odpowiedź uzasadnij)
Nie, LINQ (Language Integrated Query) ujednolica dostęp do danych nieobiektowych (np. bazy danych, danych
w XML) (definiuje standardowe operatory kwerend) i automatyzuje zamianę ich na obiekty.
Architektura warstwowa to taka, w której kolejne warstwy aplikacji kontaktują się między sobą, lecz nie mogą
kontaktować się z pominięciem warstw sąsiednich. W MVC kontroler kontaktuje się zarówno z warstwą danych
(Modelem) jak z warstwą widoku. Warstwa widoku w modelu warstwowym dane otrzymywałaby od kontrolera,
natomiast w MVC pobiera je bezpośrednio od Modelu, co jest sprzeczne z zasadami architektury warstwowej.
• Model prezentacji może odwoływać się do wielu obiektów dziedziny aplikacji – nie jest zatem fasadą
obiektów dziedziny
Schematy:
36)Przedstaw zalety stosowania techniki „databinding” podczas
realizacji interfejsu użytkownika. Kiedy tą technikę należy
stosować?
• Zapewnia synchronizacje między tym co jest wyświetlane, a tym co znajduje się w recordset’cie
• Należy stosować wtedy, gdy chcemy aby zmiany natychmiast się propagowały i kiedy wystarcza nam
funkcjonalność zawarta w bibliotece (bo databinding często zawarty jest w dostarczonych bibliotekach)
Jest to pośredni model prezentacji – tworzony jest model dla widoku, czyli obiekt tłumaczący wartości z
dziedziny aplikacji na dziedzinę interfejsu użytkownika. Model prezentacji przechowuje i udostępnia konkretne
informacje związane bezpośrednio z interfejsem użytkownika – np. kolor.
38)Na czym polega zastosowanie wzorca Fabryki we wzorcu
selektor prezentacji?
Na tym, że tworzymy osobą klasę, która na podstawie obiektu dziedziny decyduje w którym oknie go
wyświetlić. FormularzGłowny pyta się w jakim oknie wyświetlić dany obiekt.
Dla skomplikowanej aplikacji Web aby osiągnąć wysoki wskaźnik ponownego użycia kodu oraz elastyczności
przy jak najmniejszym duplikowaniu kodu.
1. Bierny Model
W trybie biernym(pasywnym), obiekty używane w modelu, nie zostały zaprojektowane do używania ich w trójce
MVC. Kontroler jest odpowiedzialny za sygnalizacje widokowi, gdy wykonuje on operacje na modelu, które
wymagają zaktualizowania danych w widoku.
Bierny model jest powszechnie wykorzystywany w WEB MVC. Surowe żądanie/odpowiedz z cyklu HTTP nie
wymaga aktywnego modelu. Interfejs użytkownika zostaje za każdym razem zbudowany na nowo, po mino
zmian tylko w obrębie modelu ( w aplikacji PHP nie mamy "trwałej" sesji i za każdym odwołaniem cały
interfejs użytkownika, jest budowany na nowo - w przeciwieństwie do aplikacji, np.: systemowych, gdzie to
zainicjowany szkielet jest wykorzystywany ciągle). Doskonale to widać w PHP gdzie żaden stan nie jest
zachowywany pomiędzy żądaniami klienta (budowa od nowa całego interfejsu).
2. Aktywny Model
W aktywnym Modelu, klasy modelu posiadają mechanizm zawiadomień, zwykle stosuje się w tym celu wzorzec
Obserwator. Dzięki takiemu rozwiązaniu, niepowiązany widok jak i komponenty kontrolera zostają
poinformowane o zmianach zachodzących w modelu. Ponieważ te komponenty rejestrują siebie w modelu, a
model nie ma pojęcia o specyfikacji widoku i kontrolera, to nie niszczy niezależności modelu.
Mechanizm zawiadomień dostarcza natychmiastowego uaktualnienia informacji, czyli cechy charakterystycznej
dla aplikacji MVC z GUI.
Model ten reprezentuje stan i zachowanie prezentacji niezależnie od kontrolek GUI użytych w interfejsie. Odkąd
klasy pośredniego modelu prezentacji są w pełni oddzielone od widoku, logika, którą zawierają jest znacznie
łatwiejsza do przepytania. To sprawia że testowanie jest łatwiejsze.
Łańcuch filtrów może być wykorzystany, jeśli chcemy poddać obiekt (lub kilka obiektów) łatwo
rozszerzalnemu zestawowi testów. Mogą one dotyczyć walidacji, filtracji, wykonania określonych
funkcji przed startem aplikacji.
Pomysł łańcucha filtrów polega na stworzeniu kontenera (łańcucha), który przechowuje zestaw filtrów.
Poszczególne filtry jest wywoływane są kolei. Do wywołania przekazywana jest także referencja do
łańcucha, aby można było wykonać następny filtr. Do wszystkiego co wykonuje dany filtr na obiekcie
powinny mieć dostęp kolejne filtry.
Pętla obsługi komunikatów występuje we wszystkich bibliotekach GUI np. .net, mfc. Qt, VCL.
Wydaje mi się, że pętla jest realizowana przez biblioteki zorientowane obiektowo np. SWING w Javie.
Pętlę, a w zasadzie funkcję obsługującą komunikaty implementujemy np. w. VCL (delphi),
.NET
public static int Main()
{
Application.Run(new MyWindow() );
return 0;
}
Qt
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MojDialog * dialog = new MojDialog;
dialog->show();
return app.exec();
}
Delphi
begin
Application.Initialize;
Application.CreateForm(MyWindow, w);
Application.Run;
end.
MFC ( chyba to to)
class MyApp :public CWinApp
{
MFC_ MyWindow *wnd;
public:
BOOL InitInstance()
{
wnd = new MFC_ MyWindow ();
m_pMainWnd = wnd;
m_pMainWnd->ShowWindow(1);
return 1;
}
};
Podstawą programu napisanego w WinAPI jest funkcja startowa WinMain (odpowiednik main w zwykłym
programie C/C++). Na poczaątku funkcji znajduje się kod tworzący okno programu i jakiś inny kod
inicjalizacyjny, a następnie pojawia się pętla komunikatów. Jest to pętla nieskończona, w której mamy
wywołania dwóch funkcji, GetMessage lub PeekMessage aby odczytać komunikat przesłany dla naszej aplikacji
i DispatchMessage aby przesłać komunikat do funkcji obsługi komunikatów. Funkcję obsługi komunikatów
musimy napisać sami, składa się ona z instrukcji switch(message) i w zależności jaki komunikat dostanie
wykonuje odpowiednie zadania np na komunikat WM_DESTROY powinna zakończyć program. Jeśli mamy
formę z przyciskami i innymi kontrolkami, to razem z kodem gdzieś jest plik opisujący położenia tych kontrolek
i plik resources.h, gdzie są zdefiniowane stałe przez które możemy się odwoływać do tych kontrolek. Kodu
funkcji nie wklejam, jest w pdfie wyk 9 postać funkcji winmain naogół wygląda tak: int WINAPI
WinMain(HINSTANCE inst, HINSTANCE prevInst, LPSTR cmd, int mode) a obsługi komunikatów:
LRESULT CALLBACK nazwaDowolna(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam).
Jeśli mamy kilka okien to każde musi mieć funkcję obsługi komunikatów, można to być jedna dla wszystkich,
lub dla każdego inna ( drugie podejście jest chyba lepsze)
Struktura programu opiera się na VCL (Visual Component Library) - konkurencyjną dla MFC
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Patrząc od strony programisty tak, lecz tak na prawdę było to uwspólnienie (wrapper) wywołań niezależnie czy
był to WIN16 API, czy też WIN32 API. Dodatkowo MFC przynosiło ze sobą wiele przydatnych klas i struktur ,
dzięki czemu można było szybciej tworzyć programy w C i c++.
1. Zapewnić te same biblioteki dla programów 16 i 32 bitowych (przez chwilę także DOSowych)
2. Nowy kompilator Microsoftu obsługiwał C i C++ (wcześniej tylko C). Chodziło o zapewnienie
wspólnego dostępu zarówno dla C jak C++ do bibliotek, które zapewniały dostęp do takich funkcji jak:
obsługa wyjątków , dostęp do nowych typów danych (np od daty) , itd.
3. Borland rok wcześniej w 1991 w zrobił konkurencyjną bibliotekę Object Windows Library (OWL), która
spełniała 2 powyższe punkty , w dodatku w pełni obiektowy sposób.
Początkowo MFC miało się nazywać Application Framework Extensions (AFX) , stąd najstarsze funkcje mają
przedrostek afx. Są to funkcje nieodpowiadające za komunikację z API windowsa czyli w zasadzie z elementami
GUI. Czyli np. obsługa okien programów , MessageBoxów itp.
metoda obslugi:
a wywoładnie gdziekolwiek:
this.passExamListener(questions);
ze slajdu:
Słowo kluczowe event zostało wprowadzone do .NET aby zmniejszyć ilość tworzonego kodu i zautomatyzować
procedury rejestracji i wyrejestrowania delegacji z danych klas. Kompilator,
gdy napotka słowo event automatycznie dodaje odpowiednie metody, które są ukryte przed programistą.
gdzies, np w konstruktorze:
this.sprawdzPunkty += new PassExam(PassExamHandler);
a wywołanie np.
if(questions[next]==null)
this.sprawdzPunty(questions);
ze slajdow:
using System.Windows.Forms;
public class MyFilter: IMessageFilter
{
public bool PreFilterMessage(ref Message aMessage)
{
if (aMessage.Msg==WM_AMESSAGE)
{
//WM_AMESSAGE Dispatched
//Let’s do something here
//...
}
// This can be either true of false
// false enables the message to propagate to all other
// listeners
return false;
}
}
Application.AddMessageFilter( this );
Application.RemoveMessageFilter( this );
Ciekawostką jest że np. skanery też komunikują się z Windowsem za pomocą komunikatów, np. po
zeskanowaniu pojawia sie TWMSG_XFERREADY, żeby napisać obsługę skanera z poziomu .net bez używania
zewnętrznych bibliotek należy min. przechwycić komunikaty skanera w jeden z podanych wyżej sposobów.