Interfacce utente
Interfaccia utente Æ parte del sistema operativo che consente all’uomo di
interagire con il computer
interfaccia utente è nata come interfaccia di tipo testuale (DOS e UNIX)
Fondamenti di Informatica II
27. Laboratorio 8 – Windows Forms
Corso di Laurea in Ingegneria Informatica
A.A. 2008-2009
2° Semestre – Corso (A-M)
Prof. Giovanni Pascoschi
2
Tipi di interfacce utente
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
L’evoluzione delle interfacce utente (1)
Interfaccia a caratteri DOS
‰ Due sono i tipi di interfaccia più diffusi per interagire con un computer:
¾ Interfacce a caratteri, anche dette a riga di comando (CLI, command
line interfaces)
¾ Interfacce grafiche (GUI, graphical user interfaces), in particolare di
tipo WIMP (Windows, Icons, Menus, Pointing device)
3
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
4
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Tipi di interfacce grafiche
Tipi di interfacce grafiche
‰ Cosa distingue una interfaccia grafica dall’altra?
‰ La metafora più utilizzata nei personal computer, oggi, è quella della
“scrivania” (in inglese, desktop)
¾ il tipo di metafora usata;
¾ gli elementi costitutivi che l’utente può manipolare.
‰ Dalla sua introduzione ad oggi sono state introdotte diverse
interfacce alternative, ma nessuna ha avuto sinora successo
5
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
6
L’evoluzione delle interfacce utente (2)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
L’evoluzione delle interfacce utente (3)
Interfaccia grafica Windows 1.0
Interfaccia grafica Apple
7
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
8
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
L’evoluzione delle interfacce utente (4)
L’evoluzione delle interfacce utente (5)
Interfaccia grafica Windows 3.0
9
Fondamenti di Informatica II – A.A. 2008-2009
Interfaccia grafica Windows 95
a cura di Pascoschi Giovanni
10
L’evoluzione delle interfacce utente (6)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
L’evoluzione delle interfacce utente (7)
Interfaccia grafica SUN tridimensionale
11
Fondamenti di Informatica II – A.A. 2008-2009
Interfaccia grafica Windows VISTA
a cura di Pascoschi Giovanni
12
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
L’evoluzione delle interfacce utente (8)
Programmazione delle interfacce grafiche
Interfaccia grafica Windows 7
‰ programmare una GUI (Graphical User Interface) è molto complesso
‰ e’ necessaria molta programmazione a livello grafico
‰ sono necessari molti elementi grafici (pulsanti, menu’, icone, ecc)
‰ non è praticabile costruire
completamente da zero
un’applicazione
GUI
partendo
‰ e’ necessario usare una libreria GUI pre-esistente
‰ ogni piattaforma ha una propria libreria GUI
13
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
14
Programmazione delle interfacce grafiche
a cura di Pascoschi Giovanni
Programmazione delle interfacce grafiche
‰ Le interfacce attuali, basate sulla metafora della scrivania, sono di
tipo WIMP (Windows, Icons, Menus, Pointing device)
‰ esempi di widget sono le icone, i menu, i pulsanti, le finestre, le barre
di scorrimento, le caselle di testo, ecc
‰ Gli elementi che le compongono vengono detti widget
‰ di solito è il sistema operativo a mettere a disposizione un insieme di
widget.
‰ Una “widget” è un elemento che fornisce informazioni all’utente o
gli permette di interagire con il sistema operativo o con
un’applicazione.
15
Fondamenti di Informatica II – A.A. 2008-2009
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
16
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Esempio di widgets in Windows
Com’è fatta un’interfaccia grafica
icona
barra degli
strumenti
radiobox
icone di
riduzione,
ripristino e
chiusura
La finestra è anche un contenitore, ossia un elemento grafico che ne
contiene degli altri
la barra del menu è un altro esempio di contenitore
la finestra puo’ contenere altri contenitori, come una matrioska o le scatole
cinesi
gli elementi grafici piu’ complessi sono costituiti dall’unione di elementi
grafici basilari
finestra
i vari elementi che sono presenti nel contenitore vengono chiamati
componenti visuali
pulsante
17
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
18
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Le interfacce grafiche in C++ (1)
Le interfacce grafiche in C++ (2)
all’epoca di Windows 2.0 era necessario utilizzare una decina di istruzioni
per creare una singola finestra grafica (vuota.....)
Windows Forms è una parte della libreria WPF che si occupa della gestione
delle finestre
occorreva utilizzare un set di funzioni (API – Application Programming
Interface) basate sul C
Tramite un’estensione del C++ (chiamato CLI/CRL) è possibile utilizzare il
codice destinato all’ambiente .NET anche con VC++
furono poi introdotte le MFC - Microsoft Foundation Class che costituivano
una libreria di 200 classi con un modello ad oggetti stile C++ per le API di
Win32 (Windows 95)
l’ambiente .NET (introdotto con Windows Vista) ha creato la WPF - Windows
Presentation Foundation accessibile interamente in .NET (anche Windows
XP SP1 ha nativamente il framework .NET)
19
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
20
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Le interfacce grafiche in C++ (3)
Le interfacce grafiche in C++ (4)
La differenza principale tra C++ e .NET è la gestione completamente
automatica dell’allocazione e deallocazione della memoria impiegata per
contenere le istanze degli oggetti
Esempio di crezione di una finestra dal titolo “finestra”:
Il CLR mantiene un Heap separato da quello tradizionale chiamato
Managed Heap Æ differenza tra variabili managed e unmanaged
// gcnew è l’operatore di allocazione .NET
// Form^ è il reference (come un puntatore) ad un oggetto di tipo
managed
Form^ finestra = gcnew Form();
Tutti i controlli Windows Forms sono contenuti nel namespace
System::Windows::Forms
21
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
la finestra cosi’ creata ha una serie di attributi e metodi
esempio :
finestra->Text = “Prova”;
finestra->Width = 300; //larghezza in pixel
finestra->Height = 200; //altezza in pixel
22
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Le interfacce grafiche in C++ (5)
Le interfacce grafiche in C++ (6)
Per creare una etichetta di testo (label):
Label^ etichetta = gcnew Label( );
etichetta->Text=“Testo di prova”;
Un evento è una qualsiasi interazione dell’utente con l’interfaccia utente
per esempio “premere il pulsante OK” in una finestra, la “selezione di un
radiobox”, ecc.
una volta creato il componente visuale, bisogna inserirlo in un contenitore
per gestire un qualsiasi evento bisogna utilizzare un “gestore di evento”
(blocco di codice) che permette di catturare l’evento eseguendo la relativa
azione.
finestra->Controls->Add(etichetta);
23
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
24
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Documentazione MSDN sulle Windows Form
Esempi di progetti con Windows Form
per reperire maggiori informazioni sulle Windows Forms riferirsi alla MSDN
Library Æ http://msdn.microsoft.com/en-us/library/dd30h2yb(VS.80).aspx
25
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
26
Somma di due numeri con Forms (1° step)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Programma di somma di due numeri (progetto somma_numeri)
2.
Programma di somma di due numeri complessi (progetto primo_CLR)
3.
Programma di immissione dati da memorizzare in un file (progetto azienda)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (2° step)
Aggiunta elementoÆ UI Æ Windows Form con nome finestra1
Creazione progetto CLR (Common Resources Language) vuoto con nome
somma_numeri
27
1.
28
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (3° step)
Somma di due numeri con Forms
Creazione interfaccia grafica (utilizzando Casella degli Strumenti)
29
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
30
Somma di due numeri con Forms (3° & 4° step)
3° step Æ creazione finestra (form) con gli oggetti grafici, utilizzando il
menu degli strumenti sulla destra Æ creazione di tre TextBox, tre Label e
un button di comando
4° step Æ agendo sulle proprietà
¾associazione dei nomi (Name) alle Textform : PRIMO, SECONDO,
SOMMA;
¾associazione alle tre label dei testi (Text) : primo numero, secondo
numero, somma;
¾associazione al bottone di comando del testo (Text) : OK
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (5° step)
5° stepÆ doppio click sul bottone di comando Æ inserimento nel corpo
del metodo button1_Click delle seguenti istruzioni:
acquisisci_dati( );
// funzione per acquisire i dati
PRIMO->Clear( );
// metodo per ripulire la Textform
SECONDO->Clear( ); // metodo per ripulire la Textform
e inserimento del prototipo della funzione nella sezione public:
void acquisisci_dati( );
31
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
32
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (5° step)
Somma di due numeri con Forms (6° step)
6° stepÆ selezionare il file finestra1.cpp e aggiungere le seguenti istruzioni
#include “finestra1.h"
#include <iostream>
using namespace std;
using namespace System::Runtime::InteropServices; // per gestire le conversioni di formato
void somma_numeri::finestra1::acquisisci_dati( )
{
double num1, num2, tot;
num1 = Convert::ToDouble(PRIMO->Text); // convertire da stringa “managed” a double
num2 = Convert::ToDouble(SECONDO->Text); // convertire da stringa “managed” a double
tot=num1+num2;
SOMMA->Text=Convert::ToString(tot); // convertire da double a stringa “managed”
}
33
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
34
Somma di due numeri con Forms (6° step)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (7° step)
7° stepÆcreare il file main.cpp e aggiungere le seguenti istruzioni
#include <iostream>
#include <string>
#include “finestra1.h"
using namespace std;
int main( ){
somma_numeri::finestra1 Inizia; /*crea istanza Inizia della classe
finestra1 del namespace somma_numeri*/
Inizia.ShowDialog();
// richiama il metodo ShowDialog
}
35
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
36
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (7° step)
37
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Somma di due numeri con Forms (output)
38
Prodotto di due numeri complessi con Forms (step 1)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
a cura di Pascoschi Giovanni
Prodotto di due numeri complessi con Forms (step 2)
nome progetto primo_CLR
Creazione della finestra display cosi’ come qui evidenziato (reale1,
immaginario1, reale2, immaginario2, reale3, immaginario3)
39
Fondamenti di Informatica II – A.A. 2008-2009
gestione dell’evento click sul bottone OK
40
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Prodotto di due numeri complessi con Forms (step 3)
Prodotto di due numeri complessi con Forms
file display.cpp
41
Fondamenti di Informatica II – A.A. 2008-2009
inclusione della dichiarazione della classe complesso : complessi1.h
a cura di Pascoschi Giovanni
42
Prodotto di due numeri complessi con Forms
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
a cura di Pascoschi Giovanni
Prodotto di due numeri complessi con Forms (step 4)
alcuni metodi della classe complesso : complessi1.cpp
43
Fondamenti di Informatica II – A.A. 2008-2009
creazione main per partenza Form
44
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Prodotto di due numeri complessi con Forms (output)
Inserimento di dati da memorizzare in un file con Forms
inserimento dipendenti in un archivio aziendale
1 Label, 4 Textbox + 1 radiobutton + 3 buttons (inserimento altro dipendente,
annulla dati, fine programma) + Menu File con exit
45
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
46
Inserimento di dati da memorizzare in un file con Forms (1° step)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
a cura di Pascoschi Giovanni
Inserimento di dati da memorizzare in un file con Forms (2° step)
creazione GroupBox Ædrag nella FormÆtasto destro mouse “Porta in secondo piano”
selezione radiobutton Æclick nell’area del GroupBox
proprietà radiobutton “impiegato”Æ checked = true
proprietà radiobutton “dirigente”
creazione Form di nome finestra1 (con textform, label e button)
nomi textbox Æ IDC_matricola, IDC_cognome, IDC_nome, IDC-stipendio
47
Fondamenti di Informatica II – A.A. 2008-2009
48
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
49
Inserimento di dati da memorizzare in un file con Forms (3° step)
Inserimento di dati da memorizzare in un file con Forms (4° step)
selezione Menustrip Æ
click nella finestra1Ædigitare FileÆdigitare nel submenu Esci
aggiungere un’altra Form di nome finestra2
inserire la label “Dati salvati correttamente”
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
50
Inserimento di dati da memorizzare in un file con Forms (5° step)
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Inserimento di dati da memorizzare in un file con Forms (6° step)
Nel file finestra1.cpp inserire le istruzioni riportate nell’immagine
occorre
convertire
le
stringhe
“managed”
in
stringhe
“unmanaged”
tramite
il
casting con la funzione di conversione StringToHGlobalAnsi
IDC_impiegato->Checked controlla se è stato selezionato il radiobutton
al termine viene richiamata l’istanza della Form finestra2 e viene eseguito il metodo
ShowDialog
facendo doppio click su Altro dip. e AnnullaÆaggiungere le seguenti istruzioni
OK
Annulla
51
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
52
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Inserimento di dati da memorizzare in un file con Forms (7° step)
Inserimento di dati da memorizzare in un file con Forms (8° step)
creazione main per partenza Form
facendo doppio click su Fine e EsciÆaggiungere le seguenti istruzioni
Fine
Esci
53
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
54
Inserimento di dati da memorizzare in un file con Forms (output)
55
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Inserimento di dati da memorizzare in un file con Forms (output)
56
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Esercizio n.1
Esercizio n.2
Implementare tramite Windows Forms la seguente applicazione che
permette di usare una calcolatrice tascabile
57
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Analisi degli esercizi risolti dagli studenti
Analisi degli esercizi risolti dagli studenti
¾pila con vector
¾pila con list
59
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Implementare l’esercizio sui file C++ relativo alla segreteria di una scuola
(accesso diretto) inserendo i dati nel file tramite una Windows Form,
lasciando inalterate le altre funzionalità richieste
58
Fondamenti di Informatica II – A.A. 2008-2009
a cura di Pascoschi Giovanni
Scarica

Laboratorio 8 - Windows Forms