Export page to Open Document format

13 - Princípy grafických užívateľských rozhraní

  •  je souhrn způsobů, jakými lidé (uživatelé) ovlivňují chování strojů, zařízení, počítačových programů či komplexních systémů
  • Uživatelské rozhraní počítače zpracovává:
    1. vstupy od uživatele, kterými se prostředí ovládá
    2. výstupy, které prezentují výsledky uživatelových vstupů
  • Typy rozhraní:
    • grafické uživatelské rozhraní – nejrozšířenější rozhraní pro desktop
    • textové uživatelské rozhraní – s menu, tlačítky, ovládání klávesnicí a myší
    • příkazový řádek – příkazy se zadávají zápisem pomocí klávesnice
    • braillský řádek – zařízení pro převod textu do slepeckého písma

Komunikačné kanály

  • Obraz - vysoká priepustnosť, „náhodný prístup“, len smer počítač → človek
  • Zvuk - nižšia priepustnosť, „sériový prístup“, neodvádza pozornosť zraku, dôležitá upozorňovacia funkcia (keď som v kancelárii tak poplach počujem, ale keby mi len začala blikať nejaká kontrolka tak si to nemusím všimnúť), komunikácia oboma smermi
  • Hmat - v súčastnosti používaný na komunikáciu človek → počítač (ale existujú výnimky - zariadenia pre slepých, herné zariadenia)
  • čuch, chuť - v súčastnosti nepoužiteľné
  • elektrické signály - voperovať niečo do človeka a komunikovať priamo pomocou signálov - momentálne experimentálne, ale spoločensky neprijateľné

Periférne zariadenia

Obraz

  • tlačiareň - vyrába trvalé kópie dokumentov z počítača
  • displej - „obyčajné displeje“ - statický obsah, napr. zobrazí dialógový box, môžme tam písať, ale kým niečo nepíšeme tak sa nič nedeje
  • videosystém - zariadenia, ktoré zobrazia minimálne 6 obrazov za sekundu v dostatočnom rozlíšení (napr. prehrávané video) - typicky PC
  • systém virtuálnej reality - sú schopné generovať niekoľko obrazov za sekundu z popisu scény a zobraziť ich - väčšina moderných PC
  • systémy na získavanie a spracovanie obrazu

Zvuk

  • záznam zvuku - pomocou vzorkovania, rôzna kvalita systémov
  • reprodukcia zvuku - reprodukujú zvuk zaznamenanými
  • rozpoznávanie reči - rozpoznajú význam zvuku a reči - zatiaľ technicky nezvládnuté
  • generovanie zvuku - dokážu generovať zvuk, môžu byť špecializované (hudba, reč)

Hmat

  • klávesnica - najobvyklejšie zariadenie na predávanie informácie človekom do počítača
  • myš - zariadenie na grafickú komunikáciu v 2D súradniciach
  • zariadenia pre záznam kresby a rozpoznávanie - touchpad, touchscreen, multitouch display

Popis užívateľského rozhrania programovacími jazykmi

  • textovo priamo - tradičná a veľmi neefektívna cesta (napíšeme program v ktorom sú priamo natvrdo zakódované prvky UI)
  • textovo rámcovo - používa sa dosť výnimočne (Tcl/Tk), len popíšeme čo má rozhranie obsahovať, ale nie presné rozmiestnenie prvkov - výhodou je, že funguje na všetkých platformách, nevýhodou je, že nevieme ako presne to rozhranie bude vyzerať (keď potrebujeme vedieť počet pixelov)
  • WYSIWYG - naklikáme si UI pomocou nejakých prefabrikovaných prvkov, nevýhodou je, že bude s najväčšou pravdepodobnosťou fungovať len na 1 platforme (nedá sa preniesť 1:1, lebo na inej platforme by to vyzeralo divno)

Udalosťami riadený systém

  • program obvykle nerobí nič, až keď mu príde udalosť od užívateľa tak vykoná nejakú akciu (napr. vypíše písmeno do textového poľa)
  • príklad - zadávanie textu do boxu, použije sa konečný automat
  • Implementácia miestom v programe:
    • stále cyklíme kým nedostaneme užívateľský vstup a potom vykonáme akciu (skok pomocou goto)
    • výhody - je to jednoduché a prirodzené (pre programátora)
    • nevýhody - ťažko modifikovateľné, ťažko rozšíriteľné
  • Implementácia stavovou premennou:
  • switch podľa aktuálneho stavu (stav editovaného riadku) a v každej case „vetve“ ďalší switch podľa stlačenej klávesy
  • výhody - lepšie modifikovateľné, ľahko rozšíriteľné
  • nevýhody - zložitejší automat
  • na základe tohto prístupu fungujú udalosťami riadené systémy - existuje nejaký centrálny „zberač“, ktorý zachytáva všetky vstupy a posiela ich príslušným oknám/aplikáciám, arbiter rozhoduje aký podprogram sa má zavolať (obvykle podľa polohy kurzora - napr. keď klikneme na X pre zavretie okna…)

