+ All Categories
Home > Technology > Introducao ao .Net

Introducao ao .Net

Date post: 30-Jun-2015
Category:
Upload: andre-teixeira-lopes
View: 1,317 times
Download: 1 times
Share this document with a friend
113
Introdução ao .NET Framework [email protected] System, Console, Drawing, Math, OleDB, Form, Control, DialogResult, DllImport, FileStream, Security, References, Microsoft, Type, ComboBox, Main, List, HashTable, Activator, DataSet, DataReader, DateTime.Now, Exception, MessageBox, Application, WebService . . . (sc) 2 1º Simpósio de Computação do Sul Capixaba “Todas as áreas computando novas idéias”
Transcript
Page 1: Introducao ao .Net

Introdução ao .NET

Framework

[email protected]

System, Console, Drawing,

Math, OleDB, Form,

Control, DialogResult,

DllImport, FileStream,

Security, References,

Microsoft, Type,

ComboBox, Main, List,

HashTable, Activator,

DataSet, DataReader,

DateTime.Now, Exception,

MessageBox, Application,

WebService . . .

(sc)2

1º Simpósio de Computação do Sul Capixaba

“Todas as áreas

computando novas idéias”

Page 2: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Framework de desenvolvimento

Oque é

Windows Forms

Web Forms

Web Services

Console Application

Class Library

Windows Service

Page 3: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

.NET Framework consiste em um conjunto de componentes que modularizam e simplificam o desenvolvimento de aplicações.

Clientes

Servidores

Web Services

Desenvolvedores Microsoft

.NET

Page 4: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Multiplataforma

.NET Framework

Microsoft .NET Framework

Mono

Suporte a várias linguagens de programação

Encapsulamento o SO através da CLR

Page 5: Introducao ao .Net

