P. 1
Odpowiedzi-GUI

Odpowiedzi-GUI

4.25

|Views: 1,209|Likes:
Wydawca: lenrock

More info:

Published by: lenrock on Jan 21, 2008
Prawo autorskie:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/08/2014

pdf

text

original

Komunikat: 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)

2)Opisz problem związany z poniższym zrzutem:

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.

3)Co rozumiesz pod pojęciem „użyteczność” (używalności)?
Użyteczność odpowiada jak wydajnie użytkownicy umieją wykorzystać funkcjonalność systemu. 1. Nauka obsługi: czy łatwo się jej nauczyć? 2. Ergonomia: po nauczeniu się, czy szybko się używa? 3. „Pamiętalność”: czy łatwo przypominamy sobie to czego się nauczyliśmy? 4. Błędy: czy błędów użytkownika jest niewiele i są odwracalne? 5. Satysfakcja: czy systemu używa się z przyjemnością?

4)Dlaczego występowanie statycznej nawigacji w serwisach internetowych jest takie ważne?
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.

5)Kto wykonuje ewaluacje heurystyczną? Dlaczego?
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.

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).

8)Do czego wykorzystuje się projekty abstrakcyjne widoków?
Widoki abstrakcyjne wiążą się z projektem funkcjonalnym. Zawierają informacje, jakie musi widzieć użytkownik, aby ukończyć konkretne zadanie oraz jaka musi być udostępniona funkcjonalność. Należy pamiętać o tym, że użytkownik operuje na widokach, nie na obiektach. Widoki abstrakcyjne stanowią niezależną od implementacji reprezentację tego, z jakimi obiektami powiązane są widoki i w jakich relacjach. Widoki abstrakcyjne są związane z konkretnymi przypadkami użycia. (wyk2.pdf, slajdy 21-22)

9)Do czego wykorzystuje się projekty wizualne widoków?
Projekty wizualne definiują układ obiektów w widokach. Muszą one być zgodne z widokami abstrakcyjnymi (projektowanymi we wcześniejszej fazie) i nie wprowadzać wobec nich żadnych rozszerzeń. Obiekty i stany obiektów, wyodrębnione w fazie abstrakcyjnej, powinny być czytelne dla użytkownika (cel: użyteczność). Każdy obiekt musi być identyfikowalny w całym systemie. W projekcie wizualnym można wyodrębnić 3 poziomy: 1) Poszczególne obiekty 2) Widoki prezentacji (układy, interakcje) 3) Całkowity odbiór użytkownika (weryfikacja zgodności i czytelności, prototypowanie, testy zespołowe) 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)

10)Czy w projekcie leksykalnym określamy, podział na komponenty z jakich będzie składał się interfejs? (odpowiedź uzasadnij)
Odpowiedź brzmi: tak. Projekt leksykalny określa w jaki sposób i z jakimi rzeczywistymi prymitywami sprzętowymi połączone są elementy syntaktyczne. Przykładem podziału jest np. przydzielanie gotowych kontrolek do określonych zadań. (wyk2.pdf, slajdy 5, 43)

11)Umotywuj stosowanie prototypowania w procesie wytwarzania interfejsow graficznych
Srodek do analizy, testowania pewnych koncepcji przed zainwestowaniem w nie kapitału. Cel: Oszczędzić czas i pieniądze Prototyp stanowi tylko fasadę rzeczywistego systemu Ale można na niej wykonać właściwe testy użyteczności. Główne motywy tworzenia prototypu GUI: - potwierdzenie różnych koncepcji, specyficznych cech systemu - zbadanie projektu (również przy pomocy testów na różnym poziomie) - zbadanie aspektów technicznych (weryfikacja możliwości realizacji - projektów wizualnych przez warstwę prezentacji systemu przy wykorzystaniu dostępnych technologii)

12)Wymien i krotko scharakteryzuj podstawowe narzedzia stosowane w prototypowaniu ...
„Low fidelity” (mało wierne) – papierowe szkice Wykorzystanie języków skryptowych html, Python, Ruby itp... Wykorzystanie specjalistycznych narzędzi do prototypowania GUI: - Cleverlance Petra - Axure RP Pro - GUI Design Studio -Mockup Screens

Wykorzystanie narzędzi do budowania GUI – środowiska zintegrowane. Qt Designer, Visual Basic (lub teraz MS.Visual Studio), Netbeans, Delphi,