Správy

  • technicky sa to rieši pomocou posielania správ - hlavný arbiter dostane po stlačení klávesy správu o udalosti, zistí aké okno má focus a tomu tú správu pošle (správy sú spracovávané na základe okien, každé okno musí byť schopné prijať správu)
  • štruktúra správy:
    • int Msg - typ správy (čo to je za správu - stlačenie klávesy, pohyb myši, užívateľsky definované správy…)
    • int Window - okno, pre ktoré je správa určená (každé okno má svoje jednoznačné číslo)
    • int Param1 - parameter správy (závislé na type správy - napr. ASCII kód klávesy, súradnica pohybu myši…)
    • int Param2 - parameter správy
  • v praxi - každé okno musí mať nejakú funkciu (v C napr. exportovanú funkciu), ktorá slúži na obsluhu prichádzajúcej správy, potom OS zavolá túto funkciu
  • v OO jazykoch - je nejaká metóda HandleAll(), ale tá len volá iné metódy, ktoré obsluhujú samotné správy, takže stačí preťažiť metódu na obsluhu konkrétnej správy, nie ručne písať obsluhu každej jednej správy
    • príklad:
    class Window
    {
      virtual void HandleAll(Message)
      {
        switch(Message.Msg)
        {
          ...
        }
      }
      virtual void OnButton(...);
      virtual void OnMouse(...);
      virtual void OnTimer(...);
      ...
    }										 
    
    class MyWindow: public Window
    {
      void OnButton(...);
      ...
    }

Programy vo Windows

  • programy s resource - samostatný návrh GUI, súbor “.rc“, ten sa preloží (vznikne súbor “.res“) a následne zlinkuje so zdrojovým súborom, názvy jednotlivých prvkov rozhrania sú definované v hlavičkovom súbore
  • čísla správ:
    • globálne - preddefinované (nedajú sa meniť, sú ich tisíce)
    • užívateľské lokálne - WM_USER+konštanta - dajú sa používať interne v rámci programu
    • užívateľské globálne - platné v rámci sedenia vo Windows, vo všetkých aplikáciách majú rovnaké číslo
  • okná:
    • WindowRect - oblasť celého okna
    • ClientRect - oblasť do ktorej sa kreslí
    • stav, súradnice, titulky, ikony, okraje, typ
  • device context:
    • kreslenie obsahu okien
    • abstraktná kresliaca oblasť, ktorá má rozmery a atribúty (napr. aktuálny typ čiary)
    • nie je totožný s oknom (je väčší, umožňuje kresliť na displej ale aj na tlačiareň)
    • aktuálne zobrazený obsah okna nie je vo Windows uchovávaný
    • každé okno musí byť kedykoľvek schopné vykresliť svoj obsah (na základe správy WM_PAINT)
    • obmedzenie obsahu vykresľovania na to, čo je vidieť je automatické a nedá sa moc ovplyvniť (skryté časti okna sa neprekresľujú)
    • dá sa aktívne obmedziť vykresľovanie na viditeľnú oblasť, ak sa to v programe oplatí (funkcia GetUpdateRect())
    • Windows grafický subsystém uchováva informáciu o tom, ktorá časť ktorých okien je správne vykreslená, oblasť sa stane neplatnou napr. „odkrytím“, vtedy pošle Windows správu WM_PAINT aplikácii, keď to chce aplikácia tak zavolá funkciu InvalidateRect()

Zdroj

Potvrzení

13
Celé jménoOK!!!
roman jasho2011-03-02 16:55:43 
Jirka Hynek2011-04-27 13:39:05 
 2

Diskuze

vagyvagabund, 2011/04/12 20:57

k tem UI by chtelo dopsat neco jako obecnej pohled, co to vlatne je UI, s cim se cloveka potkava a co je potreba resit

Jirka Hynekgeorge, 2011/04/27 13:38

Nakopčil jsem tu obecný úvod, co je na wp, myslím, že je to takto OK.

Vložte svůj komentář
 
temata/13-principy_ui/main.txt · Poslední úprava: 2011/05/06 17:32 autor: vagabund
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki