CSharpAngelina_Apostila

download CSharpAngelina_Apostila

of 84

Transcript of CSharpAngelina_Apostila

  • PROF. ANGELINA V.S. MELAR [email protected]

    1 0 1 0 1

    LINGUAGEM DE PROGRAMAO 2012

    Linguagem

    C#.net

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    2

    Sumrio

    I- Introduo a Linguagem C# ................................................................................................................ 4 Glossrio ................................................................................................................................................... 4 Recursos do C# que facilitam o desenvolvimento .................................................................................... 5 Diferena entre Projeto e Soluo ............................................................................................................ 5 Teclas de Atalho ....................................................................................................................................... 5

    II- Desenvolvimento de um Projeto .......................................................................................................... 6 III- Ambiente de Desenvolvimento do C# ............................................................................................. 7

    Solution Explorer ..................................................................................................................................... 8 Caixa de Ferramentas ............................................................................................................................... 9 Janela de Propriedades ........................................................................................................................... 10

    IV- Salvar toda a Soluo .................................................................................................................... 11 Extenses de arquivos ............................................................................................................................ 12

    V- Exemplos ........................................................................................................................................... 13 Exemplo de Formulrio: ......................................................................................................................... 13 Exemplo de cdigo: ................................................................................................................................ 13

    VI- Namespace .................................................................................................................................... 14 Exemplo do Namespace ......................................................................................................................... 16

    VII- Primeiro Projeto ............................................................................................................................ 17 VIII- Variveis ....................................................................................................................................... 23

    Sintaxe: ................................................................................................................................................... 24 Exemplo de declarao e atribuio ....................................................................................................... 24 Alerta: ..................................................................................................................................................... 24

    IX- Converso de Tipos ....................................................................................................................... 25 Formas de converso: ............................................................................................................................. 25 Exemplos de converso: ......................................................................................................................... 26

    X- Segundo Projeto ................................................................................................................................. 27 XI- Tratamento de String ..................................................................................................................... 30 XII- Terceiro Projeto ............................................................................................................................. 31 XIII- Quarto Projeto ............................................................................................................................... 36

    As excees podem ser tratadas individualmente ou de forma genrica. ............................................... 37 XIV- Quinto Projeto ............................................................................................................................... 40

    Program.cs .............................................................................................................................................. 40 MenuStrip ............................................................................................................................................... 41 Configurao dos formulrios para a existncia de uma nica janela (Formulrio Principal) ............... 41 ErrorProvider- ........................................................................................................................................ 43

    XV- Estrutura foreach() ......................................................................................................................... 46 Dica: Criar um mtodo atravs do cdigo existente. .............................................................................. 46

    XVI- Classes ........................................................................................................................................... 48 Criao de uma classe ............................................................................................................................ 49

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    3

    Exemplo: ................................................................................................................................................ 50 [modificador de acesso] class ....................................................................................... 50 Atributos de uma classe .......................................................................................................................... 51 Modificadores de Acesso ....................................................................................................................... 51 Encapsulamento. ..................................................................................................................................... 52 Mtodos .................................................................................................................................................. 52 Propriedades ........................................................................................................................................... 53 Exemplo da Classe Pessoa ...................................................................................................................... 53 Construtores............................................................................................................................................ 55 Destrutor ................................................................................................................................................. 56 Variveis ................................................................................................................................................. 56

    XVII- Herana ..................................................................................................................................... 57 XVIII- Polimorfismo ............................................................................................................................ 61 XIX- Classes abstratas ............................................................................................................................ 63 XX- Selando as classes .......................................................................................................................... 64 XXI- Compartilhar dados entre os formulrios e Formulrio com Validao de Usurio e Senha ........ 65 XXII- Armazenamento de Dados ........................................................................................................ 69 XXIII- Conexo com o Banco de Dados .............................................................................................. 77 XXIV- Apndice ................................................................................................................................... 81 XXV- Bibliografia Utilizada ................................................................................................................ 84

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    4

    I- Introduo a Linguagem C#

    A linguagem C#.Net uma linguagem de programao orientada a objetos e eventos, com recursos de componentes grficos e de multimdia, tratamento de excees, strings, processamento de arquivos e banco de dados, alm de implementao de aplicativos para internet. Essa linguagem faz parte da plataforma .Net, que oferece a portabilidade dos programas, permitindo que os aplicativos residam e se comuniquem em diversas plataformas e dispositivos. A linguagem C# foi desenvolvida para a plataforma .Net pela equipe de Anders Hejlsberg e Scott Wiltamuth da Microsoft. Para os programadores em C, C++ a migrao para essa linguagem mais fcil, com familiaridade na sintaxe e estruturas internas. Os programas podem ser desenvolvidos na IDE do Visual Studio .Net onde pode-se criar, documentar, depurar, executar e testar os aplicativos num mesmo ambiente.

    Glossrio C# - Linguagem de programao orientada a objetos. Pronuncia-se ci-sharp ou c-sharp. .Net pronuncia-se dot-net ou ponto net um novo modelo(estratgia) de desenvolvimento de software criado pela Microsoft. WWW world wide web IDE- Integrated Development Environment Ambiente integrado de desenvolvimento.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    5

    Recursos do C# que facilitam o desenvolvimento IntelliSense permite gerar cdigos de forma automtica, evitando perca

    de tempo e erros na digitao. Para acionar pressione CTRL + Espace.

    Os comentrios podem gerar arquivo XML de documentao da soluo.

    Diferena entre Projeto e Soluo O Projeto constitudo por um ou vrios grupos de arquivos relacionados (cdigos, formulrios, imagens, classes). A Soluo constituda por um ou vrios projetos, e representa o produto final a ser entregue ao cliente.

    Teclas de Atalho F4- exibe a Janela de Propriedades F7- exibe o cdigo do formulrio atual F5- executa o projeto F10 e F11 usados para debugar

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    6

    II- Desenvolvimento de um Projeto

    Ao iniciar o Microsoft Visual C#, ir aparecer a pgina inicial onde deve-se escolher no menu a opo FILE- New Project. Quando aparecer a caixa de dilogo (figura abaixo) deve-se selecionar o tipo de projeto que deseja fazer, como Windows Forms Application, Console Application, Class Library, entre outros. O Windows Forms Application usado para desenvolver aplicaes Windows, que possuem elementos grficos (botes, menus, caixas de texto) com os quais o usurio se interage. Essa opo a padro ao iniciar um novo projeto, devendo apenas mudar o nome e clicar no boto OK

    O arquivo que ser gerado o Primeira_aplicacao.csproj (extenso cjproj projeto C#).

    Altere o nome do Projeto

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    7

    III- Ambiente de Desenvolvimento do C#

    A seguir aparece a tela de desenvolvimento do projeto.

    Formulrio: rea principal da aplicao, que ser visualizada pelo usurio e onde sero colocados os componentes grficos (botes, caixas de textos, etc).

    Guias: a janela que aparece a Guia Ativa. Pode-se fazer intercalao com outras

    Janela de Propriedades usada para alterar as informaes do controle selecionado no momento ou determinar o evento do mesmo

    Caixa de Ferramentas: possui os componentes (controles) que podem ser usados em uma aplicao.

    Mostra a estrutura da soluo, listando todos os arquivos criados e vinculados a ela. Barra de Ferramentas

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    8

    Solution Explorer

    No Solution Explorer se gerencia todos os projetos, classes e formulrios da soluo (aplicao) desenvolvida.

    possvel ver o nome dado para o primeiro projeto (que automaticamente ficou para a soluo) O nome inicial do formulrio Form1, que pode ser alterado diretamente clicando sobre o nome Form1.cs e alterando na Janela de Propriedades.

    Dica: Quando as janelas forem alteradas de maneira que no se consiga

    voltar ao normal, clique na opo Windows do menu, item Reset Windows Layout.

    Mostra as propriedades

    Mostra/oculta todos os arquivos

    Mostra a janela de cdigo

    Mostra a janela de designer (grfico)

    Opo usada para mudar o modo de exibio da janela: auto ocultar ou deixar fixa

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    9

    Curiosidade: O sinal de + que oculta uma lista se chama colapsado(expandir) e o sinal de descolapsado.

    Caixa de Ferramentas Na Caixa de Ferramentas so mostrados vrios controles

    (componentes) que podero ser usados. Esses controles esto relacionados em grupos.

    Se for necessrio pode-se incluir novos componentes, clicando com o boto da direita do mouse sobre a caixa de Ferramentas e escolhendo a opo Choose Toolbos Item. Quando for acessar essa opo pela primeira vez normal demora um pouco para carregar todas as opes.

    Dica: Quando for selecionar vrios componentes do mesmo tipo pressione e segure a tecla CTRL antes de selecionar o componente.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    10

    Janela de Propriedades A Janela de Propriedades pode ser usada para alterar uma informao do controle selecionado (como o nome, cor) ou associar uma ao (evento) do usurio ao mesmo (como ao clicar o mouse). Sempre deixe a exibio das propriedades em ordem alfabtica para facilitar a sua procura.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    11

    IV- Salvar toda a Soluo

    Para salvar corretamente o projeto e toda a aplicao desenvolvida clique na ferramenta Save All da Barra de Ferramentas. Defina a localizao e a pasta onde devem ser salvos os arquivos da soluo (todos os projetos).

    A opo de criar uma pasta para a soluo fica ativa por padro, ajudando a organizar os arquivos que so gerados pela soluo.

    Ao clicar na opo Save ser gerada a pasta Primeira_Aplicao no Desktop. Ao abrir essa pasta haver o arquivo principal, da soluo, de nome Primeira_aplicao e extenso .sln. Sempre que for alterar ou visualizar a soluo esse arquivo que deve ser aberto.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    12

    Na subpasta Primeira_aplicao esto os demais arquivos, como os dos formulrios criados, dos projetos, do programa principal.

    Extenses de arquivos Sln soluo criada Csproj arquivo do projeto CSharp Cs arquivos do CSharp AssemblyInfo.cs arquivo usado para adicionar atributos como nome do

    ator, data em que foi criado, entre outros. Exe arquivo executvel Pdb armazena informaes de depurao da aplicao

    Program.cs arquivo principal e inicial *.Designer.cs arquivo com a definio da classe

    Curiosidade O asterisco (*) que aparece na Guia Superior significa que o arquivo atual foi modificado e no foi salvo. Toda vez que voc executar o arquivo, pressionando o F5, os arquivos sero salvos.

    Quando estiver aparecendo um cadeado significa que o programa est em execuo e por isso voc no pode fazer alteraes (protegendo o cdigo fonte atual).

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    13

    V- Exemplos

    Exemplo de Formulrio:

    Exemplo de cdigo:

    a) Cdigo em uma aplicao Windows Forms private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Bom dia! " + textBox1.Text); }

    b) Cdigo em uma aplicao Console static void Main() { System.Console.WriteLine(Boa noite!\n"); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    14

    VI- Namespace

    Conceito de Namespace

    No C#.Net so fornecidas vrias bibliotecas de classes que agrupam seus recursos em namespace. Essas bibliotecas so conhecidas por Framework Class Library(FCL). Nesses namespace tem cdigos que os programadores podem reutilizar, e que j vem na plataforma .Net (Framework .Net). O cdigo real das classes esto localizados em um arquivo .dll.

    Esses namespaces agrupam vrios recursos do C# em categorias relacionadas, um exemplo o namespace System.Windows.Forms que contm classes que ajudam o programador a definir GUIs (Interface Grfica do Usurio- exemplo o boto de comando) para seus aplicativos.

    Para fazer uso de um novo namespace necessrio incluir a linha using (diretiva).

    Uma funo da namespace evitar conflito de nomes de classes, onde as classes da FCL ficam separadas das classes criadas pelo usurio, ou seja, em namespaces diferentes.

    Ao iniciar um projeto do tipo Windows Forms j vm algumas namespaces necessrias para o desenvolvimento desse tipo de projeto.

    using System; //contm classes e tipos de dados fundamentais (como classe math, int) using System.Collections.Generic; using System.ComponentModel; using System.Data; //classes para acesso e manipulalao de banco de dados using System.Drawing; //classes usadas para desenho e elementos grficos using System.Text; using System.Windows.Forms; //classes usadas para criar interface grfica para o usurio

    Se for escolhida o tipo de projeto Console Application aparece namespace diferentes. using System; using System.Collections.Generic; using System.Text;

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    15

    Algumas namespaces devero ser includas no projeto conforme a necessidade do mesmo. Por exemplo, se for necessrio executar a Calculadora do Windows necessrio incluir a namespace System.Diagnostics, como no exemplo que se segue.

    using System.Diagnostics

    Aps sua incluso no mais necessrio referenci-la diretamente, basta colocar o nome da classe que est nessa namespace.

    Process.Start(@"c:\calc.exe");

    Se isso no for feito, pode-se fazer a referncia direta:

    System.Diagnostics.Process.Start(@"C:\windows\system32\Calc.exe");

    Dica: O @ foi utilizado para simplificar a digitao do endereo da calculadora. Se no for colocado deve ser colocada duas barras \\ ao invs de uma \.

    System.Diagnostics.Process.Start("C:\\windows\\system32\\Calc.exe");

    Alguns exemplos de classes das namespace A classe Int32 tem o mtodo Parse, que converte uma string em um inteiro. Essa classe faz parte do namespace System A classe Math tem o mtodo Pow, que calcula exponenciao. Essa classe tambm est no System. A classe MessageBox tem o mtodo Show que est no System.Windows.Forms. Esse mtodo recebe uma string como argumento e apresenta ao usurio uma mensagem atravs de uma caixa de dilogo.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    16

    Exemplo do Namespace

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;

    namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

    private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Exemplo"); } } }

    //using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : System.Windows.Forms.Form { public Form1() { InitializeComponent(); }

    private void button1_Click(object sender, EventArgs e) { System.Windows.Forms.MessageBox.Show("Exemplo"); } } }

  • LP - Prof Angelina Melar

    Objetivo do Projeto: o usurio ir digitar o nome na caixa de texto e ao pressionar o boto Clique aqui! ir aparecer uma mensagem personalizadaBom dia !.

    Propriedades As propriedades so usadas para alterar as caractersticas(informaes) do formulrio, de seuexemplo, mudar o texto, a cor, a posio, incluir uma figura.

    O formulrio um elemento grfico que aparece na tela.Ele um continer para os componentes e controles

    Propriedade FormBorderStyle FixedToolWindow

    Name Form_saudacaoText Projeto exemplo

    saudaoBackColor RedOpacity 70%

    StartPosition CenterScreen

    LABEL

    TEXTBOX

    Prof Angelina Melar ---- verso 0.4 [email protected]

    VII- Primeiro Projeto

    o usurio ir digitar o nome na caixa de texto e ao lique aqui! ir aparecer uma mensagem personalizada

    Bom dia !.

    propriedades so usadas para alterar as caractersticasformulrio, de seus componentes e controles, como por

    exemplo, mudar o texto, a cor, a posio, incluir uma figura.

    Formulrio O formulrio um elemento grfico que aparece na tela.

    Ele um continer para os componentes e controlesValor Significado

    FixedToolWindow Faz aparecer apenas a opo Fechar (X) na barra de ttulo

    Form_saudacao Altera o nome do formulrioProjeto exemplo saudao

    Altera o texto que aparece na barra de ttulo

    Altera a cor do fundo do70% Modifica a porcentagem de

    transparncia do formulrioCenterScreen Faz com que o formulrio ao ser

    exibido j fique no centro da tela

    BUTTON

    [email protected]

    17

    o usurio ir digitar o nome na caixa de texto e ao lique aqui! ir aparecer uma mensagem personalizada

    propriedades so usadas para alterar as caractersticas s componentes e controles, como por

    O formulrio um elemento grfico que aparece na tela. Ele um continer para os componentes e controles

    Significado Faz aparecer apenas a opo Fechar (X) na barra de ttulo Altera o nome do formulrio Altera o texto que aparece na barra

    Altera a cor do fundo do formulrio Modifica a porcentagem de transparncia do formulrio Faz com que o formulrio ao ser exibido j fique no centro da tela

    FORM

    BUTTON

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    18

    Controle Label O Rtulo, texto que aparece na tela e no pode ser alterado (editado) pelo

    usurio Propriedade Valor Significado Name textBox_nome Altera o nome da caixa de texto Text Contm o contedo a ser digitado pelo

    usurio ou informado diretamente. Font .... Altera o tipo, estilo e tamanho da fonte ForeColor Blue Altera a cor da fonte

    Controle TextBox Caixa de texto que permite o usurio entrar com dados (string)

    Propriedade Valor Significado Name label_ nome Altera o nome do label Text Nome: Altera o texto que aparece na tela Font .... Altera o tipo, estilo e tamanho da fonte ForeColor Blue Altera a cor da fonte BackColor Linen Altera a cor do fundo

    Controle Button Boto, usado para chamar um evento quando clicado

    Propriedade Valor Significado Name button_exibe Altera o nome Text &Clique aqui!

    Aparece Clique aqui! O operador & usado para gerar uma tecla de atalho para o boto, ou seja, no precisa pressionar o boto com o mouse, basta pressionar o ALT+C

    Altera o texto do boto

    Font .... Altera o tipo, estilo e tamanho da fonte

    ForeColor Maroon Altera a cor da fonte BackColor Linen Altera a cor do fundo

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    19

    Dica: 1 A propriedade Anchor determina o ajuste da posio do componente em relao ao formulrio, ou seja, quando for redimensionado o formulrio como ser o comportamento do componente. A opo Bottom e Rigth usada para ajustar direita na parte de baixo.

    2 A barra de ferramenta Layout deve ser usada para agilizar a construo do formulrio, onde pode-se selecionar vrios componentes e alterar seus tamanhos numa nica vez, modificar seus alinhamentos.

    alinha os componentes selecionados esquerda

    centraliza os componentes selecionados esquerda

    alinha os componentes selecionados direita

    faz com que todos os componentes selecionados fiquem com a mesma largura

    faz com que todos os componentes selecionados fiquem com a mesma altura

    3 Para selecionar mais de um mesmo componente, selecione o componente e segure a tecla CTRL. V clicando no formulrio e adicionando os componentes. Aps adicionar os componentes pressione a tecla ESC (desativando a seleo do componente)

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    20

    Eventos

    Os eventos esto associados s interaes (aes) realizadas pelo usurio, como o clicar do mouse sobre um boto, mover do mouse sobre uma figura, entre outros. Nesse primeiro projeto ir ocorrer um evento quando o usurio clicar no boto, onde ir aparecer uma mensagem. Para definir um evento necessrio primeiro selecionar o componente/controle, depois ir janela de propriedades e clicar na opo Events.

    Cdigo que ir aparecer: /*Namespaces usadas no desenvolvimento de uma aplicao Windows Forms */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;

    //namespace raiz o nome do projeto definido pelo usurio namespace Projeto_Saudacao { /* a classe Form_saudacao que voc desenvolve partial, ou seja, parte dela j foi escrita pelo C# e a outra parte voc escreve*/ public partial class Form_saudacao : Form { //declarao dos mtodos da classe public Form_saudacao() { InitializeComponent(); }

    nome do boto tipo de evento private void button_exibe_Click(object sender, EventArgs e) { } } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    21

    Voc dever incluir seu cdigo no evento selecionado (Click) private void button_exibe_Click(object sender, EventArgs e) {

    /* Para exibir uma mensagem usa-se a classe MESSAGEBOX e o mtodo dela chamado SHOW Existem 21 formas diferentes de se usar o mtodo show (sobrecarga do mtodo show)*/

    }

    Voc pode digitar o MessageBox das seguintes formas:

    1) MessageBox.Show("Bom dia!"); Texto que aparece no centro da Caixa de Dilogo

    2) MessageBox.Show("Bom dia! "+ textBox_nome.Text); Faz um concatenao (une) a string Bom dia! com o contedo digitado na caixa de texto.

    3) MessageBox.Show("Bom dia? "+textBox_nome.Text, "Ttulo de saudao", MessageBoxButtons.YesNo Faz aparecer um texto central um ttulo na caixa de dilogo, e botes de escolha.

    Ficar o primeiro boto destacado (que tem o foco), se voc no definir o boto padro.

    4)

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    22

    MessageBox.Show( "Bom dia ?"+textBox_nome.Text, "Ttulo de saudao", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);

    Tipos de botes e cones do MessageBox

    Botes cones AbortRetryIgnore OK OKCancel RetryCancel YesNo YesNoCancel

    Asterisk - Mostra um balo com a letra i Error ou Stop - Mostra um balo vermelho com um X Exclamation ou Warning - Mostra um tringulo amarelo com um ponto de exclamao. Information - Mostra um crculo com a letra i None - No mostrado nenhum cone Question - Mostra um balo com um ponto de interrogao

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    23

    VIII- Variveis

    Em C# existem vrios tipos de dados (variveis) como: inteiros, ponto flutuante, lgico e caracter. Todas as regras quanto forma de usar um tipo esto definidos na CTS (Common Type System), ou seja, para haver essa integrao e compatibilidade entre as linguagens .Net, existem os tipos comuns compartilhados entre elas (internos).

    Na plataforma .Net todas as suas linguagens de programao compartilham o mesmo sistema de CTS, ou seja, o tipo inteiro definido na linguagem C# o mesmo tipo inteiro definido em VB.Net ou J#.Net. Abaixo segue uma tabela com os tipos de dados, sua referncia na CTS, a quantidade de bytes que ocupa.

    Tipo de dado

    Tipo .Net Descrio Bytes

    Boll Boolean V ou F 1 Byte Byte Sem sinal (0 at 255) 1 Sbyte Sbyte Com sinal (-128 at 127) 1 Short Int16 Com sinal (-32.768 at 32.767) 2 Ushort Uint16 Sem sinal (0 at 65.535) 2 Int Int32 Com sinal

    (-2.147.483.648 at 2.147.483.647) 4

    Uint Uint32 Sem sinal (0 at 4.294.967.295) 4 Long Int64

    Com sinal (-9.223.372.036.854.775.808 at 9.223.372.036.854.775.807) 8

    Ulong Uint64 Sem sinal (0 at 18.446.744.073.709.551.615) 8

    Float Single

    Ponto flutuante. (+/- 1,5*10-45 at +/- 3,4*101038) 7 dgitos significativos. Exige o sufixo "f" ou "F". 4

    Double Double

    Ponto flutuante de preciso dupla. (+/-5,0*10 -324 at+/-1,8*10308) - 15 a 16 dgitos significativos 8

    Decimal Decimal

    Preciso fixa de 28 dgitos e a posio do ponto decimal. Exige o sufixo "m" ou "M". 16

    Char Char Um nico caracter 2

    String String Armazena cerca de 2 bilhes de caracteres

    2 para cada

    caracter

    Datetime Datetime

    Tipo data e hora (vai de 1/1/1 at 31/12/9999 e horas de 0:00 at 23:59:59 8

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    24

    Sintaxe: Tipo da varivel nome(s) da(s) varivel (veis) [ = valor inicial]; A inicializao da varivel no obrigatria

    Exemplo de declarao e atribuio

    byte idade; byte idade = 33; char sexo = F; string nome = Julia; boolean Sair = False; Datetime Data_nasc; Datetime Data_hoje = Datetime.Now; float nota = 7.5f; //internamente se define o separador decimal como ponto (.) e coloca o sufixo f de float.

    Exemplos prticos: 1) private void button1_Click(object sender, EventArgs e) { DateTime data_atual = DateTime.Now; MessageBox.Show("Data atual: " + data_atual.ToString()); }

    2) float nota; nota = 7.5f; MessageBox.Show("Nota: " + nota.ToString());

    Alerta: Na digitao do usurio sempre vrgula (,) o separador decimal e internamente no cdigo para o programador ponto(.).

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    25

    IX- Converso de Tipos

    Em alguns momentos da aplicao ser necessrio fazer a converso dos valores, por exemplo, voc declarou a varivel como tipo inteiro e depois precisa do seu valor como tipo string (para exibir na tela).

    A converso pode ser feita de diversas maneiras, tomando o cuidado de observar que alguns tipos no podem ser convertidos para qualquer outro tipo, por exemplo, no podemos converter uma string em inteiro. E tambm, tem que ser verificada a quantidade de bytes que o tipo ocupa, no pode ser convertido um tipo que ocupa mais bytes em um tipo que ocupa menos, ou seja, de inteiro para byte.

    Veja a seguinte situao o usurio ir digitar um valor na caixa de texto (textbox). O valor que digitado do tipo string (mesmo que seja um nmero). Se for fazer um calculo com esse valor necessrio converte-lo para um tipo numrico equivalente. Abaixo segue o cdigo de converso e uma explicao.

    // declarada a varivel x como do tipo float float x;

    //Como o usurio digitou o valor numa caixa de texto (textBox), deve-se pegar o contedo dessa caixa de texto e converte-lo para numrico. No pode-se esquecer que sempre o nome da caixa de texto (textBox1) e sua propriedade que contm o texto digitado (text)

    Pode ser usada a classe Convert ou o mtodo Parse para converter de string para float. Se for usada a classe Convert tem que saber o tipo .Net do float, no caso Single (Ver Tabela na parte de Variveis).

    x = Convert.ToSingle(textBox1.Text) * 2.5f; ou x = float.Parse(textBox1.Text) * 2.5f;

    //Para exibir um contedo numrico em uma mensagem ou mesmo num label, deve-se fazer novamente a converso. MessageBox.Show("Convertido: " + x.ToString("N2")); ou

    label1.Text = Convert.ToString(x);

    Formas de converso: Classe Convert Mtodo Parse() Mtodo ToString()

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    26

    Formatao de string atravs do Mtodo ToString() Formatos Exemplos P Percentual N Numrico F Fixo C- Currency E- Notao Cientfica

    Nota.ToString("##0.00"); Mostra com 3 partes inteiras e 2 decimais

    Valor_Venda.ToString("C2"); Mostra na moeda corrente (R$) com duas casas decimais

    Perc_Lucro.ToString("P"); Mostra em porcentagem

    Exemplos de converso: 1) Converso de uma string em tipo float

    float peso,altura,valIMC; peso = float.Parse(txtPeso.Text); altura = float.Parse(txtAltura.Text);

    2) int n1; short litros; float valorfrete;

    n1 = Int32.Parse(400); //converso de uma string em inteiro litros = Convert.ToInt16(litrostextBox.Text); //converso de uma string

    em short totallabel.Text = valorfrete.ToString("C2"); //converso de um tipo float

    em string

    3) int x; x = Int32.Parse("100"); //converso de uma string em inteiro MessageBox.Show(x.ToString()); //converso de um inteiro em string

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    27

    X- Segundo Projeto

    Objetivo do Projeto: Neste segundo projeto sero feitas duas entradas o peso e a altura. Quando o usurio clicar sobre a palavra IMC ser calculado o ndice de Massa Corporal do usurio, verificada e mostrada a sua situao de peso (acima, abaixo ou com peso ideal)

    Cdigo do evento Click do Label de nome label_imc private void label_imc_Click(object sender, EventArgs e) { double altura, peso, imc; altura = Convert.ToDouble(textBox_Altura.Text); peso = double.Parse(textBox_Peso.Text); // imc = peso / altura * altura; ou imc = peso / Math.Pow(altura, 2); label_resultado_imc.Text = imc.ToString(); if (imc < 19) label_situacao.Text = "Abaixo do Peso"; else if (imc < 25) label_situacao.Text = "Peso Ideal"; else label_situacao.Text = "Acima do Peso"; }

    textBox_Peso

    textBox_Altura

    label_resultado_imc

    label_situacao

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    28

    Alerta: Foi usado o mtodo Pow() da classe Math para calcular a altura2. A

    Math est no namespace System. Foi usado o Parse e o Convert para mostrar que ambos podem ser

    usados para converso de string para Double. Poderia ser usado apenas o Convert.

    Cdigo do evento Click do Button de nome button_Sair private void button_Sair_Click(object sender, EventArgs e) {

    if (MessageBox.Show("Deseja encerrar? ", "Confirmao", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) this.Close(); }

    Quando foi usada a classe MessageBox e o mtodo Show foram passados alguns argumentos, como: "Deseja encerrar? " mensagem que aparece no centro da caixa de dilogo Confirmao" mensagem que aparece na barra de ttulo MessageBoxButtons.YesNo tipos de botes que vo aparecer

    MessageBoxIcon.Question tipo de cone que vai aparecer MessageBoxDefaultButton.Button2 qual dos botes que tem

    inicialmente o foco (destaque)

    Para fazer a verificao de qual boto o usurio pressionou da caixa de dilogo deve ser usado o DialogResult e a opo a ser testada.

    == DialogResult.Yes

    Caixa de Dilogo

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    29

    Dica: Quando for usar o controle PictureBox, no precisa ir na propriedade para escolher a figura que deve aparecer e a forma como ela vai aparecer. Quando for inserido PictureBox e colocado o foco sobre esse controle deve ser clicado na seta superior da caixa e clicado sobre a opo Choose Image para escolher a imagem. Na mesma seta existem as opes de visualizao da imagem, atravs da opo Size Mode.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    30

    XI- Tratamento de String

    Existem alguns mtodos especficos do tipo string, como remover os espaos, transformar em maisculo.

    Mtodo Funcionalidade

    Trim() Length toUpper() toLower() Substring()

    Remove os espaos Retorna o tamanho da string Converte a string em maisculo Converte a string em minsculo Retorna uma parte da string a partir da posio definida

    private void button_tamanho_Click(object sender, EventArgs e) { int tamanho; tamanho = textBox_nome.Text.Length; MessageBox.Show(tamanho.ToString()); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(textBox_nome.Text.Substring(0,10)); //estar mostrando a partir do primeiro caracter digitado at a 10 posio Por exemplo, se for digitado na caixa de texto:

    Programao C# Ir aparecer Programa

    }

    Curiosidade:

    A primeira posio considerada zero(0) ndice interno.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    31

    XII- Terceiro Projeto

    Objetivo do Projeto: Neste terceiro projeto sero feitas entradas de dados para clculo das despesas de viagem, no final sero mostrados os valores calculados. Quando no for digitada uma informao necessria, ser mostrada mensagem de alerta e retornado para o campo no preenchido.

    Algumas Propriedades alteradas Formulrio

    Icon usada para alterar o cone que aparece na barra de ttulo do formulrio

    Botes

    Image usada para adicionar um imagem ao boto

    ImageAlign Para definir o alinhamento da imagem em relao ao boto

    TextImageRelation Modifica o tamanho da imagem em relao ao texto

    Groupbox Text Meio de transporte Groupbox Text Valores do Pacote ComboBox Itens SP

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    32

    RJ SC

    TextBox Enabled False

    Nesse projeto foi colocado um GrouBox usado para agrupar os dois RadioButton

    Para a incluso dos itens do ComboBox pode se clicar sobre a seta e ir na opo Edit Items

    Cdigo do evento Click do Boto Limpar Dados O boto limpar ter a ao de limpar o contedo selecionado ou digitado

    private void button_Limpar_Click(object sender, EventArgs e) {

    textBox_nome.Text = ""; radioButton_aviao.Checked= false;

    radioButton_onibus.Checked = false; } Para limpar uma caixa de texto pode-se usar a propriedade text usar o mtodo Clear().

    textBox_nome.Clear(); Ou

    textBox_nome.Text = string.Empty;

    Para tirar a opo de checado(escolhido) do radio button usado a propriedade checked. Quando ela est false no aparece a bolinha, quando est true aparece.

    radioButton_aviao.Checked= false; radioButton_onibus.Checked = false;

    O checked est true no avio

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    33

    Cdigo do evento Click do Boto Calculdora A ao desse boto ser executar o processo Calculadora do Windows. Para isso necessrio saber a localiao do arquivo .exe

    private void button_Calculadora_Click(object sender, EventArgs e) { Process.Start(@"C:\windows\system32\calc.exe"); }

    Foi includo o namespace da classe Process using System.Diagnostics;

    Cdigo do evento Click do Boto Confirmar Em todas as verificaes se o valor testado for invlido deve ser exibida uma mensagem de alerta e depois desviado o foco para o campo.

    private void button_confirmar_Click(object sender, EventArgs e) { if (textBox_nome.Text.Length == 0) { MessageBox.Show("Digite o nome"); textBox_nome.Focus(); }

    if (comboBox_destino.Text == "") { MessageBox.Show("Destino no escolhido"); comboBox_destino.Focus(); }

    if (radioButton_aviao.Checked == false && radioButton_onibus.Checked == false) { MessageBox.Show("Meio de transporte no escolhido"); radioButton_onibus.Focus(); }

    Cdigo do evento Load do formulrio possvel definir aes que devero ser executadas ao iniciar o formulrio, atravs do evento Load. No projeto atual foi redimensionado o formulrio para no aparecer o GroupBox com os resultados, j que no comeo no existem resultados.

    private void Form_agencia_Load(object sender, EventArgs e) { this.ClientSize = new System.Drawing.Size(533, 309); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    34

    Cdigo do evento Click do Boto Calcular Valor da Viagem Ao pressionar o boto calcular sero verificadas as opes selecionadas e de acordo com elas feito o calculo.

    Primeiro: verificado qual destino o usurio escolheu atravs do ComboBox.

    Segundo: verificado qual meio de transporte o usurio escolheu atravs dos RadioButton.

    Terceiro: feita a soma total de gastos Quarto: o formulrio redimensionado para aparecer aparecer(tornar

    visvel) o GroupBox que tem os valores calculados. Quinto: os valores so jogados(atribudos) aos devidos componentes de

    exibio.

    float gasto_destino, gasto_transporte, gasto_total;

    switch (comboBox_destino.Text.ToUpper()) { case "SP": gasto_destino = 1000f; break; case "RJ": gasto_destino = 1500f; break; case "SC": gasto_destino = 2000f; break; default: gasto_destino = 0.0f; break; }

    if (radioButton_aviao.Checked == true) gasto_transporte = 100f; else gasto_transporte = 30f;

    gasto_total = gasto_transporte + gasto_destino;

    this.ClientSize = new System.Drawing.Size(533, 441); groupBox_Resultado.Visible = true;

    label_GastoDestino.Text = gasto_destino.ToString("C2"); label_GastoTransporte.Text = gasto_transporte.ToString("C2"); textBox_ValorTotal.Text = gasto_total.ToString("C2");

    1

    2

    3

    4

    5

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    35

    Cdigo do evento Leave do TextBoxNome O evento Leave usados quando se deseja executar uma ao no componente aps ele sair de foco. No projeto aps a pessoa digitar o nome, esse mesmo no importa como foi digitado, ser transformado em maisculo.

    private void textBox_nome_Leave(object sender, EventArgs e) { textBox_nome.Text= textBox_nome.Text.ToUpper(); }

    Dica: Fazer o C# trazer a estrutura pronta para uso.

    1) Ao pressionar o boto da direita do mouse, voc deve escolher a opo Insert Snippet..., depois d uma duplo clique na opo Visual C#. Aps isso s escolher a estrutura e ele a trar pronta na tela. Por exemplo, na aplicao atual voc pode utilizar para trazer a do switch().

    2) Todas as configuraes iniciais do formulrio e seus componentes podem ser vistas atravs do arquivo Form_agencia.Designer.cs

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    36

    XIII- Quarto Projeto

    Objetivo do Projeto: Nesse projeto ser mostrado o tratamento de excees. De forma que quando for digitado um valor invlido no ser interrompida a execuo da aplicao.

    Um erro ou uma exceo pode ser: no digitao de um valor (causando um erro de converso), digitao de um valor muito longo, erro quanto ao formato, diviso por zero, definio de um caminho (diretrio) ou arquivo invlido, falha do hardware, erro do sistema operacional, erros de dispositivos.

    O bloco de comandos que pode causar uma exceo deve estar dentro do try.. catch, de forma que se possa capturar a exceo e manipul-la. Somente o cdigo dentro do try..cath est protegido.

    Somente um catch ser executado caso ocorra uma das possveis excees do cdigo definido dentro do try. A estrutura do try..catch pode ser:

    try {

    // Cdigo que pode estar sujeito a exceo (erro) } catch( TipoExcecao1 ) {

    // Tratamento para exceo tipo 1 } catch( TipoExcecao2 ) {

    // Tratamento para exceo tipo 2 } catch {

    // Tratamento para qualquer tipo de exceo } finally {

    // Trecho que deve sempre ser executado, havendo ou no exceo }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    37

    As excees podem ser tratadas individualmente ou de forma genrica.

    Tratadas de forma genrica: Dessa forma no tratado de forma individual o erro, a exceo.

    private void dividirbutton_Click(object sender, EventArgs e) { try { decimal valor1, valor2, resultado;

    valor1 = Convert.ToDecimal(valor1textBox.Text); valor2 = Convert.ToDecimal(valor2textBox.Text); resultado = valor1 / valor2; resultadolabel.Text = Convert.ToString(resultado);

    } catch (Exception) { MessageBox.Show("No pode ser feita a diviso Ocorreu uma exceo"); } }

    Pode ser gerada uma instncia da classe Exception

    Pode ser feita a instncia da classe Exception. No cdigo abaixo o nome dado ex, mas poderia ser qualquer nome. Essa classe tem a propriedade Message que mostra a descrio da exceo.

    private void dividirbutton_Click(object sender, EventArgs e) { try { decimal valor1, valor2, resultado;

    valor1 = Convert.ToDecimal(valor1textBox.Text); valor2 = Convert.ToDecimal(valor2textBox.Text); resultado = valor1 / valor2; resultadolabel.Text = Convert.ToString(resultado);

    } catch (Exception ex) { MessageBox.Show(ex.Message, "Erro Genrico"); } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    38

    Tratadas de forma especfica

    Pode haver a necessidade de tratar cada exceo de forma individual. Para cada exceo tem um catch e uma classe. Todo objeto que representa uma exceo derivada da classe Exception que est na namespace System.

    private void dividirbutton_Click(object sender, EventArgs e) { try { decimal valor1, valor2, resultado;

    valor1 = Convert.ToDecimal(valor1textBox.Text); valor2 = Convert.ToDecimal(valor2textBox.Text); resultado = valor1 / valor2; resultadolabel.Text = Convert.ToString(resultado);

    }

    catch (DivideByZeroException) {

    MessageBox.Show("No existe diviso por zero"); } //trata da exceo de diviso por zero

    catch (OverflowException) {

    MessageBox.Show("Erro de estouro"); } //trata da digitao de um nmero muito grande, no permitido para o tipo definido ou para o clculo a ser feito.

    catch (FormatException) { MessageBox.Show("Formato Invlido de dados"); } //trata da exceo quanto a formato invlido, como exemplo podemos destacar: quando h a exigncia de um nmero e digitado um texto ou um espao em branco. Principalmente para converso de valores }

    Bloco finally

    Tudo definido dentro do finally sempre ser executado, existindo ou no a ocorrncia de excees (executando ou no o bloco catch).

    try {

    ...

    } catch () { ...

    } finally

    { MessageBox.Show("Sempre executado dando erro ou no"); this.close(); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    39

    Exceo gerada em tempo de execuo.

    Uma exceo pode criar suas prprias excees. De forma que podem ocorrer novos erros durante o tempo de execuo e para isso deve ser usado o throw (que gera exceo). O throw deve estar dentro do bloco do try.

    if (valor2 % 2 == 0) {

    resultado = valor1 / valor2; resultadolabel.Text = Convert.ToString(resultado);

    } else { throw new Exception("O segundo valor deve ser par");

    }

    Outro exemplo:

    if ( CPF.Length != 11 ) {

    throw new Exception( "CPF Invlido" ); }

    Cuidado:

    A definio e tratamento das excees deve ser feita da mais especfica para a mais genrica, nessa ordem, seno ocorrer erro de cdigo.

    Dicas:

    Outras Exception:

    InvalidcastException (erro de converso direta- cast) IndexOutOfrangeException: ndice do array fora do limite

    FileNotrFoundException: arquivo no encontrado

    SqlException: erro na operao do Sql Server.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    40

    XIV- Quinto Projeto

    Objetivo do Projeto: Mostrar um projeto contendo um menu e configuraes de alertas de erros. O menu ser configurado de maneira que exista uma janela principal e que as demais sejam exibidas dentro dela.

    Program.cs o primeiro arquivo que executado ao iniciar a aplicao. Nele definido qual o primeiro formulrio que dever ser exibido. Se for necessrio mudar a ordem de execuo, deve ser alterado o nome do formulrio inicial desse arquivo.

    namespace Projeto_menu_alerta { static class Program { /// The main entry point for the application. [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormMenu()); } } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    41

    MenuStrip - Esse controle quando arrastado no formulrio ficar na parte de baixo do mesmo. Com ele possvel fazer a criao de um menu.

    Para isso basta dar um nico clique nele. Veja que apareceu no formulrio um espao para voc digitar as opes do menu. Conforme voc for digitando ir aparecer outros espaos, como ao lado, ou embaixo daquele que voc est.

    Para cada opo do menu voc poder criar uma tecla de atalho. Ao usar o & na frente da letra, ele ir sublinh-la e quando o usurio pressionar a tecla ALT ir aparecer os atalhos.

    Configurao dos formulrios para a existncia de uma nica janela (Formulrio Principal)

    Nesse projeto existiro vrios formulrios (vrias janelas ao mesmo tempo, mas apenas um aplicativo em execuo), para isso pode-se usar o recurso de definir um MDI, onde este o formulrio principal (pai). Para isso necessrio alterar a propriedade IsMdiContainer do formulrio menu para o valor True.

    Quando for escolhida o item Cliente da opo Cadastro do menu ir aparecer o outro formulrio dentro do formulrio atual (do menu). Para isso colocado o cdigo a seguir:

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    42

    private void clientesToolStripMenuItem_Click(object sender,EventArgs e ) { Form_Alerta obj_form_alerta; //foi definido o nome do objeto e de qual classe ele se referncia obj_form_alerta = new Form_Alerta(); //foi criada uma nova instncia da classe Form_Alerta obj_form_alerta.MdiParent = this; // definido o pai da janela filha, ou seja, faz com que o novo formulrio (Alerta) seja exibido dentro do formulrio principal (Menu). No esquea que o this a janela atual. obj_form_alerta.Show(); }

    O mtodo Show usado para exibir (mostrar) o formulrio Poderia ser criado o objeto de outra maneira: Form_Alerta obj_form_alerta = new Form_Alerta();

    Poderia ser feita a definio do formulrio pai e fechado o mesmo.

    obj_form_alerta.MdiParent = formAtual.ActiveForm; obj_form_alerta.Show();

    this.Close();

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    43

    ErrorProvider- Esse componente quando arrastado no formulrio ficar na parte de baixo do mesmo. Com ele possvel alertar o usurio quanto a um eventual erro de digitao ou mesmo da falta de digitao. No caso abaixo foi dado o nome eP para o componente ErrorProvider.

    Para que o alerta seja dado ao usurio necessrio definir as regras. Entre as regras poderia ser esquecer-se de digitar um valor, ou mesmo digitar um valor invlido. Foram definidas as regras no evento Validating (validao) de cada caixa de texto (textBox).

    Primeiro est sendo usado o ErrorProvider para mostrar o alerta quando o usurio esquecer de digitar os dados (a caixa de texto fica vazia).

    private void textBoxnome_Validating(object sender, CancelEventArgs e) {

    if (textBoxnome.Text == "") { eP.SetError(textBoxnome, "Voc no digitou o nome");

    textBoxnome.Focus(); return; } eP.Clear(); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    44

    Veja que quando aparecer o alerta tambm est sendo dado o foco na caixa de texto que est vazia e finalizado o cdigo atrves do return; O return faz com que no haja a execuo da sequencia de cdigos que esto aps ele. O alerta somente ir sumir quando o usurio digitar algum valor. Para isso feita a exucao do mtodo Clear(). Na definio do ErrorProvider(eP) tem que ser definido na frente de qual componente dever aparecer o aviso de erro e qual a mensagem que deve ser exibida quando o usurio para sobre ele.

    eP.SetError(textBoxnome, "Voc no digitou o nome");

    private void textBoxidade_Validating(object sender, CancelEventArgs e) { if (textBoxidade.Text == string.Empty)

    { eP.SetError(textBoxidade, "Voc no digitou a idade");

    textBoxidade.Focus(); return; } eP.Clear(); }

    Poderia ser colocado um outro tipo de alerta no boto Verificar. Quando o usurio digitar uma idade maior que 150. Foi feito o tratamento de exceo caso o usurio digite um texto ou vazio na idade e dessa forma no pare a execuo do programa.

    private void buttonVerificar_Click(object sender, EventArgs e) { try { if (Convert.ToInt32(textBoxidade.Text) > 150) { eP.SetError(textBoxidade, "Voc digitou uma idade invlida"); textBoxidade.Focus(); return; } } catch (Exception) { MessageBox.Show("Erro na digitao da idade", "Mensagem de Alerta"); } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    45

    Outra forma de dar o alerta poderia ser atravs do cdigo abaixo, onde somente ele feito quando pressionar o boto Verificar.

    private void buttonVerificar_Click(object sender, EventArgs e) { if (textBox1.Text == "") { eP.SetError(textBoxnome, "NNNOMMMEE VAZZZIIO"); textBox1.Focus(); } if(textBox2.Text == "") { eP.SetError(textBoxidade, "Idade no informada!"); textBox2.Focus(); return; } }

    Opo Acessrios - Calculadora do Menu Ao escolher essa opo ser exibida a Calculadora do Windows. O namespace foi colocado na frente da classe Process.

    private void calculadoraToolStripMenuItem_Click(object sender, EventArgs e) { try {

    System.Diagnostics.Process.Start("calc.exe"); } catch (Exception) {

    MessageBox.Show("Caminho invlido"); } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    46

    XV- Estrutura foreach()

    uma estrutura usada para verificar um array (matriz) ou colees. No preciso ter uma condio que define o termino da repetio e nem mesmo uma inicializao de varivel.

    O trmino da repetio ocorre quando todos os elementos do array/coleo tiverem sidos varridos.

    Exemplo:

    Boto: Limpar Funo: deixar vazias todas as caixas de textos que esto preenchidas. Evento: ao clicar no boto

    foreach (Control caixatexto in this.Controls) { if (caixatexto is TextBox)

    { caixatexto.Text = "";

    } }

    Dica: Criar um mtodo atravs do cdigo existente.

    Quando existir a necessidade de executar as mesmas linhas de cdigo diversas vezes, deve ser criado um mtodo dessas linhas. Para isso execute os seguintes procedimentos:

    1. Selecione as linhas que tem o cdigo (por exemplo, limpar as caixas de texto)

    2. Clique com o boto direito, selecione a opo Refactor, e Extract Method.

    3. Depois ir aparecer uma janela solicitando um nome para o novo mtodo (por exemplo: LimparCaixas() )

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    47

    4. Ser criado um novo mtodo com as linhas de cdigo selecionadas. No local que estavam as linhas aparece a chamada do mtodo.

    //chamada do mtodo criado

    private void button_Limpar_Click(object sender, EventArgs e)

    { LimparCaixas(); }

    //Novo mtodo criado private void LimparCaixas() { textBox_nome.Text = ""; //ou textBox_nome.Clear(); ou textBox_nome.Text = string.Empty; radioButton_aviao.Checked = false; radioButton_onibus.Checked = false; groupBox_Resultado.Visible = false; this.ClientSize = new System.Drawing.Size(533, 309); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    48

    XVI- Classes

    Relembrando o que falamos em sala de aula: classes so tipos abstratos usados para representar objetos do mundo real, elas definem como um objeto deve se comportar.

    Lembre da analogia que fizemos da Classe com a Receita de Bolo. A receita a classe, um tipo de referncia. Nela temos todas as informaes necessrias para fazer um bolo (modo de fazer), e quais ingredientes sero necessrios. O modo de fazer seriam os mtodos e os ingredientes seriam os atributos.

    O fazer o bolo chamado de instncia, ou seja, feita uma nova instncia da classe bolo, ou mesmo criando um objeto. Instncias de classes so chamadas de objetos. Mtodos so o que o objeto faz e os campos so o que ele sabe. No C# tudo definido como uma classe. Para constatar vamos criar um novo projeto. D o nome para ele de Projeto_Classes_1 e altere o nome do Form1 para Form_Classe.

    V no arquivo Program.cs e d um duplo clique. Veja o cdigo. Dentro do namespace atual que o nome que voc deu ao projeto aparece a classe Program. Lembra que falamos de namespace e d estrutura (organizao) de classes que tem nele.

    // a classe Program est dentro do namespace Projeto_Classes_1 namespace Projeto_Classes_1 { static class Program { [STAThread]

    //nessa classe existe o mdoto Main() que do tipo void, ou seja, aps acabar a execuo desse mtodo no haver nenhum retorno. static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //a definio do primeiro formulrio que dever ser exibido Application.Run(new Form_classe()); } } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    49

    O mtodo Main() o principal da aplicao e declarado automaticamente ao comear um novo projeto. Esse mtodo declarado como esttico usando o modificador de acesso static, de forma que o mtodo pode ser chamado sem que a classe seja instanciada. Se voc for at o Form_Classe e pressionar a tecla de atalho F7 ver o cdigo desse formulrio que tambm uma classe, mesmo sendo partial class (a parte de herana, agreagao ser visto depois). public partial class Form_classe : Form { public Form_classe() { InitializeComponent(); }

    //os mtodos criados a partir dos eventos sero definidos dentro desse escopo

    }

    Criao de uma classe

    Vamos fazer a definio da classe Pessoa. Para isso v no Solution Explorer, pressione o boto direito do mouse. Escolha a opo Add, item Class...

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    50

    Define o nome da classe.

    Apareceu um novo arquivo o Pessoa.cs. V no cdigo e veja a estrutura da classe j montada. using System; using System.Collections.Generic; using System.Text;

    namespace Projeto_classes_1 { public class Pessoa { } }

    Quando voc precisar definir a estrutura manualmente, basta colocar a palavra reservada class e na sequencia o identificar dela (nome). Todo o contedo da classe deve estar delimitado pelas chaves.

    Exemplo: [modificador de acesso] class

    { // declarao dos atributos, propriedades e mtodos

    }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    51

    Voc deve definir os atributos, as propriedades e mtodos dentro do escopo da classe.

    Para representar a classe voc pode utilizar o Diagrama de Classe.

    Atributos de uma classe Os atributos de uma classe tambm podem ser chamados de campos. Esses atributos definem a classe, definem suas caractersticas. A declarao pode ser feita da seguinte maneira:

    [Modificador de acesso] [tipo atributo] ; private string _nome; private int _idade;

    Quando o modificador de acesso do atributo no especificado, o compilador assume como default o private.

    Pode ser feita a declarao de vrios atributos do mesmo tipo de uma vez s. public int n1, n2;

    Modificadores de Acesso

    A visibilidade de uma classe e de seus membros (atributos, propriedades, mtodos) tambm podem ser chamadas de modificadores de acesso (qualificadores ou identificadores). Esses modificadores podem ser do tipo: public, private, protected ou internal.

    Tipo Funo

    public O acesso pode ser feito tanto interno ou externo a classe. private O acesso limitado a classe. O acesso fora dela no pode ser

    feito. protected Somente os membros da classe ou as suas classes derivadas

    que tem acesso. internal O acesso limitado ao assembly da classe

    Esse modificadores define a forma como um membro(atributos, mtodos) da classe poder ser acessado externamente, de maneira que pode ser

    Classse Atributo1 Atributo2 Mtodo1() Mtodo2() Mtodo3()

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    52

    determinado que alguns membros no possam ser visveis ou acessados. Dessa maneira eles ficam escondidos (protegidos). Pense no exemplo do carro, onde alguns elementos dele ficam acessveis (volante, cmbio, maaneta), enquanto que outros ficam protegidos (motor). Outro exemplo o componente Button, voc no v seu cdigo, no sabe como foi implementado, mas utiliza-o.

    Encapsulamento. No conceito de encapsulamento se determina que os atributos no possam ser acessados diretamente, mas somente pela interface da classe (mtodos). Para fazer isso necessrio fazer uso das operaes Set e Get que representam a gravao e a leitura dos atributos atravs das Propriedades

    O principal do encapsulamento a preservao das informaes e operaes do conhecimento externo.

    Mtodos

    Os mtodos que definem as aes de um objeto, ou mesmo o seu comportamento so parecidos com as funes da linguagem C. Onde, existe um tipo de retorno, um nome (identificador do mtodo) e uma lista de parmetros que ele recebe.

    A declarao do mtodo pode ser feita da seguinte maneira:

    [modificador de acesso] [tipo do mtodo] ( [lista de parmetros] ) {

    implementao; }

    Quando o mtodo for receber valores externos tero que ser definidos parmetros. Esses parmetros so variveis locais definidas para armazenar os valores enviados ao mtodos.

    O mtodo pode no receber parmetros.

    Esse mtodo pode retornar ou no valores. Quando ele no retornar seu tipo deve ser definido como void.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    53

    Propriedades As propriedades tambm so responsveis pela encapsulamento dos atributos. Quando houver necessidade de ler ou gravar dados em um atributo, primeiro acionada a propriedade dele. Nessa propriedade existem dois tipos de aes que podem ocorrer: o get e o set.

    O get pode ser definido como um mtodo de leitura(recuperar dados) e o set como um mtodo de modificao (armazenar dados). Nesses mtodos existe a palavra reservada value que recebe o valor enviado propriedade.

    possvel definir uma propriedade como somente leitura ou somente gravao. Para isso necessrio implementar apenas um dos mtodo get ou set.

    Para inserir a propriedade automaticamente, digite prop, pressione a tecla TAB 2 vezes.

    Exemplo: public class Pessoa { private int _idade; public int Idade { get { return _idade; } set { _idade = value; } }

    objpessoa.Idade = Convert.ToInt32(textBoxIdade.Text); //Nesse momento est sendo acionado o set

    Idade = objpessoa.Idade; //Aqui est sendo acionado o get

    Exemplo da Classe Pessoa

    namespace Projeto_classes_1 { public class Pessoa { //definio dos atributos private string _nome; private int _idade;

    //definio das propriedades public string Nome { get { return _nome; } set { _nome = value; } }

    public int Idade { get { return _idade; } set { if (value > 120 || value < 0)

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    54

    _idade = 0; else _idade = value; } }

    //definio dos mtodos public string VerificarIdade() { string msg; if (Idade > 18) msg= "J pode Dirigir"; else msg= "No pode Dirigir"; return msg; } } }

    No Form_Classe os dados sero da pessoa sero digitados nas caixas de texto e quando o usurio pressionar o boto sero armazenadas nas propriedades.

    Vamos entender o que este cdigo faz: Primeiro foi definido o nome do objeto (objpessoa) e de qual classe ele se referncia. Depois foi criada uma nova instncia da classe atravs do seu construtor.

    Propriedades

    Mtodos

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    55

    Quando for digitado o nome do objeto e pressionar o ponto(.)voc ver todas as propriedades e mtodos que foram definidos na classe. Mas, no se esquea que eles s aparecerem porque foram definidos como public.

    objpessoa.Idade = Convert.ToInt32(textBoxIdade.Text); //Nesse momento est sendo enviado a propriedade Idade o contedo digitado na caixa de texto idade.

    objpessoa.Nome = textBoxNome.Text; //Est sendo enviado a propriedade Nome o contedo digitado na caixa de texto nome.

    MessageBox.Show(objpessoa.VerificarIdade(), "Mensagem de Orientao"); /*Primeiro sr executado o mtodo verificar. O que for retornado do mtodo ser exibido na caixa de dilogo criada pelo MessageBox*/

    Construtores

    Os construtores de instncias so mtodos chamados automaticamente toda vez que uma nova instncia de uma classe for feita.

    O construtor tem o mesmo nome da classe.

    Pode haver mais de um construtor para a mesma classe, isso chamado de sobrecarga (overload) do mtodo. Lembram do mtodo Show do MessageBox, quando se digita j aparece os diferente mtodos.

    O que diferencia um mtodo do outro o nmero e a combinao dos parmetros que ele recebe. Isso conhecido como assinatura do mtodo.

    Os construtores no possuem valor de retorno

    O constutor padro (default) no recebe parmetros. Quando h a necessidade de iniciar o objeto com valores, necessrio criar um construtores com parmetros, que chamado de construtor customizado.

    Como exemplo, num jogo que tem que ser definido o nmero de jogadores para depois ser criado.

    Jogo objJogo = new Jogo( ); ou Jogo objJogo = new Jogo(1, Bsico);

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    56

    Cuidado: Quando se criar um novo construtor, com parmetros, deve-se reescrever o construtor default.

    Destrutor O destrutor da classe tem quase o mesmo nome da classe, com o acrscimo do til (~). Ele executado automaticamente quando um objeto destrudo.

    class Jogo {

    ~Jogo( ) { Implementao; }

    }

    Variveis Todas a variveis so declaradas dentro do escopo de uma classe e podem ser dos seguintes tipos:

    I- Locais: so declaradas no escopo de um metdo ou evento e no possuem modificadores de acesso. Ela declarada colocando o seu tipo e seu nome (identificador).

    Exemplo:

    public void ReceberDados(string nome, int idade) { _idade = idade ; _nome = nome; }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    57

    XVII- Herana

    Na programao orientada a objetos existe a caractersticas herana, ela est relacionada com a reutilizao e padronizao de cdigo. Com o processo de herana uma nova classe (classe derivada subclasse ou classe filha) criada a partir de uma outra classe (classe base - superclasse ou classe pai).

    Essa classe derivada possui todas os atributos e mtodos herdados da classe base, e seus prprios atributos e mtodos. Todo o cdigo j definido pela classe base ser reutilizado pelas classes derivadas, que podem ser vrias.

    A classe base possui as partes (as caractersticas e operaes em comum) generalizadas que podem ser definidas para qualquer classe e as classes derivadas tem as partes mais especficas (distintas).

    Pense nas seguintes situaes: 1) Os empregados de uma empresa podem trabalhar em um regime horista (recebem por hora trabalhada) ou mensalista (recebem por ms). Podemos definir a superclasse Empregado e as classes derivadas: EmpregadoHorista e EmpregadoMensalista.

    2) Na locadora existem os clientes e os funcionrios. Na programao existir a superclasse Pessoa e as classes derivadas: Clientes e Funcionrios.

    Hierarquia entre as classes

    Pessoa

    Clientes Funcionarios

    Mensalista Horista

    Classe Base (superclasse)

    Classes Derivadas (subclasse)

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    58

    Exemplo de Projeto com Construtor e Hierarquia de Classes Definio da Super classe classe base

    class Funcionario { private string _nome; private decimal _salario; private char _classe;

    public string Nome { get { return _nome; } set { _nome = value; } }

    public decimal Salario { get { return _salario; } set { _salario = value; } }

    public char Classe { get { return _classe; } set { _classe = value; } }

    public Funcionario() //Construtor Default { }

    public Funcionario(char classe) //Novo Construtor { _classe = classe; } }

    Definio da classe derivada class Horista : Funcionario { private int _qtdHora; private float _valorHora;

    public int QtdHora { get { return _qtdHora; } set { _qtdHora = value; } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    59

    public float ValorHora { get { return _valorHora; } set { _valorHora = value; } } }

    Especificador de herana Protected

    No conceito de herana deve-se tomar cuidado com o especificador de acesso usado para os membros. Qualquer membro pblico da classe-base automaticamente um membro privado da classe derivada. Entretanto, nenhum membro privado da classe-base pode ser acessado pela classe derivada. Para resolver esse problema necessrio usar um especificador de acesso intermedirio: o protected. Os membros protected so visveis a todos os membros de uma classe derivada, mas no podem ser acessados diretamente por um objeto declarado fora da classe. Dessa forma se for necessrio usar um membro privado da classe-base deve declar-lo como protected.

    No se esquea: Todos os membros pblicos da classe-base continua sendo pblicos na classe derivada e os membros protected da classe-base sero protected da classe derivada. Os membros pblicos da classe-base podem ser acessados diretamente pelo objeto da classe derivada.

    Quando a declarao private todos os membros herdados tornar-se privados, no importa qual a especificao feita (public ou protected). Esses membros so acessveis somente na classe derivada, mas no diretamente aos objetos.

    class Produtos { private int _codigo; private string _nome; protected decimal _valor; protected string _categoria;

    public int Codigo { get { return _codigo ; } set {_codigo = value ;} }

    public string Nome { get { return _nome; } set { _nome= value; } }

    public decimal Valor { get { return _valor; } set { _valor = value; } }

    public string Categoria { get { return _categoria; } set { _categoria = value; } }

    }

    class Remedios : Produtos { private string _indicacao;

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    60

    public void CalcularValor() { if (_categoria == "Especial") _valor*= 1.3m; }

    public string Indicacao { get { return _indicacao; } set { _indicacao = value; } }

    }

    Veja que na hora de criar o objeto aparece todos as propriedades definidas na classe base.

    No final executado o mtodo CalcularValor da classe derivada, que usa atributos da classe base, definidos como protegidos.

    private void button_Testar_Click(object sender, EventArgs e) { Remedios objremedio = new Remedios(); objremedio.Valor = 2; objremedio.Categoria = "Especial"; objremedio.CalcularValor(); MessageBox.Show("Valor do remdio +objremedio.Valor.ToString()); }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    61

    XVIII- Polimorfismo

    O polimorfismo uma caracterstica da POO que possibilita um mtodo ter vrias formas diferentes, ou seja, aes diferentes, com a mesma assinatura. Para que a implementao do polimorfismo seja feita necessrio definir Mtodos Virtuais.

    Cada nova classe derivada pode entender um mtodo de forma diferente e aplicar seus prprios cdigos de modo a redefinir seu comportamento.

    Mtodos Virtuais Mtodos virtuais so mtodos definidas na classe base e que podem ser redefinidas (diferentes) em classes derivadas. O mtodo virtual se caracteriza pela capacidade do compilador detectar mudanas de acordo com o contexto da classe e viabilizar o polimorfismo.

    Para essa definio iremos usar os termos virtual e override, um completa o outro.

    class Classe_Base { // declarado o mtodo que pode ser sobrescrito public virtual string Exibedados() { string texto; texto = "Estou na classe base"; return texto; }

    class Classe_Derivada: Classe_Base { // sobrescrito o mtodo definido na classe base public override string Exibedados() { string texto; texto = base.Exibedados()+" Estou na classe derivada"; return texto; } }

    private void buttonPolimorfismo_Click(object sender, EventArgs e) { Classe_Derivada objderivada = new Classe_Derivada(); MessageBox.Show(objderivada.Exibedados());

    }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    62

    Na classe base foi definido o mtodo como virtual e na ou nas classes derivadas como override. Dentro de cada mtodo override, usada a palavra-chave base. Ela essencial para permitir que o polimorfismo. As classes agregam mais informao.

    A grande vantagem se pode gerar novas verses dos mtodos, voc no precisa necessariamente conhecer o cdigo da classe pai para fazer a nova implementao. Se quiser, pode at mesmo descartar o que foi escrito anteriormente, basta no incluir a chamada atravs da palavra-chave base.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    63

    XIX- Classes abstratas

    Com as classes abstratas no possvel realizar um instncia. So classes feitas para servir como modelos para suas classes derivadas. Ela no traz uma implementao concreta. Ela serve para dar forma a um projeto de classe.

    Criar uma classe abstrata significa definir premissas, onde nada codificado concretamente na primeira gerao da classe.

    abstract class EntradaDeDados { public string _salario;

    public abstract string Conteudo( ); public abstract string Exibir( ); public abstract void Reajustar ( );

    }

    Os mtodos abstract somente existe na classe abstract.

    As classes filhas (atravs de override) que definiro a funcionalidade de cada mtodo ou propriedade. Se voc tentar instanciar uma classe abstrata, obter um erro do compilador:

    Na classe filha, voc teria as implementaes:

    class EntradaDeOcorrencias : EntradaDeDados {

    public override string Conteudo( ) {

    // Implementao return "";

    }

    public override string Exibir( ) {

    // Implementao return "";

    }

    public override void Reajustar() { _salario+=500;

    } }

    Um mtodo abstrato implicitamente virtual. Todo mtodo declarado como abstract deve ser necessariamente sobreposto.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    64

    XX- Selando as classes

    A linguagem C# permite criar classes seladas. Por definio, classes seladas no permitem nenhum tipo de herana ou derivao. Uma classe selead deve ser usada diretamente no programa, o oposto de classe abstrata.

    sealed class FimDePapo {

    public string UltimaPalavra; }

    class AindaQueroMaisPapo : FimDePapo {

    // Erro de compilao: // cannot inherit from sealed class 'FimDePapo'

    }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    65

    XXI- Compartilhar dados entre os formulrios e Formulrio com Validao de Usurio e Senha

    Como no C# no existe variveis globais, usado na linguagem C, que pode ser usada e alterada por qualquer funo, feito usado da declarao esttica (static) de uma classe ou de seus atributos. Como exemplo, podemos ter no formulrio principal a entrada de um usurio e sua senha e depois precisar fazer uso desses dados nos outros formulrios (validao, privilgios, segurana). Quando o membro da classe for definido como esttico, ele s poder ser chamado usando o nome da classe, ou seja, no se cria uma instncia (objeto) para us-lo.

    Ento temos os membros estticos e instncias. Os membros de instncia precisam antes de ser usados terem instanciado a sua classe. Por default os membros so instncias, quando for necessrio ter um esttico necessrio usar a definio (modificador) static. Somente existe uma cpia na memria de um atributo esttico, por isso quando feito seu uso a alterao de seu valor direta. No projeto usado como exemplo ser explicado seu uso.

    1 Passo: Voc deve criar 3 formulrios: um para o menu, um para a abertura (usurio

    e senha) e outro para entrada de dados.

    2 Passo: Inicialmente no faa nada no formulrio Menu. Ele est sendo feito para

    fazer a chamada do formulrio abertura. Atravs deste formulrio voc mandar exibir o formulrio de Abertura, onde se faz a validao de usurio. Para isso deve ser colocada a instruo na hora em que ele est sendo carregando, no evento Load.

    private void FormMenu_Load(object sender, EventArgs e) { Form_abertura objform_abertura = new Form_abertura(); objform_abertura.ShowDialog(); }

    3 Passo:

    Nesse formulrio sera definido dois atributos estticos, um para usurio e outro para senha.

    public partial class Form_abertura : Form {

    public static string senha;

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    66

    public static string usuario;

    public Form_abertura() { InitializeComponent(); }

    Depois disso no formulrio de Abertura faa a validao atravs do boto Valida.

    private void buttonValida_Click(object sender, EventArgs e) { if (textBoxSenha.Text == "123") { FormMenu objform_menu = new FormMenu(); usuario = textBoxUsuario.Text; this.Close(); } else MessageBox.Show("Senha Invlida", "Cuidado:"); }

    4 Passo: No formulrio Menu, altere a propriedades IsMdiContainer para True. Coloque o menuStrip e adicione a opo Cadastrar Dados

    private void cadastroToolStripMenuItem_Click(object sender, EventArgs e) { FormEntrada objform_entrada = new FormEntrada(); objform_entrada.MdiParent = this; objform_entrada.Show();

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    67

    }

    4 Passo: Como ser necessrio usar o contedo digitado no formulrio de Abertura na caixa de texto do usurio, podemos utilizar o atributo definido como esttico que est na classe formulrio de abertura. Veja que somente podemos fazer o acesso a ele atravs da sua classe. Quando digitarmos o nome da classe ele j aparece sem precisamos fazer uma nova instncia dessa classe formulrio.

    private void buttonTestar_Click(object sender, EventArgs e) { if (Form_abertura.usuario == "ADM") { Form_abertura.usuario = "BIB"; MessageBox.Show("Acessamos e trocamos os dados do usurio em outra classe {0}", Form_abertura.usuario); textBoxUsuario.Text = Form_abertura.usuario; } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    68

    Dicas:

    1) Para substituir a tecla TAB pelo ENTER Primeiro modifique a propriedade KeyPreview para True. No evento KeyDown

    private void Form_abertura_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { SelectNextControl(this.ActiveControl, true, false, false, true); } }

    2) Fazer uso do boto Sair e da opo Sair da Barra de Ttulo

    No boto Sair deve ser colocada a instruo: private void buttonSair_Click(object sender, EventArgs e) { this.Close(); }

    No pode ser esquecido de colocar no evento Closing do formulrio a definio da caixa de dilogo.

    private void Form_abertura_FormClosing(object sender, FormClosingEventArgs e) {

    if (MessageBox.Show("Deseja Sair", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)

    { e.Cancel = true; } }

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    69

    XXII- Armazenamento de Dados

    Primeira Forma Para criar uma base de dados (banco de dados) para armazenar os dados

    cadastrados ou a serem usados pelos formulrios necessrio criar essa base de dados e sua conexo com o projeto. O Gerenciador de Banco de Dados padro .Net o Microsoft SQL Server , verso SQL Express. O projeto que vou criar como exemplo para vocs em Express, mas voc poderia criar bancos de dados em Oracle, Access, entre outros.

    Abaixo sero colocados os passos necessrios para isso:

    Adicione um novo Item ao seu projeto e escolha a opo Service-Based Database (verso 2008 ou SQL Database verso 2005). Altere o nome para Empresas.mdf e pressione o boto Add.

    Quando aparecer uma janela Data Source Configuration Wizard, pressione o boto Cancel.

    Ao olhar no Solution Explorer estar aparecendo o arquivo Empresas.mdf que voc criou, ao dar um duplo clique ir aparecer no lado da esquerda o explorador (Database Explorer) do banco de dados. Dependendo da verso Server Explorer (2005).

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    70

    Atravs desse gerenciador de banco de dados possvel armazenar de forma organizada e inter relacionada os dados, alm de fazer consultas, excluses e alteraes de forma rpida. Essa organizao que ele faz atravs de tabelas, iguais ao Access, que ns j vimos. Essas tabelas tem os registros (linhas) e campos (colunas). Vamos comear criando a tabela de funcionrio. Pressione o boto direito em cima da opo Tables e escolha a opo Add New Table.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    71

    Para inserir os campos dos funcionrios, clique na coluna e informe o nome (identificao) do campo, depois o tipo de dado que ele ir conter, a ltima coluna para definir se aceita ou no nulos (allow nulls). Se o campo tiver que ser definido como campo principal (chave primria), voc deve ativar a ferramenta com o desenho de chave.

    Abaixo existem as propriedades desses campos, quando o campo for autonumerao (deve ser atualizado automaticamente) deve ser ativa a opo (Is Identity) como Yes.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    72

    Devem ser criados os campos:

    Nome do campo (Column Name) Data Type Allow Nulls Id_func int

    Nome_func nvarchar(30) Fone_func nvarchar(20)

    Aps adicionar todos os campos, pressione a ferramenta Salve All do projeto. Aparecer uma tela para salvar a tabela, coloque o nome Funcionario. D um duplo clique na pasta Tables e veja a tabela criada com suas respectivas colunas.

    Aps criarmos as tabelas devemos fazer o Diagrama de Banco de Dados. Para isso clique com o boto direito sobre a opo Database Diagrams.

  • LP - Prof Angelina Melar ---- verso 0.4 [email protected]

    73

    Como ele podemos ter comandos SQL gerados automaticamente, alm de fazermos os relacionamentos das tabelas. Quando aparecer a mensagem acima pressione SIM, de forma que ele vai criar procedimentos que permitam a interao do seu banco com seus cdigos. Selecione a tabela, clique no boto ADD e depois no CLOSE.

    Salve (Salve All) o projeto e d um nome para seu Diagrama, como Diagrama_Empresa. A partir de agora sero gerados cdigos automticos a partir desse Diagrama.

    Se voc quiser adicionar dados diretamente, voc pode, basta clicar na opo Show Table Data (Mostrar dados da tabela).

    Basta digitar os dados dos funcionrios, no se esquea que no pode digitar o ID (que automaticamente inserido). Tudo o que voc digitar estar sendo salvo no banco criado.

    Depois v no menu e escolha a opo Add New Data Source (Adicionar Nova Origem de Dados).

    Como voc vai se conectar ao Banco de Dados