PowerBuilder, Glade i wiele innych.
Mockup Screens - Skoncentrowane na prototypowaniu (czyli wygodne w użyciu) - Zorganizowane zarządzanie ekranami, widokami (jak w narzędziu CASE) - Możliwość generowania notatek, uwag do konkretnych elementów widoku - Możliwość prezentacji przykładowych danych - Możliwość tworzenia gotowych prezentacji jako scenopisów do scenariuszy przypadków użycia Petra Proste narzędzie CASE umożliwiające zarządzanie prototypem. - Tworzenie szablonów stron i widoków - Zarządzanie nawigacją miedzy stronami - Eksport do interaktywnego prototypu

13)Do czego sluza znaczniki w html label, fieldset
label – etykieta dla pola formularza po kliknieciu ktorej uaktywni sie pole formularza fieldset – pozwala na grupowanie z soba elementow.

14)Przeanalizuj zaprezentowany Interfejs użytkownika, wskaż i uzasadnij błędy projektowe. – FORMULARZ (Z pracy domowej)

Napis Obowiązkowe: zamienić na symbol * przy opisie dotyczącym pola. o Pogrupować tematycznie elementy formularza. Należy użyć do tego ramek (np. Parametry wycieczki (dojazd,pobyt), Koszty, Informacje o zamawiającym). o Obok pól edycyjnych wymagających odpowiedniego formatu wpisać przykład lub wymusić maskę (do drugiego trzeba zaimplementować w JavaScript). o Listę wyboru (SELECT) zastąpić kilkoma checkboxami. (Trudne CTRL) o Checkboxy powinny być po lewej stronie opisu tak jak w standardzie. o Pola RADIOBUTTON najlepiej zamknąć w ramce. o Dodać numery kroków w jakich człowiek powinien wprowadzać dane. o Zaprezentować graficznie Podsumowanie cen posiłków w innej formie. Takiej, która nie będzie sugerowała użytkownikowi, że może coś w tym polu wpisać. o Wyraźniejsze przyciski ‘Wyślij’ i ‘Anuluj’ o Ilość osób: Liczba osób. o Liczba osób zamienić na: Dorośli, Dzieci, Seniorzy, Niemowlęta. o

15)Jakie opisy należy stosować przy nazywaniu przycisków typu Button?
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.
oprócz nazwy 'marketingowej' dołącz człon związany z funkcjonalnością ● Epiphany zastąp Epiphany Web Browser

– Usuń niepotrzebne człony:
● GNOME Image Viewer zastąp Image Viewer ● GTK Blog Editor zastąp Blog Editor

17)Jakie pod względem funkcjonalnym znasz okna dialogowe?
Okna podstawowe Okna pomocnicze Ostrzeżenia Okna postępu Asystenci (kreatory)

18)Przedstaw zalecenia dokumentu GNOME Human Interface Guidelines dotyczące pasków narzędzi.
Generalnie nie używać pionowych pasków narzędzi Kontrola wyświetlania i wyglądu – Umożliw dostosowanie wyglądu – Ukrywanie bezpośrednio w menu Widok (View) jeśli do 3 – Ukrywanie w podmenu Widok-Paski narzędzi jeśli więcej niz 3 – Opisy i podpowiedzi ● Dla odpowiedników w menu zastosuj to samo nazewnictwo ● Nie udostępniaj skrótów klawiszowych (ten samo kontekst co menu) ● Pamiętaj o „znaczących” podpowiedziach

19)Kiedy i dlaczego należy stosować nazwę Stop zamiast Anuluj?
Stop zamiast Anuluj stosujemy gdy nie da się cofnąć wszystkich dokonanych zmian (zrobić rollback).

20)Przedstaw cztery filary RAD.
Cztery filary RAD (Rapid Application Development):

● ● ● ●

Ludzie Narzędzia Metodyka Zarządzanie

21)Na czym polega „timeboxing” w RAD?
Timeboxing w RAD: ● Technika zarządzania polegająca na zezygnowanieu z częściowej funkcjonalności projektu w celu dotrzymania ustalonych terminów

22)Co rozumiesz pod pojęciem JAD (Joint Application Design lub Development) w metodyce RAD?

Zaangażowanie klienta lub użytkownika w proces tworzenia oprogramowania, poprzez wprowadzenie warsztatów współprojektowania zwanych sesjami JAD.

23)Czy Delphi jest narzędziem RAD?
● Tak, bo spełnia wymagania stawiane narzędziom RAD Delphi to środowisko programistyczne udostępniające: – Graficzny interfejs użytkownika – Język Object Pascal – Skalowalny interfejs do baz danych – Bezpośredni dostęp do interfejsu API Windows – Warstwę sieciowa (DCOM, MIDAS, CORBA, Internet) – Zintegrowany debugger – Biblioteki komponentów – Możliwość tworzenia własnych zestawów narzędzi (nie we wszystkich wersjach) – Organizację projektów

24)Z jakich elementów składa się standardowy moduł Delphi?
Standardowo moduł Delphi zawiera: moduł – nazwa „przestrzenii nazw” interfejs widoczny dla pozostałych modułów • dołączone moduły • deklaracje typó zdefiniowanych w module • zmienne globalne dla całej aplikacji ● prywatą przestrzeń widoczną wyłącznie dla obiektów modułu
● ●

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.”

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.

27)2Czy przy zastosowaniu okien dialogowych modalnych działają timery? Odpowiedź uzasadnij.
Okna modalne i nie modalne mogą służyć jako przykład kontroli przepływu informacji synchroniczny i asynchroniczny. (Delphi) Modalne (przepływ synchroniczny) – kontrola wraca do kodu dopiero po zamnięciu okna modalnego. – do pozostałych okien programu wstrzymane są komunikaty myszki i klawiatury (ale dochodzą komunikaty zegara!) Nie modalne (przepływ asynchroniczny) – kontrola programu wraca natychmiast do następnej linii kodu – musimy sprawdzać kiedy użytkownik zamknął okno, aby otrzymać ostateczny stan

28)Na czym polega dziedziczenie projektu wizualnego formularza? Opisz znane ci technologie (1 lub 2).
Następnie Projektujemy okno postępu

Nazwa formularza: Name = frmKrokPostep o Będziemy się do niego odwoływać z poprzedniego kroku. o ProgressBar1: TProgressBar o Timer1: TTimer (do symulacji) Uzupełniamy kod frmKrokPostep o Poprawiamy metodę obsługującą przycisk Dalej z poprzedniego kroku aby pokazała nasz formularz postępu

Należy jeszcze w kilku miejscach dołączyć inne moduły ('unit')

29) Przedstaw koncencepję zastosowania Microsoft Windows Custom Controls do realizacji projektów widoków abstrakcyjnych.
Na początku zdefiniujemy widoki abstrakcyjne na poziomie obiektów. – Staramy się przewidzieć jakie widoki danych obiektów będą nam potrzebne. Na przykładzie Widoki: Telefonistki Widoki abstrakcyjne: Zlecenie Widoki abstrakcyjne: Lokalizacja Np.:

Definiujemy co musi znajdować się na poszczególnych ekranach (najlepiej związanych z przypadkami użycia, czyli najkorzystniej z scenariuszami) Szablony – prezentujemy jak będzie rozmieszczona strona( system – layout ), w poszczególnych stanach ( np. szablon telefonistki strona powitalna ) ( np. Edycja zlecenia przez Telefonistkę )

30)Do czego służy Windows Workflow Foundation w .NET 3.x? Jak ta technologia jest związana z UML?
SLAJD str 7,14 z wyk6b 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) Jedna technologia workflow na Windows – Ale – rozszerzalna Framework zarówno do budowy systemowych (automatycznych) przepływów jak i tych sterowanych przez człowieka (wybór; UI itp.) Nie jest to serwer - framework, API, DLL – Serwer można zbudować – Przykład: SharePoint 3.0 W środku: – „Tylko” maszyna stanu + sekwencje – +Designer ● Lub XAML – +Usługi (services)

31)Do czego służy i co to jest XAML?
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.

33)Czym różni się wzorzec MVC od wzorca architektury warstwowej?
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.

34)Kiedy zmodyfikowany model MVC można uznać za architekturę warstwową?
Odp. Jak w pyt 33. Gdy widok nie kontaktuje się bezpośrednio z modelem, ale otrzymuje dane od kontrolera.

35)Do czego może służyć wzorzec Modelu Prezentacji?
• • • • Do reprezentacji stanu i zachowania prezentacji niezależnie od kontrolek GUI używanych na ekranie Stan ekranu nie znajduje się w kontrolkach lecz w modelu Model prezentacji może odwoływać się do wielu obiektów dziedziny aplikacji – nie jest zatem fasadą obiektów dziedziny Model prezentacji można uznać za pewną ‘abstrakcję’ niezależną od platformy GUI 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 Każda zmiana na ekranie automatycznie się propaguje do recordsetu i odwrotnie 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)

37)Z jakim wzorcem projektowym związany jest poniższy diagram sekwencji:

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.

39)Kiedy należy stosować wzorzec aplikacji WEB o nazwie „Front Controller”?
Dla skomplikowanej aplikacji Web aby osiągnąć wysoki wskaźnik ponownego użycia kodu oraz elastyczności przy jak najmniejszym duplikowaniu kodu. Gdy wspólna funkcjonalność jest dzielona przez wiele widoków. - Potrzebna jest centralizacja tej logiki aby uniknąć powtarzania się kodu. Gdy zbiór widoków wykorzystuje te same dane. - Najkorzystniejszym rozwiązaniem jest scentralizowane pobieranie danych. Czyli unikamy powtarzania się kodu odpowiedzialnego za pobieranie danych w poszczególnych widokach. Gdy potrzebne automatyczne testowanie. - Testować chcemy nie tylko model, ale także kontroler.

40)Przedstaw różnice między wzorcem kontrolera pasywnego i aktywnego w zastosowaniach dla aplikacji WEB.

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.

41)Dlaczego wzorzec „pośredni model prezentacji” pomaga stosować testy automatyczne?
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.

42)Czy .NET wspomaga realizację wzorca Front Controller? Odpowiedź uzasadnij.
W .Net implementacja jest skomplikowana ze względu na wbudowany i ściśle zintegrowany ze środowiskiem wzorzec Page Controllera.

– Potrzebna jest budowa całego silnika Front Controllera. – Należy stosować tylko i wyłącznie dla faktycznie rozbudowanych systemów.

– trudne testowanie w oddzieleniu od serwera aplikacji

43)Do czego można wykorzystać wzorzec Łańcuch Filtrów (Chain Filter)?
Ł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.

44) Jakie informacje przesyła się za pomocą komunikatów w interfejsach opartych na GUI?
Informacje przesyłane za pomocą komunikatów to np. Uruchomienie: exec, click, start, Uzyskanie kontroli (focus, onEnter itp.) Interakcja z klawiaturą i myszką Komunikacja między kontrolkami na ekranie Wystąpienie błędu Zmiana wartości (przez użytkownika) Komunikaty o tworzeniu kontrolki, usuwaniu, pokazywaniu, chowaniu Zmiana rozmiaru, uaktualnienie widoku Stoper (Timer) Komunikaty systemu operacyjnego Pojawienie się nowego urządzenia, itp...

45)W jakich bibliotekach występuje pętla obsługi komunikatów? Kiedy implementujemy ją sami, a kiedy jest zrealizowana przez bibliotekę.
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), W Win32 API sami musimy napisać pętle obsługi komunikatów np. GUIMessage * msg; while (( msg = waitForNextMessage() ) != null) { DispatchMessage( ApplicationHandle, msg ); if (msg == GUIQuitMessage) { PostQuitMessage( ApplicationHandle, msg ); break;

} }

46) W jaki sposób w .NET możemy obsługiwać własne komunikaty?
W .NET są co najmniej 2 metody własnej obsługi komunikatów: a. Wykorzystanie interfejsu IMessageFilter. Metoda oficjalnie promowana przez Microsoft. Tworzymy klasę Filter w której przesłaniamy metodę PreFilterMessage. using System; using System.Windows.Forms; public class MyFilter: ImessageFilter { public bool PreFilterMessage(ref Message aMessage) { if (aMessage.Msg==WM_AMESSAGE) { //obsługa } return false; } } Następnie rejestrujemy go w aplikacji MyFilter fFilter = new MyFilter(); Application.AddMessageFilter(fFilter); b. Przesłonięcie w klasie dziedziczącej z Control lub NativeWindow metody WinProc. W przypadku dziedziczenia z Control rozszerzymy funkcjonalność jakiejś specyficznej kontrolki.

47)Do czego służy program Spy++?
Udziela wyczerpujących informacji o wszystkich aktualnie działających procesach, wątkach, otwartych w nich oknach i elementach kontrolnych. Dzięki niemu możemy monitorować komunikaty i sprawdzać kiedy w jakiej kolejności są wywoływane.

48)Napisz przykład wywołania pętli komunikatów w: Qt, .NET, MFC.
.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; } };