O .NET aceita várias linguagens de progra-mação (C#, VB, C++, Delphi, entre outras) . As bibliotecas ( o framework em si ) possuem uma grande coleção de classes que podem ser usadas e implementadas em sua aplicação. O CLR é quem gerencia a execução do código, juntamente com o Garbage Collector.

Linguagens de Programação

Framework 1.1

Framework 2.0

Framework 3.5

Bibliotecas .NET

Common Language Runtime

Sistema Operacional

[email protected]

Introdução ao .NET Framework

.NET Framework

Page 6: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

1

2

3

Código Fonte C#, VB, C++ MSIL Code

Compilador MSIL

MSIL Code Código de Máquina

JIT Compiler

Código de Máquina Aplicação

CLR

Page 7: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework O .NET Framework está organizado em namespaces, de modo que cada ferramenta tem sua localização específica

Microsoft.CSharp

Ferramentas para compilação e geração de código com o uso da linguagem C#

System

Tipos fundamentais, interfaces, eventos exceções. É o namespace principal

System.Collections

Contém interfaces e classes que definem várias coleções de objetos tais com Array, Lista, Pilha, dicionários. Também contém ferramentas para gerenciamento de listas genéricas

System.Data

Prove ferramentas para manipulação de dados de diferentes fontes. Constitui a arquitetura do ADO.NET

Page 8: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Drawing

Classes para trabalhar com gráficos e imagens

System.IO

Contém tipos que permitem a manipulação de arquivos de pastas. Escrita e leitura;

System.Net

Oferece interface de programação para muitos dos protocolos de rede hoje disponíveis. Programação de Sockets e requisições Web por exemplo

System.Windows.Forms

Classes voltadas a criação de aplicações baseadas em windows

System.Threading

Prove ferramentas para a programação multi thread. Processos simultâneos

Page 9: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Globalization

Fornece ferramentas para trabalhar com a cultura de onde o programa está sendo executado. Informações como língua, moeda, calendário e formatações.

System.Web.Services

Contém classes que permitem ao desenvolvedor construir e desenvolver WebServices.

System.Timers

Prove componentes que possibilitam o acionamento de eventos em intervalor regulares de tempo

Page 10: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework Microsoft Visual Studio

IDE

Suporte a várias liguagens

Criação de instaladores (somente na versão paga)

Tipos de Aplicações

Console Application

Windows Application

Web Site

Web Service (somente na versão paga)

Windows Service (somente na versão paga)

Class Library

Page 11: Introducao ao .Net

Demo: Conhecendo o Visual

Studio

Console Application

Windows Application

Class Library

Project

Solution

Debug

Code Snipeet

Documentação

[email protected]

Introdução ao .NET Framework

Page 12: Introducao ao .Net

Demo: Programando com o

Visual Studio

Console Application

Classe Console

Delegates e Métodos Anônimos

Unsafe Code

Extension Methods

[email protected]

Introdução ao .NET Framework

Page 13: Introducao ao .Net

Windows Application

Formulários

MDI

SDI

Design

Controles

Tratamento de erros

Membros estáticos

Demo: Programando com o

Visual Studio

[email protected]

Introdução ao .NET Framework

Page 14: Introducao ao .Net

Tarefa: Programando com o

Visual Studio

Crie uma bibliteca (Class Library) com duas

entidades Pessoa e Carro. Contendo

Carro: Marca, Modelo, Ano, Placa

Pessoa: Nome, CPF, e uma lista de carros

Ambas as classes tem de ser públicas

Uma pessoa pode conter até 3 carros

Nenhuma das classes podem ser herdadas

Tempo Estimado: 5min

[email protected]

Introdução ao .NET Framework

Page 15: Introducao ao .Net

Crie uma aplicação Windows Forms que referencie as entidade criadas. E faça seu cadastro. A Aplicação deve ser MDI

Os carros já cadastrados devem estar disponíveis em uma ComboBox no cadastro de pessoas.

Faça uso de uma classe estática para guardar as informações cadastradas

Ao fechar a aplicação os dados não devem ser salvos.

Tempo Estimado: 25min

Tarefa: Programando com o

Visual Studio

[email protected]

Introdução ao .NET Framework

Page 16: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Text.StringBuilder

Resolve o problema da imutabilidade do tipo string,

gerenciando melhor a memória

StringBuilder sb = new StringBuilder(); Memória

sb.AppendText(‚Microsoft‛);

string s = sb.ToString();

sb.AppendText(‚ .Net ‛);

sb.AppendText(‚Framework‛);

‚Microsoft‛

‚.Net ‛

‚Framework‛

‚Microsoft .Net Fr‛

Page 17: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Text.RegularExpressions

Um método formal de se especificar um padrão de texto.

Somente números

Email

Data/Hora

IP

Método complexo, porém rápido de validar valores. Ao invés

de usar try...cath

^\d{5}$

Início da expressão

Somente Números

5 dígitos

Fim da expressão

Page 18: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Text.RegularExpressions

using System; using System.Text.RegularExpressions; class VarificaPadroes { bool ENumero(string texto) { return (new Regex(‚^[0-9]*$‛) ).IsMatch(texto); } }

http://regexlib.com

Page 19: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.DateTime

DateTime dt = DateTime.Now;

int dia = dt.Day; int mes = dt.Month; int ano = dt.Year;

int hora = dt.Hour; int min = dt.Minute; int sec = dt.Second;

dt.ToString(‚dd/MM/yyyy‛) //19/02/2010

dt.ToString(‚dd/MM/yyyy HH:mm:ss‛) //19/02/2010 14:30:00

Page 20: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

GarbageColletor

Não determinístico

Retira da memória somente os espaços não utilizados, que

já estão desvinculados do programa

GC.Collect();

Page 21: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

Coleções

.Net 1.0

System.Collections

.Net 2.0

System.Collections.Generic

System.Collections.Specialized

Listas

Dicionários

Page 22: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

Interfaces de Coleções

IEnumerable

ICollection

IList IDictionary

Page 23: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections

ArrayList

É uma coleção ordenada

Podemos acessar os elementos usando seu index,

baseado em zero

Expande automaticamente quando adicionamos itens

Sort();

IComparable

QuickSort

Page 24: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections

//Cria um ArrayList e adiciona objetos ArrayList arr = new ArrayList(); arr.Add(‚Cachoeiro‛); arr.Add(‚Alegre‛); arr.AddRange(new string[]{‚Vitória‛, ‚Rive‛}); //Obtem Cachoeiro, Alegre e Vitória ArrayList tresPrimeiros = arr.GetRange(0, 3); arr.Remove(‚Rive‛); object primeiro = arr[0]; arr.Insert(0, ‚Rio de Janeiro‛); arr.Sort(); arr.Reverse(); foreach(object item in arrr) { Console.WriteLine(item); }

Page 25: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections

Fila (Queue)

//Cria uma fila e adiciona objetos Queue fila = new Queue(); fila.Enqueue(‚Item 1‛); fila.Enqueue(‚Item 2‛); fila.Enqueue(‚Item 3‛); fila.Enqueue(‚Item 4‛); //Obtém o primeiro item mas não o remove object item = fila.Peek(); //Desenfileira todos os objetos while(fila.Count > 0) { Console.WriteLine(fila.Dequeue()); }

Page 26: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections

Pilha (Stack)

//Cria uma pilha e adiciona objetos Stack pilha = new Stack(); pilha.Push(‚Item 1‛); pilha.Push(‚Item 2‛); pilha.Push(‚Item 3‛); pilha.Push(‚Item 4‛); //Obtém o primeiro item mas não o remove object item = pilha.Peek(); //Desenpilha todos os objetos while(fila.Count > 0) { Console.WriteLine(pilha.Pop()); }

Page 27: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections

Hashtable

Dicionário de chave/Valor

//Cria um hashtable e adiciona entradas de chave/valor Hashtable Produtos = new Hashtable(); Produtos.Add(‚Macaxera‛,5.9); Produtos.Add(‚Cane de Sol‛, 7.5); Produtos.Add(‚Ipioca, 1 Litro‛, 10.0); Console.WriteLine(‚Porção do cheff‛) foreach(DictionaryEntry entry in Produtos) { Console.WriteLine(string.Format(‚{0} preço {0:C}‛, entry.Key, entry.Value)); }

Page 28: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections.Generics

Todos as listas (ArrayList, Queue, Stack, Hashtable, etc) têm

seu tipo genérico implementado

List<T>

List<string>

List<int>

List<object> = ArrayList

Não existe a necessidade de convertermos o tipo para objeto

e na hora de recuperar fazer o unboxing

Page 29: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

.NET Framework

System.Collections.Generics

//Cria a lista de decimais e adiciona os valores List<decimal> listValores = new List<decimal>(); listValores.Add(1.5M); listValores.Add(4.8M); listValores.Add(0.4M); listValores.Add(3.9M); //Não precisamos converter o valor para decimal decimal vlr = listValores[3];

Page 30: Introducao ao .Net

Demo: Trabalhando com

coleções

Collections

Collections.Generics

List

Dictionary

Linq

[email protected]

Introdução ao .NET Framework

Page 31: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Namespaces

System.Data

System.IO

System.Drawing

System.Threading

System.Diagnostics

Page 32: Introducao ao .Net

Acesso a dados

Banco de dados

Componentes

Acesso a banco de dados (SQL Server)

Acesso a arquivos XML

Desenvolvimento em camadas

[email protected]

Introdução ao .NET Framework

Page 33: Introducao ao .Net

Banco de Dados

[email protected]

Introdução ao .NET Framework

Conjunto de registros (informações de mesma natureza) disposto em um estrutura que possibilita a modificação, inserção, atualização e organização dessas informações.

Está organizado em:

Tabelas

Colunas

Registros

Page 34: Introducao ao .Net

Banco de Dados

[email protected]

Introdução ao .NET Framework

ID Nome CPF Cidade

1 Andre 12345678921 Alegre

2 Paulo 12469487670 Cachoeiro

3 Carlos 10457672930 Vitória

4 João 10394874820 Belo Horizonte

5 Maria 05937375958 Guaçui

6 José 30495782845 São Paulo

Coluna

Registro

Tabela de Pessoas

Page 35: Introducao ao .Net

Banco de Dados

[email protected]

Introdução ao .NET Framework

Conceitos Importantes

Chave primária

Chave estrangeira

Views

Page 36: Introducao ao .Net

SQL

Structured Query Language

[email protected]

Introdução ao .NET Framework

DDL

CREATE CREATE TABLE UF( ID int, Nome varchar(100))

DROP DROP TABLE UF

DML

INSERT INSERT INTO UF (ID, Nome) VALUES (1, ‘Alegre’)

UPDATE UPDATE UF SET Nome = ‘Guaçui’ WHERE ID = 1

Page 37: Introducao ao .Net

SQL

Structured Query Language

[email protected]

Introdução ao .NET Framework

DCL

GRANT GRANT SELET OF UF TO ‘user1’

REVOKE REVOKE SELET OF UF TO ‘user1’

DML

DELETE DELETE FROM UF WHERE ID = 1

SELECT SELECT * FROM UF

Page 38: Introducao ao .Net

Tafera: usando o SQL Server

Vamos agora criar um banco de dados

para o SC2, que será usado posterior-

mente para a prática de acesso a dados

usando o .NET Framework

Tempo Estimado: 20 min

[email protected]

Introdução ao .NET Framework

Page 39: Introducao ao .Net

Tabelas

[email protected]

Introdução ao .NET Framework

Participante ID int Chave Primária Nome varchar(120) CPF numeric(11,0) IDCidade int

Cidade ID int Chave Primária Nome varchar(120) UF varchar(2)

Minicurso ID int Chave Primária Nome varchar(120) IDParticipante int

Palestra ID int Chave Primária Nome varchar(120) IDParticipante int

Page 40: Introducao ao .Net

Tabelas

[email protected]

Introdução ao .NET Framework

Participante_Minicurso IDMinicurso int Chave Primária IDParticipante int Chave Primária

Participante_Palestra IDPalestra int Chave Primária IDParticipante int Chave Primária

Criar diagramas de relacionamento

Page 41: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

Microsoft ADO.NET

.NET Framework Data Provider for SQL Server

.NET Framework Data Provider for OLE DB

.NET Framework Data Provider for ODBC

.NET Framework Data Provider for Oracle

.NET Framewor Data Provider

IDbConnection

IDbCommand

IDataReader

IDataAdapter

Banco de Dados

DataSet

Page 42: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

IDbConnection

IDbCommand Banco De Dados

Aplicação

IDataReader

Page 43: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

IDbConnection

Open()

Close()

ConnectionString

State

Page 44: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

SqlConnection

Provedor de acesso ao Sql Server (versão 7.0

ou superior)

Como abrir uma conexão com o banco de dados: SqlConnection conn = new SqlConnetion(); Conn.ConnectionString = minhaStringDeConexao; conn.Open(); Conn.Close();

Data Source=Endereço do SQLServer; Initial Catalog =Nome do Banco de dados; Integrated Security=SSPI;

String de Conexão do SQL Server

http://www.connectionstrings.com/

Page 45: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

IDbCommand

CommandText

CommandType

Connection

ExecuteNonQuery

ExecuteReader

ExecuteScalar

Page 46: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

SqlCommand

Objeto para conversação com banco de dados SQL Server

7.0 ou superior

SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = ‚INSERT INTO UF ‚ + ‚(Descricao) VALUES ‛ + ‚(‘es’)‛; command.ExecuteNonQuery();

Page 47: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

ExecuteScalar

SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = ‚SELECT Descricao ‚ + ‚FROM UF WHERE ID = 1‛; object obj = command.ExecuteScalar(); otring strDescr = obj.ToString();

Page 48: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

ExecuteReader

Só existe enquanto a conexão com o banco está

aberta

SqlConnection CriaConexao() { SqlConnectionStringBuilder sqlStrBld = new SqlConnectionStringBuilder(); sqlStrBld.DataSource = ‚localhost‛; sqlStrBld.InitialCatalog = ‚SC2‛; sqlStrBld.IntegratedSecurity = true; return new SqlConnection(sqlStrBld.ConnectionString); }

Page 49: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

ExecuteReader

SqlCommand sqlCmd = new SqlCommand(); sqlCmd.Connection = CriaConexao(); sqlCmd.CommandText = ‚SELECT * FROM CIDADE‛; sqlCmd.Connection.Open(); SqlDataReader sqlDr = sqlCmd.ExecuteReader(); List<string> Cidades = new List<string>(); while(sqlDr.Read()) { Cidades.Add(string.Format("{0} - {1}", sqlDr["Nome"], sqlDr["UF"])); } sqlCmd.Connection.Close();

Page 50: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

DataSet

DataTable

DataRow

DataColumn

PrimaryKey

DataRelation

Page 51: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET SqlCommand sqlCmd = new SqlCommand(); sqlCmd.Connection = CriaConexao(); sqlCmd.CommandText = ‚SELECT * FROM CIDADE‛; sqlCmd.Connection.Open(); SqlDataReader sqlDr = sqlCmd.ExecuteReader(); DataTable dtCidade = new DataTable(‚Cidade‛); dtCidade.Load(sqlDr); sqlCmd.Connection.Close(); string NomeCidade = dtCidade.Rows[0][1].ToString(); string IDCidade = dtCidade.Rows[0][‚ID‛].ToString(); int NumeroDeCidades = dtCidade.Rows.Count;

Page 52: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

Controles para manipulação de dados

DataGridView

DataGridView dgvCidades = new DataGridView(); dgvCidade.DataSource = dtCidade;

Page 53: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

Controles para manipulação de dados

ComboBox

List<Cidade> Cidades = ObtemCidades(); ComboBox cmbCidades = new ComboBox(); cmbCidades.DisplayMember = ‚Nome‛; cmbCidades.ValueMember = ‚ID‛; cmbCidades.SelectedIndex = -1; cmbCidades.DataSource = from cidade in Cidades orderby cidade.Nome select cidade;

Page 54: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

XML

Linguagem de marcação de dados

Provê um sistema de tags para organização de dados

estruturados

Baseado em texto

<?xml version="1.0" encoding="UTF-8"?> <Pessoa> <Nome>Will</Nome> <Idade>27</Idade> </Pessoa>

Tag introdutória do xml, versão e encodificação

Abre a tag Pessoa

Fecha a tag Pessoa

Page 55: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

XML

<?xml version="1.0" standalone="yes"?> <BDPessoasCidades> <Pessoa> <ID>1</ID> <Nome>Thiago</Nome> <IDCidade>1</IDCidade> </Pessoa> <Pessoa> <ID>2</ID> <Nome>Jean</Nome> <IDCidade>1</IDCidade> </Pessoa> <Cidade> <ID>1</ID> <Nome>Cachoeiro</Nome> </Cidade> </BDPessoasCidades>

Page 56: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

ADO.NET

Demo: Usando XML para acesso a dados

XML

DataSet

DataTable

DataGridView

Page 57: Introducao ao .Net

Demo: Aplicação multi cama-

da para acesso a dados

SQL Server

ADO.NET

Camadas

Generics

OO

[email protected]

Introdução ao .NET Framework

ADO.NET

Page 58: Introducao ao .Net

Arquivos

Manipulação de Arquivos

Escrita / Leitura

Encriptação

Compactação

Serialização

[email protected]

Introdução ao .NET Framework

Page 59: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

File

File.Exists(‚Nome do arquivo‛);

File.Encrypt(‚Nome do arquivo‛);

File.Decrypt(‚Nome do arquivo‛);

File.Delete(‚Nome do arquivo‛);

File.Move(‚Origem‛,‛Destino‛);

File.GetCreationTime(‚Nome do arquivo‛);

File.GetLastAccessTime(‚Nome do arquivo‛);

Page 60: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

FileStream

FileStream fs = new FileStream(‚NomeDoArquivo‛, FileMode, FileAccess);

FileMode.Append

FileMode.Create

FileMode.Open

FileAccess.Read

FileAccess.Write

FileAccess.ReadWrite

fs.Read(Byte[], offset, count);

fs.Write(Byte[], offset, count);

fs.Flush();

fs.Position

fs.Close();

fs.Seek(offset, SeekOrigin);

SeekOrigin.Begin SeekOrigin.Current SeekOrigin.End

Page 61: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

StreamWriter

StreamWriter sw = new StreamWriter(fs); StreamWriter sw = new StreamWriter(‚Nome Do Arquivo‛);

sw.Write(Tipo);

sw.WriteLine(Tipo);

char

bool

float

decimal

string

etc . . .

Exeto

Byte

sw.Flush();

sw.Close();

Page 62: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

StreamReader

StreamReader sr = new StreamWriter(fs); StreamReader sr = new StreamWriter(‚Nome Do Arquivo‛);

int i = sr.Read();

string s = sr.ReadLine();

string s = sr.ReadToEnd();

sr.Close();

Page 63: Introducao ao .Net

Demo: Aplicação para cópia

de arquivos

File

FileStream

Byte[]

Cópia de arquivos

[email protected]

Introdução ao .NET Framework

Arquivos

Page 64: Introducao ao .Net

Demo: Leitura e escrita de

arquivos texto

StreamReader

StreamWriter

[email protected]

Introdução ao .NET Framework

Arquivos

Page 65: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Compactação

Formato zip

System.IO. Compression

DeflateStream

GZipStream

CompressionMode.Compress CompressionMode.Decompress

Page 66: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Compactação

FileStream fsDest = File.Create(‚Memorando.zip‛); byte[] bData = File.ReadAllBytes(‚Memorando.txt‛); GzipStream ArqCompactado = new GZipStream(fsDest, CompressioMode.Compress); ArqCompactado.Write(bData, 0, bData.Length); ArqCompactado.Flush(); ArqCompactado.Close(); fsDest.Close();

Criar um GZipStream para compactar os dados

Ler todos os bytes do arquivo original

Escrever os bytes no destino, objeto GZipStream

Page 67: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Serialização

Técnica usada para persistir objetos

Grava em disco

Transmissão pela rede

Formato binário

Formato texto

Altenativa ao banco de dados *

Page 68: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Serialização

O objeto e todos os seus membros devem ser marcados

com o atributo [Serializable]

Membro não serializados [NonSerializable]

System.Runtime.Serialization

System.Runtime.Serialization.Formatters.Binary

System.Runtime.Serialization.Formatters.Soap

Texto

Melhor para tráfego na rede

Page 69: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Serialização

System.Xml.Serialization

Transitar dados entre sistemas diferentes

Somente membros públicos

using System.Xml.Serialization; using System.IO; public class SerializaXML { internal void Serializa(object Objeto) { XmlSerializer xmlSer = new XmlSerializer(Objeto.GetType()); xmlSer.Serialize((new StreamWriter("test.xml")), Objeto); } }

Não precisa estar marcado como Serializable

Page 70: Introducao ao .Net

Demo: Aplicação para

compactação de arquivos

Compactar

Descompactar

[email protected]

Introdução ao .NET Framework

Arquivos

Page 71: Introducao ao .Net

Demo: Aplicação para

serialização de arquivos

Serializar

Deserializar

Formato Binário

[email protected]

Introdução ao .NET Framework

Arquivos

Page 72: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Manipulando arquivos e pastas

DriverInfo

DirectoryInfo

FileInfo

Path

Directory

FileSystemWatcher

TreeView

TreeNode

Page 73: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

DriverInfo

DriverInfo.GetDrives()

DriverInfo di = new DriverInfo(@‚C:\‛);

di.DriverType

DriveType.CDRom

DriveType.Fixed

DriveType.Removable

di.TotalSize

di.TotalFreeSpace

Page 74: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

DriverInfo

//Obtém todos os drives do computador DriveInfo[] Drives = DriveInfo.GetDrives(); //Percorre cada Drive e mostra suas informações na tela foreach (DriveInfo di in Drives) { Console.WriteLine(di.Name); Console.WriteLine(di.AvailableFreeSpace); Console.WriteLine(di.TotalFreeSpace); Console.WriteLine(di.Totalpace); }

Page 75: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

DirectoryInfo

DirectoryInfo Dir = new DirectoryInfo(@"C:\Program Files");

Dir.Create()

Dir.Delete() Dir.Delete(true)

Dir.CreateSubdirectory(‚Microsoft‛)

Dir.CreationTime

Dir.GetDirectories() Dir.GetFiles()

Dir.Root Dir.Parent

Dir.LastAccessTime

Page 76: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

DirectoryInfo

public void MontaDiretorio(string Dir) { Console.WriteLine(Dir); DirectoryInfo di = new DiretoryInfo(Dir); foreach(FileSystemInfo item in di.GetFileSystemInfos()) { if(item is FileInfo) { Console.WriteLine(string.Format(‚{0}-{1}‛, (item as FileInfo).Name, (item as FileInfo).Length)); } else if(item is DirectoryInfo) { Console.WriteLine((item as DirectoryInfo).Name); } } }

Page 77: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

FileInfo

FileInfo fi = new FileInfo(@"C:\Program Files\Messenger\msnmsgr.exe");

fi.Create()

fi.Encrypt() fi.Decrypt()

fi.Delete()

fi.CreationTime

fi.Directory fi.DirectoryName

fi.FullName Dir.Extension

fi.LastAccessTime

fi.Length

Page 78: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

FileInfo

public void PropriedadesArquivo(string FileName) { Console.WriteLine(FileName); //Cria o objeto com base no nome do FileInfo fi = new FileInfo(FileName); //Como o arquivo é medido em bytes, dividimos por //1024 para encontrar seu tamanho em KBytes Console.WriteLine(string.Format(‚Tamanho: {0} KB‛, fi.Length/1024)); Console.WriteLine(string.Format(‚Criação: {0}‛. fi.CreationTime.ToString(‚dd/MM/yyyy HH:mm:ss‛)); Console.WriteLine(string.Format(‚Caminho: {0}‛, fi.FullName)); }

Page 79: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Directory

Expõe métodos estáticos para criação movimentação e enumeração de diretórios e subdiretórios.

Directory.CreateDirectory(‚Nome‛);

Directory.GetCurrentDirectory();

Directory.Move(‚Origem‛,‛Destino‛);

Directory.GetDirectories(@‚C:\", "p*‚, SearchOption.TopDirectoryOnly);

SearchOption.TopDirectoryOnly

SearchOption.AllDirectories

Page 80: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

Path

Executa operações em instâncias de String que contêm arquivo ou diretório. Multi-plataforma

Path.GetTempFileName();

Path.GetTempPath();

Path.DirectorySeparatorChar;

Path.GetInvalidPathChars();

Path.GetInvalidFileNameChars();

Page 81: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

FileSystemWatcher

Sinaliza qualquer modificação na estrutura de arquivo informada

FileSystemWatcher fs = new FileSystemWatcher(); fs.Path = @"C:\"; fs.IncludeSubdirectories = true; fs.EnableRaisingEvents = true; fs.Changed += new FileSystemEventHandler(Modificado); fs.Created += new FileSystemEventHandler(Modificado); fs.Deleted += new FileSystemEventHandler(Modificado); fs.Renamed += new RenamedEventHandler(Renomeado);

Page 82: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

FileSystemWatcher

private static void Modificado(object source, FileSystemEventArgs e) { // Especifica o arquivo e se foi modificado, //criado, ou deletado. Console.WriteLine(‚Arquivo: " + e.FullPath + " " + e.ChangeType); }

private static void Renomeado(object source, RenamedEventArgs e) { // Especifica o nome original e o novo do arquivo Console.WriteLine(‚Arquivo: {0} renomeado para {1}", e.OldFullPath, e.FullPath); }

Page 83: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

TreeView

Controle usado para mostrar informações hierárquicas, estrutura de arquivos, em uma estrutura de árvore

System.Windows.Forms

- Info1 +Info1.1 +Info1.2 - Info1.3 +Info1.3.1 +Info1.4

+ Info2 + Info3 +Info3.1

TreeNode

TreeNode

TreeNode TreeView

Page 84: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Arquivos

TreeView

Nodes

Nodes

Nodes

. . .

Page 85: Introducao ao .Net

Demo: Aplicação para

gerenciamento de arquivos

DirectoryInfo

FileInfo

TreeView

FileSystemWatcher

DriveInfo

TreeNode

[email protected]

Introdução ao .NET Framework

Arquivos

Page 86: Introducao ao .Net

Gráficos

Desenhando Gráficos

Trabalhando com imagens

Formatando textos

Customizando controles

[email protected]

Introdução ao .NET Framework

Page 87: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Criar gráficos a partir do zero

Adicionar circulos, linhas e outras formas a interface do usuário dinamicamente.

Editar e redimensionar figuras

Mudar taxa de compressão de imagens salvas no disco

Adicionar logomarcas copyright ou texto a imagens

Page 88: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Graphics

Região onde todo desenho é feito

Form

Button

Panel

etc

Control.CreateGraphics()

Page 89: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Pen

Pen p = new Pen(Color.Red, 5);

Brush

SolidBrush

SolidBrush solido = new SolidBrush(Color.Green);

LinearGradientBrush

Pen p = new Pen(solido,5);

Page 90: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Estilos de lápis

Pen p = new Pen(Color.Red, 5);

P.DashStyle = DashStyle.Dot

P.DashStyle = DashStyle.Dash

P.DashStyle = DashStyle.DashDot

P.DashStyle = DashStyle.Solid

Page 91: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Estilos de lápis

Pen p = new Pen(Color.Red, 5);

p.StartCap = LineCap.ArrowAnchor;

p.EndCap = LineCap.ArrowAnchor;

p.StartCap = LineCap.DiamondAnchor;

Page 92: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

Graphics grafico = this.CreateGraphics();

grafico.DrawEllipse(Pen, Rectangle);

grafico.FillEllipse(Pen, Rectangle);

Image imagem = Image.FromFile(‚C:\\Foto.jpg‛);

grafico.DrawImage(imagem, Point);

grafico.DrawLine(Pen, Point, Point);

grafico.DrawLines(Pen, Point[]);

Page 93: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

grafico.DrawPie(Pen, Rectangle,fAnguloIni, fAnguloFim);

grafico.DrawPie(new Pen(Color.Black), new Rectangle(50,50,250,250),0,90);

grafico.DrawPie(new Pen(Color.Black), new Rectangle(50,50,250,250),0,270);

Page 94: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

System.Drawing

grafico.FillElipse(Brush, Rectangle);

grafico.FillPolygon(Brush, Rectangle);

grafico.DrawPolygon(Pen, Rectangle);

Page 95: Introducao ao .Net

Demo: Trabalhando com

linhas e formas

Pen

SolidBrush

LinearGradientBrush

Graphics

UserControl

[email protected]

Introdução ao .NET Framework

Gráficos

Page 96: Introducao ao .Net

Introdução ao .NET Framework

Gráficos

Imagens

PictureBox

PictureBox img = new PictureBox();

img.BackgroundImage = Image.FromFile(‚foto.jpg‛);

img.BackgroundImage = new Bitmap(‚foto.jpg‛);

img.SizeMode = PictureBoxSizeMode.AutoSize;

PictureBoxSizeMode.StretchImage

PictureBoxSizeMode.Normal

Page 97: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

Imagens

Bitmap

Bitmap bmp = new Bitmap(1920, 1080);

Graphics AreaGrafica = Graphics.FromImage(bmp);

Brush b = new LinearGradientBrush(new Point(1, 1),new Point(1920, 1080),Color.White,Color.Red);

AreaGrafica.FillRectangle(b, 1, 1, 1920, 1080);

Bmp.Save(‚imagem.jpg‛, ImageFormat.Jpeg);

Page 98: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

Imagens

Bitmap

private static Image RecortaImagem(this Image imagem, Rectangle AreaCorte) { Bitmap bmpImage = new Bitmap(img); Bitmap bmpRecorte = bmpImage.Clone(AreaCorte, bmpImage.PixelFormat); return (Image)(bmpRecorte); }

Page 99: Introducao ao .Net

Introdução ao .NET Framework

Gráficos

Textos

FontFamily

FontFamily ff = new FontFamily(‚Consolas‛);

Font

Font font = new Font(ff,16); font.Bold = true; font.Italic = false;

FontConverter conversor = new FontConverter(); font = (Font)conversor.ConvertFromString(‚Arial,12‛);

grafico.DrawString(‚.Net Framework‛, font, Brushes.Black, Point);

[email protected]

Page 100: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

Demo: Trabalhando imagens

e textos

Pen

SolidBrush

Graphics

Page 101: Introducao ao .Net

Introdução ao .NET Framework

Gráficos

Customização

[email protected]

A grande maioria dos tipos em .Net são classes

Os controles gráficos (botões, formulários, etc) são classes

Podem ser herdados

Métodos podem ser sobrecarredaos

Todo tipo gráfico tem um evento chamado OnPaint

protected void OnPaint(PaintEventArgs e) { e.Grapics.DrawLine(Pen, Point, Point); base.OnPaint(e); }

Page 102: Introducao ao .Net

Introdução ao .NET Framework

Gráficos

Customização

[email protected]

public sealed class ButtonComLinhas : System.Windows.Forms.Button { public ButtonComLinhas(){} protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawRectangle(new Pen(Brushes.Black), e.ClipRectangle); base.OnPaint } }

Page 103: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Gráficos

Demo: Customização de

controles

Pen

SolidBrush

LinearGradientBrush

Graphics

UserControl

Page 104: Introducao ao .Net

Threads

BackgroundWorker

Processos assíncronos

ThreadStart

Customizando controles

[email protected]

Introdução ao .NET Framework

Page 105: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

Multi Thread

Várias tarefas ao mesmo tempo

Tarefas que demoram para serem concluídas travam a interface do usuário durante todo seu processamento

Impressão de relatórios

Download de arquivos

Consultas ao banco de dados

Cálculo complexos

Thread

Taferas assíncronas

BackgroundWorker

Page 106: Introducao ao .Net

Threads

Multi Thread

[email protected]

Introdução ao .NET Framework

Tarefa 1 Tarefa 2 Tarefa 3 Tarefa 4

10 min 10 min 10 min 10 min

Se, e somente se, as tarefas forem independentes

Tarefa 2

Tarefa 1

Tarefa 4

Tarefa 3

40 min

10 min

Page 107: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

BackgroundWorker

Não manipular a interface do usuário

RunWorkerCompleted

ProgressChanged

BackgroundWorker bWorker = new BackgroundWorker(); bWorker.DoWork += new DoWorkEventHandler(CalcFatorial); bWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Fatorial_Completo); bWorker.RunWorkerAsync(10);

System.ComponentModel

Page 108: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

BackgroundWorker

public ulong Fatorial(uint Numero) { if(Numero <= 1) return 1; else return Numero * Fatorial(Numero - 1); }

private void CalcFatorial(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; e.Result = Fatorial((int)e.Argument); }

Page 109: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

BackgroundWorker

private void Fatorial_Completo(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show(‚O Fatorial é ‛+ e.Result.ToString()); }

Page 110: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

ParameterizedThreadStart

Para acessar a UI devemos “invocar” a Thread principal

Thread

ThreadStart

Thread thr = new Thread(new ParameterizedThreadStart( CalcFatorial)); thr.Star(10);

Page 111: Introducao ao .Net

[email protected]

Introdução ao .NET Framework

Threads

Thread

private void CalcFatorial(objetc valor) { ulong fat = Fatorial((int)valor); EscreveMsgDelegate MsgDelegate = new EscreveMsgDelegate(EscreveMsg); this.Invoke(MsgDelegate, new object[] {‚O valor do fatorial de ‛ + valor.ToString + ‚ é igual a ‛ + fat.ToString() } ); }

public delegate void EscreveMsgDelegate(string Mensagem);

public void EscreveMsg(string Mensagem) { MessageBox.Show(Mensagem); }

Page 112: Introducao ao .Net

[email protected]

Demo: Usando Theads para

cálculos complexos

Thread

ParameterizedThreadStart

Delegate

Invoke

Threads

Introdução ao .NET Framework

Page 113: Introducao ao .Net

The End

[email protected]

Introdução ao .NET Framework


Recommended