Camuso Dot It
accelera il tuo apprendimento
HOME Esercizi Videolezioni
Videoesercizi Links


Visual Studio C# e componenti .NET corso base (parti aggiornate ed aggiunte diverse altre lezioni)


Playlist completa su youtube : clic qui

Parte dei contenuti della playlist

- prerequisiti
- come procurarsi l'IDE Visual Studio 2005 - C# (free dal sito Microsoft, nessuna scadenza)
- creare la prima applicazione WinForms
- cenni sull'uso del debugger integrato
- controllare i principali pannelli nell'IDE
- Soluzioni e progetti
- Struttura della cartella di progetto
- Eseguire l'applicazione fuori dall'IDE
- Alcuni (brevi) richiami teorici in tema di OOP: modularità, information hiding; il salto di qualità richiesto alla OOP (cenni all'incapsulamento ed all'ereditarietà come filosofie di sviluppo)
- confronto tra le tecniche tradizionali (con una breve parentesi sull'uso delle struct) e OOP per la rappresentazione di un oggetto del mondo reale; criticità dell'approccio non OOP
- l'incapsulamento con C#: classi ed istanze (oggetti), stato interno e metodi
- un esempio concreto: inizio di un progetto 'MiniCAD'; definizione di una classe per rappresentare punti sullo schermo, come riferirsi ai colori (struct Color di system.drawing); namespace e using (comprimere ed espandere regioni di codice), livello di visibilità public e private, creazione di un oggetto, comando new , il costruttore e la sua importanza, ridefinire il costruttore base, significato del reference ad un oggetto prima e dopo il comando new;
- creare oggetti dal codice di gestione di un evento: cenni al significato del parametro sender e del parametro eventargs dei gestori degli eventi.
- aggiungere un metodo 'disegna' alla classe dei punti per 'accendere' punti sulla superficie grafica dei controlli
- il metodo CreateGraphics dei controlli e le primitive grafiche richiamabili dall'oggetto restituito
- metodo DrawRectangle ed esame delle sue versioni overloaded
- l'oggetto grafico Pen; utilizzo delle 'penne' predefinite
-  programmare il gestore dell'evento click di un bottone: casting del parametro EventArgs di quest'ultimo verso un evento di tipo MouseEventArgs
- aggiungere altri costruttori ad una classe
- Utilizzo dell'oggetto Random per estrarre numeri casuali (metodo NextDouble())
- Utilizzo della classe Math (metodo Ceiling() per arrotondare un numero)
- Membri statici di una classe
- Programmare in modo differenziato il click destro/sinistro (accedendo alle proprietà dell'evento MouseEventArgs): con il mouse destro si seleziona un colore con il dialog box standard di Windows e con il sinistro si disegnano punti sulla form;
- breve parentesi sull'uso delle enumerazioni (enum) per comprendere come il framework rappresenti certi valori associati, ad esempio, allo stato del mouse o alla risposta data dall'utente all'apertura di un certo dialog box;
- differenza tra l'evento Click e MouseClick;
- introduzione teorica (breve) all'ereditarietà
- progetto delle classi per il miniCAD (figure, linee, rettangoli, quadrati, cerchi ecc.)
- cosa mettere a fattor comune nella classe base (figure): vantaggi
-  relazioni di composizione (una linea usa due punti come estremi) contrapposte a quelle di ereditarietà (relazioni is-a)
- qualche definizione: cllassi base, superclassi, antenate, madri, derivate, discendenti, figlie ecc.
- riorganizzazione e pulizia nel vecchio progetto di esempio per sfruttare l'ereditarietà
- implementazione della classe delle figure
- uso della keyword this per accedere alle variabili dello stato interno in caso di ambiguità con gli identificatori dei parametri di un metodo
- derivare la classe dei punti da quella delle figure
- inizializzare lo stato interno ereditato: accesso diretto ai membri tramite il livello di accessibilità protected; accesso tramite l'uso di metodi 'get' e 'set' (non si tratta delle properties, affrontate più avanti)
- costruttori della classe figlia che richiamano quelli della classe madre: keyword base come inizializzatore;
-utilizzo di this per richiamare da un costruttore un altro della stessa classe
- problema della non persistenza dei disegni su una form (verrà risolto più avanti)
- la classe delle linee
- aggiungere alla form una ToolStripBar (barra bottoni) per la scelta della figura da far disegnare (uso di Paint per realizzare velocemente delle icone 32x32 da usare come immagini per i bottoni sulla toolbar)
- scrivere un gestore di evento da associare a tutti i bottoni della toolbar per centralizzare la gestione dell'evento e scrivere meno codice e più facilmente manutenibile;
- gestire la proprietà checked per evidenziare di volta in volta il bottone in uso: uso del costrutto foreach per iterare su tutti i bottoni della toolbar e casting del parametro sender; uso del costrutto switch con le stringhe
- aggiungere al miniCad la possibilità di tracciare linee usando il mouse
- gestione dell'evento MouseDown e MouseUp per identificare gli estremi della linea da tracciare
- distinguere qual'è il bottone del mouse premuto in un certo momento
- aggiungere il disegno di rettangoli (con metodi per il calcolo del perimetro e dell'area: servono per esemplificare il meccanismo del late/dynamic binding più avanti)
- i quadrati come classe specializzata dei rettangoli: ridefinizione di un metodo per il calcolo del perimetro più efficiente
- conformità di tipo e static/early binding: esemplificazione con rettangoli e quadrati
- uso della keyword new per metodi nella classe figlia che devono oscurare quelli della classe madre
- aggiungere il disegno di ellissi
- gestione degli eventi keyDown e keyUp per far tracciare dei cerchi scegliendo come figura l'ellisse e tenendo premuto il tasto CTRL durante il disegno
- gestione dell'evento mouseMove per tracciare/cancellare in tempo reale la sagoma delle figure durante lo spostamento del mouse
-  aggiungere il disegno a mano libera
-  memorizzare le figure che vengono via via disegnate in una lista dinamica (ArrayList)
- attivare il late/dynamic binding (keyword virtual e override) sul metodo 'disegna'; breve confronto con le tecniche non OOP per capire le potenzialità di questo meccanismo
- gestione dell'evento paint per ridisegnare le figure quando la finestra viene spostata oltre i limiti dello schermo o viene nascosta dietro un'altra finestra: uso del foreach con la collezione ArrayList di figure
- Aggiunta di un ToolstripContainer in modo da poter agganciare ai lati della finestra le barre dei bottoni
- Aggiungere un menu all'applicazione: menu su più livelli, associare shortcut key (combinazioni di tasti per richiamare le voci del menu), associare un'immagine ad ogni voce del menu
- Dirottare gli eventi da un controllo ad un altro (oppure richiamare dal gestore di un evento di un controllo il gestore di un evento di un altro controllo)
- Richiamare da menu il dialog box standard di Windows per scegliere un file
- Aggiungere una seconda form all'applicazione e sua apertura da menu istanziando un nuovo oggetto tipo Form; differenza tra apertura normale e modale;
- Chiudere una form: differenza tra Close() e Hide() per il recupero di informazioni da una form
- Aggiunta di checkbox, radiobutton,  e textbox e principali proprietà / evento principale
- Interrogare lo stato dei controlli di una form dopo che è stata nascosta
- duplicare gli oggetti (ottenere una fila di checkbox)
- Programmare l'evento Load di una form per aggiungere tante righe ad una combo quanti sono i bottoni di una toolbar presente su un altra form; ogni riga viene costruita con informazioni specifiche estratte dalle proprietà di ogni bottone
- Generare controlli a run time su una form (un ArrayList di checkbox)
- Aggiungere gestori di eventi ai controlli creati a run time
- le properties, metodi get e set; separazione dell'implementazione interna dall'accesso esterno (trasformare la proprietà 'colore' delle figure nella property corrispondente; un assegnamento alla proprietà ridisegna la figura con il nuovo colore)
- cenni alla modifica dell'implementazione interna (cambio di tipo) della property colore per evidenziare come se si adattano i metodi get e set affinchè continuino a restituire i tipi di valori precedenti: per tutto il codice che usava la classe prima della modifica è come se non fosse cambiato niente
- file di testo: struttura, vantaggi e svantaggi;
- stream, streamreader e streamwriter;
- aggiungere righe ad un file di testo nuovo con il metodo  writeline;
- gestione asincrona dell'I/O: il problema del buffer e l'importanza di chiamare il metodo Close
-
aggiungere righe ad un file esistente senza perdere il vecchio contenuto
- gestione degli errori di Input/Output: le eccezioni; il costrutto try ... catch ... finally; throw
-
aggiungere al 'MiniCAD' il salvataggio su un file di testo di tutte le figure
- rileggere da disco i dati sulle figure da disegnare precedentemente salvati su un file di testo
- uso dell'oggetto streamReader
- gestione dell'eccezione sollevata quando non viene trovato un certo file
- metodo Peek per rilevare la fine di un file di testo
- metodo readLine, conversione da stringa a intero (argb) a colore
- leggere dati da un file binario (riconoscere l'header di una immagine PNG)
- uso del BinaryReader e metodo read
- uso elementare degli strumenti di refactoring (solo rinomina di un identificatore)
- esemplificazione si strutture try ... catch annidate
- esemplificazione di una scansione completa dei byte di un file binario (perchè è meglio non usare PeekChar  per rilevare la fine di un file binario che si sa non contenere solo testo)
- salvataggio dei dati relativi alle figure su un file binario
- oggetti BinaryWritersaveDialogBox
- creazione di un file binario
- aggiunta alle classi di tutte le figure di un metodo per salvare i dati sul file binario
- metodo write
- uso di Pad o PadRigth delle stringhe per ottenere più facilmente record a lunghezza fissa
-
uso di un editor binario freeware (witched) per controllare cosa è stato effettivamente scritto sul file
- lettura dei dati delle figure dal file binario e ricostruzione del disegno a video; uso del metodo trim per togliere gli spazi inutili da una stringa, uso del metodo ReadInt32
- navigare in un file binario con il metodo seek
- modifica di una porzione arbitraria di un file binario 





N o v i t à


Tutte le videolezioni sono ora su youtube (per ricevere notifiche di nuove videolezioni ISCRIVITI al mio canale) VAI su youtube


Mappa di tutte le playlist clic qui