49)Z jakich elementów składa się program graficznych napisany w WinAPI?
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)

50)Jaka jest struktura programu głównego w Delphi? Gdzie jest uruchamiana pętla obsługi komunikatów?
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. Petla komunikatów uruchomiana jest w procedurze Application.Run.

51)Do czego służy biblioteka GLUT?
Biblioteka GLUT (ang. OpenGL Utility Toolkit) to wieloplatformowe API obsługujące interfejs użytkownika (okna, myszka, klawiatura) przygotowane do współpracy z OpenGL. Została ona stworzona do robienia małych i średnich programów wykorzystujących OpenGL. Ze względu na popularność wiele nowszych bibliotek ma emulację poleceń z GLUT jak i też większość tutoriali OpenGL wykorzystuje GLUT jako podstawę programistyczną. Oto niektóre funkcje biblioteki GLUT: * definicja i zarządzanie oknami * monitorowanie myszy i klawiatury * rysowanie niektórych podstawowych brył geometrycznych (sześcianów, kuli oraz imbryczków Utah) * niektóre ograniczone funkcje przy tworzeniu wyskakujących okienek (ang. pop-up).

52)Czy MFC zastępowało Win 32 API? Odpowiedź uzasadnij.
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++.

53)Dlaczego powstało MFC?
Były jakby 3 powody. 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.

54)Do czego w MFC służą metody z przedrostkiem Afx...?
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.

55)Jakie informacje przechowuje delegacja w .NET?
przekopiowane ze slajdu bo nie ma co wymyślać.

Specjalna „struktura”, typ, w rzeczywistości w CIL klasa, która potrafi przechowywać wskaźnik (referencję) do metody statycznej lub obiektu, która ma zostać uruchomiona w momencie uruchomienia delegacji. W rzeczywistości delegacja w naturalny sposób potrafi przechowywać listę metod, które mają zostać uruchomione. ? Delegacja w ukryty sposób przechowuje informacje o: – nazwie wywoływanej metody – typie wywoływanego obiektu – argumentach wywoływanej metody – argumentach zwracanych przez wywoływaną metodę ? Delegacja przechowuje powyższe informacje w sposób ukryty, co oznacza, że nie jest to widoczne bezpośrednio dla programisty. Co więcej, programista zazwyczaj nie używa właściwości delegacji związanych z tym, że jest ona klasą. Jedną z ważniejszych cech delegacji jest to, że aby można jej było użyć trzeba ją utworzyć za pomocą operatora new , podobnie jak inne normalne klasy.

56)Zadeklaruj przykładową delegację oraz jej wywołanie.
public delegate int PassExam(string[] questions); private PassExam passExamListener; metoda obslugi: private int PassExamHandler(string[] questions) { //zrob cos return 5; } np. w konstruktorze klasy: this.passExamListener = new PassExam(PassExamHandler); a wywoładnie gdziekolwiek: string[] questions = new string[2]; this.passExamListener(questions);

57)Do czego zostało wprowadzone w .NET słowo kluczowe „event”? Podaj przykład.
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ą. przykład(np w poprzednim pytaniu) public delegate int PassExam(string[] questions); private event PassExam sprawdzPunkty; metoda obslugi identyczna: private int PassExamHandler(string[] questions)

{ //zrob cos return 5; } gdzies, np w konstruktorze: this.sprawdzPunkty += new PassExam(PassExamHandler); a wywołanie np. if(questions[next]==null) this.sprawdzPunty(questions);

58)Jak można obsłużyć komunikaty w .NET przy wykorzystaniu interfejsu IFilterMessage oraz przesłonięciu procedury WndProc?
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; } } ale to nie zadziala niestety ;) bo jeszcze klasie MyFilter nalezaloby dodac: Application.AddMessageFilter( this ); a zeby zdjac filtr: Application.RemoveMessageFilter( this ); drugi sposób to przeciążenie metody: protected override void WndProc(ref Message aMessage) { if (aMessage.Msg==WM_AMESSAGE) { //WM_AMESSAGE Dispatched //Let’s do something here //... }

} 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.

You're Reading a Free Preview

Pobierz
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->