===== INTERFACCIA GRAFICA ===== Da DVG - Il Dizionario dei Videogiochi \\ L'**interfaccia grafica** (in inglese **G**raphical **U**ser **I**nterface abbreviato **GUI**) è un paradigma di sviluppo che mira a consentire all'utente di interagire col [[computer]] manipolando graficamente degli oggetti, svincolandolo dall'obbligo di imparare una serie di comandi da impartire con la [[tastiera]] come invece avviene con le interfacce testuali command line interface (CLI). È lo strato di un'[[applicazione]] [[software]] che si occupa del dialogo con l'utente del sistema utilizzando un ambiente grafico. L'interfaccia grafica nei sistemi operativi moderni è concepita come la metafora di un piano di lavoro rappresentato dallo schermo (detto scrivania o desktop), con le icone a rappresentare i file (di cui alcune a forma di cartellina per le directory) e le finestre a rappresentare le [[applicazioni]]. Tale ambiente di lavoro, in cui si opera attraverso il [[puntatore]] comandato con il [[mouse]], è stato concettualizzato nei laboratori Xerox (progetto Alto) e implementato per la prima volta nel 1981 dalla Xerox stessa nel costoso Xerox Star. In seguito, tale paradigma venne ripreso da [[Apple]] con il poco fortunato [[Apple Lisa]], ma soprattutto con il rivoluzionario [[pc|personal computer]] [[Macintosh]] nel 1984. La prima versione a colori della GUI venne introdotta da [[Commodore]] con il suo [[Amiga]] nel 1985. La GUI, con la sua semplicità d'utilizzo, per anni ha contrastato le interfacce ostiche e complicate basate ancora sul vecchio principio della linea di comando (Command Line Interface), come UNIX e [[ms-dos|DOS]]. In seguito al successo del [[Macintosh]] e dell'[[Amiga]], queste caratteristiche innovative sono state mutuate da [[Microsoft]] con la creazione del proprio sistema operativo [[Windows]]. Attualmente tutti i sistemi operativi diffusi nel settore dei [[pc|personal computer]] sono dotati di una GUI che opera secondo gli stessi principi di quella originariamente studiata da Xerox. Ciò ha causato una evoluzione significativa nell'interazione tra [[computer]] e utente: grazie all'interfaccia grafica è possibile compiere molti compiti comuni e complessi senza il bisogno di un'approfondita conoscenza del funzionamento del [[computer]]. ===== Implementazione di interfacce grafiche: ===== I vari framework grafici possono fornire diversi tipi di astrazioni ai [[programmatori]] che vogliono costruire interfacce grafiche. Tra queste una molto diffusa e molto comoda è quella del Modello ad eventi con delegati. **Modello ad eventi con delegati:** |{{http://www.dizionariovideogiochi.it/lib/exe/fetch.php?cache=cache&media=maggio08:gui_-_delegate_event_model.png?300}}| \\ | //Modello ad eventi con delegati. Click me è la sorgente, in questo caso di tipo bottone, e ad essa è associata una coda di ascoltatori// | \\ //__Consideriamo tre entità fondamentali:__// * un controllo che funge da sorgente di eventi, * dei consumatori, a cui il controllo trasmette gli eventi * delle interfacce (nel senso più ampio del termine), ovvero delle regole di interazione tra ~oggetti~ //__Inoltre:__// * ogni consumatore deve essere progettato in modo da implementare l'interfaccia (a tempo di programmazione) * ogni consumatore si registra presso la sorgente, cioè dichiara di voler essere informato degli eventi da essa generati (a tempo di esecuzione) * Ogni volta che la sorgente deve generare un evento, per ognuno dei consumatori registrati, gli comunica l'evento seguendo il protocollo descritto dall'interfaccia ===== Voci correlate ===== * [[apple lisa|Lisa]] * [[Macintosh]] * [[Amiga]] * [[Microsoft Windows]]