interfaccia utente Æparte del sistema operativo che consente … laboratorio 8 - windows...dalla...
TRANSCRIPT
Fondamenti di Informatica II27. Laboratorio 8 – Windows Forms
Corso di Laurea in Ingegneria InformaticaA.A. 2008-20092° Semestre – Corso (A-M)Prof. Giovanni Pascoschi Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni2
Interfacce utente
Interfaccia utente parte del sistema operativo che consente all’uomo diinteragire con il computer
interfaccia utente è nata come interfaccia di tipo testuale (DOS e UNIX)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni3
Tipi di interfacce utente
Due sono i tipi di interfaccia più diffusi per interagire con un computer:
Interfacce a caratteri, anche dette a riga di comando (CLI, commandline interfaces)
Interfacce grafiche (GUI, graphical user interfaces), in particolare di tipo WIMP (Windows, Icons, Menus, Pointing device)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni4
L’evoluzione delle interfacce utente (1)
Interfaccia a caratteri DOS
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni5
Cosa distingue una interfaccia grafica dall’altra?
il tipo di metafora usata;
gli elementi costitutivi che l’utente può manipolare.
Tipi di interfacce grafiche
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni6
La metafora più utilizzata nei personal computer, oggi, è quella della “scrivania” (in inglese, desktop)
Dalla sua introduzione ad oggi sono state introdotte diverse interfacce alternative, ma nessuna ha avuto sinora successo
Tipi di interfacce grafiche
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni7
Interfaccia grafica Apple
L’evoluzione delle interfacce utente (2)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni8
Interfaccia grafica Windows 1.0
L’evoluzione delle interfacce utente (3)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni9
Interfaccia grafica Windows 3.0
L’evoluzione delle interfacce utente (4)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni10
Interfaccia grafica Windows 95
L’evoluzione delle interfacce utente (5)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni11
Interfaccia grafica SUN tridimensionale
L’evoluzione delle interfacce utente (6)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni12
Interfaccia grafica Windows VISTA
L’evoluzione delle interfacce utente (7)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni13
Interfaccia grafica Windows 7
L’evoluzione delle interfacce utente (8)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni14
Programmazione delle interfacce grafiche
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 un’applicazione GUI partendo completamente da zero
e’ necessario usare una libreria GUI pre-esistente
ogni piattaforma ha una propria libreria GUI
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni15
Le interfacce attuali, basate sulla metafora della scrivania, sono di tipo WIMP (Windows, Icons, Menus, Pointing device)
Gli elementi che le compongono vengono detti widget
Una “widget” è un elemento che fornisce informazioni all’utente o gli permette di interagire con il sistema operativo o con un’applicazione.
Programmazione delle interfacce grafiche
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni16
esempi di widget sono le icone, i menu, i pulsanti, le finestre, le barre di scorrimento, le caselle di testo, ecc
di solito è il sistema operativo a mettere a disposizione un insieme di widget.
Programmazione delle interfacce grafiche
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni17
Esempio di widgets in Windows
finestra
icona
pulsante
radiobox
barra deglistrumenti
icone diriduzione, ripristino e chiusura
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni18
Com’è fatta un’interfaccia grafica
La finestra è anche un contenitore, ossia un elemento grafico che necontiene degli altri
la barra del menu è un altro esempio di contenitore
la finestra puo’ contenere altri contenitori, come una matrioska o le scatolecinesi
gli elementi grafici piu’ complessi sono costituiti dall’unione di elementigrafici basilari
i vari elementi che sono presenti nel contenitore vengono chiamaticomponenti visuali
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni19
Le interfacce grafiche in C++ (1)
all’epoca di Windows 2.0 era necessario utilizzare una decina di istruzioniper creare una singola finestra grafica (vuota.....)
occorreva utilizzare un set di funzioni (API – Application ProgrammingInterface) basate sul C
furono poi introdotte le MFC - Microsoft Foundation Class che costituivanouna libreria di 200 classi con un modello ad oggetti stile C++ per le API diWin32 (Windows 95)
l’ambiente .NET (introdotto con Windows Vista) ha creato la WPF - WindowsPresentation Foundation accessibile interamente in .NET (anche WindowsXP SP1 ha nativamente il framework .NET)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni20
Le interfacce grafiche in C++ (2)
Windows Forms è una parte della libreria WPF che si occupa della gestionedelle finestre
Tramite un’estensione del C++ (chiamato CLI/CRL) è possibile utilizzare ilcodice destinato all’ambiente .NET anche con VC++
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni21
Le interfacce grafiche in C++ (3)
La differenza principale tra C++ e .NET è la gestione completamenteautomatica dell’allocazione e deallocazione della memoria impiegata percontenere le istanze degli oggetti
Il CLR mantiene un Heap separato da quello tradizionale chiamatoManaged Heap differenza tra variabili managed e unmanaged
Tutti i controlli Windows Forms sono contenuti nel namespaceSystem::Windows::Forms
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni22
Le interfacce grafiche in C++ (4)
Esempio di crezione di una finestra dal titolo “finestra”:
Form^ finestra = gcnew Form();
// gcnew è l’operatore di allocazione .NET// Form^ è il reference (come un puntatore) ad un oggetto di tipo
managed
la finestra cosi’ creata ha una serie di attributi e metodiesempio :finestra->Text = “Prova”;finestra->Width = 300; //larghezza in pixelfinestra->Height = 200; //altezza in pixel
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni23
Le interfacce grafiche in C++ (5)
Per creare una etichetta di testo (label):Label^ etichetta = gcnew Label( ); etichetta->Text=“Testo di prova”;
una volta creato il componente visuale, bisogna inserirlo in un contenitore
finestra->Controls->Add(etichetta);
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni24
Le interfacce grafiche in C++ (6)
Un evento è una qualsiasi interazione dell’utente con l’interfaccia utente
per esempio “premere il pulsante OK” in una finestra, la “selezione di unradiobox”, ecc.
per gestire un qualsiasi evento bisogna utilizzare un “gestore di evento”(blocco di codice) che permette di catturare l’evento eseguendo la relativaazione.
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni25
Documentazione MSDN sulle Windows Form
per reperire maggiori informazioni sulle Windows Forms riferirsi alla MSDN Library http://msdn.microsoft.com/en-us/library/dd30h2yb(VS.80).aspx
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni26
Esempi di progetti con Windows Form
1. 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 Giovanni27
Somma di due numeri con Forms (1° step)
Creazione progetto CLR (Common Resources Language) vuoto con nomesomma_numeri
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni28
Somma di due numeri con Forms (2° step)
Aggiunta elemento UI Windows Form con nome finestra1
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni29
Somma di due numeri con Forms (3° step)
Creazione interfaccia grafica (utilizzando Casella degli Strumenti)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni30
Somma di due numeri con Forms
3° step creazione finestra (form) con gli oggetti grafici, utilizzando ilmenu 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, secondonumero, somma;associazione al bottone di comando del testo (Text) : OK
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni31
Somma di due numeri con Forms (3° & 4° step)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni32
Somma di due numeri con Forms (5° step)
5° step doppio click sul bottone di comando inserimento nel corpodel metodo button1_Click delle seguenti istruzioni:
acquisisci_dati( ); // funzione per acquisire i datiPRIMO->Clear( ); // metodo per ripulire la TextformSECONDO->Clear( ); // metodo per ripulire la Textform
e inserimento del prototipo della funzione nella sezione public:void acquisisci_dati( );
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni33
Somma di due numeri con Forms (5° step)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni34
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 doublenum2 = Convert::ToDouble(SECONDO->Text); // convertire da stringa “managed” a doubletot=num1+num2;SOMMA->Text=Convert::ToString(tot); // convertire da double a stringa “managed”
}
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni35
Somma di due numeri con Forms (6° step)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni36
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
}
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni37
Somma di due numeri con Forms (7° step)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni38
Somma di due numeri con Forms (output)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni39
Prodotto di due numeri complessi con Forms (step 1)
nome progetto primo_CLRCreazione della finestra display cosi’ come qui evidenziato (reale1,
immaginario1, reale2, immaginario2, reale3, immaginario3)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni40
Prodotto di due numeri complessi con Forms (step 2)
gestione dell’evento click sul bottone OK
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni41
Prodotto di due numeri complessi con Forms (step 3)
file display.cpp
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni42
Prodotto di due numeri complessi con Forms
inclusione della dichiarazione della classe complesso : complessi1.h
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni43
Prodotto di due numeri complessi con Forms
alcuni metodi della classe complesso : complessi1.cpp
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni44
Prodotto di due numeri complessi con Forms (step 4)
creazione main per partenza Form
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni45
Prodotto di due numeri complessi con Forms (output)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni46
Inserimento di dati da memorizzare in un file con Forms
inserimento dipendenti in un archivio aziendale1 Label, 4 Textbox + 1 radiobutton + 3 buttons (inserimento altro dipendente,annulla dati, fine programma) + Menu File con exit
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni47
Inserimento di dati da memorizzare in un file con Forms (1° step)
creazione Form di nome finestra1 (con textform, label e button)nomi textbox IDC_matricola, IDC_cognome, IDC_nome, IDC-stipendio
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni48
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 GroupBoxproprietà radiobutton “impiegato” checked = trueproprietà radiobutton “dirigente”
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni49
Inserimento di dati da memorizzare in un file con Forms (3° step)
selezione Menustripclick nella finestra1 digitare File digitare nel submenu Esci
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni50
Inserimento di dati da memorizzare in un file con Forms (4° step)
aggiungere un’altra Form di nome finestra2inserire la label “Dati salvati correttamente”
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni51
Inserimento di dati da memorizzare in un file con Forms (5° step)
facendo doppio click su Altro dip. e Annulla aggiungere le seguenti istruzioni
OK
Annulla
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni52
Inserimento di dati da memorizzare in un file con Forms (6° step)
Nel file finestra1.cpp inserire le istruzioni riportate nell’immagineoccorre convertire le stringhe “managed” in stringhe “unmanaged” tramite il
casting con la funzione di conversione StringToHGlobalAnsiIDC_impiegato->Checked controlla se è stato selezionato il radiobuttonal termine viene richiamata l’istanza della Form finestra2 e viene eseguito il metodo
ShowDialog
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni53
Inserimento di dati da memorizzare in un file con Forms (7° step)
creazione main per partenza Form
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni54
Inserimento di dati da memorizzare in un file con Forms (8° step)
facendo doppio click su Fine e Esci aggiungere le seguenti istruzioni Fine
Esci
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni55
Inserimento di dati da memorizzare in un file con Forms (output)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni56
Inserimento di dati da memorizzare in un file con Forms (output)
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni57
Esercizio n.1
Implementare tramite Windows Forms la seguente applicazione chepermette di usare una calcolatrice tascabile
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni58
Esercizio n.2
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
Fondamenti di Informatica II – A.A. 2008-2009 a cura di Pascoschi Giovanni59
Analisi degli esercizi risolti dagli studenti
Analisi degli esercizi risolti dagli studentipila con vectorpila con list