Documente Academic
Documente Profesional
Documente Cultură
MELAR
ANGELINAMELARE@GMAIL.COM
Linguagem
10101
C#.net
LINGUAGEM DE PROGRAMAO
2012
Sumrio
I-
IIIII-
Exemplos ........................................................................................................................................... 13
Namespace .................................................................................................................................... 14
VIII-
Variveis ....................................................................................................................................... 23
Sintaxe: ................................................................................................................................................... 24
Exemplo de declarao e atribuio ....................................................................................................... 24
Alerta: ..................................................................................................................................................... 24
IX-
XI-
XII-
XIII-
Program.cs .............................................................................................................................................. 40
MenuStrip ............................................................................................................................................... 41
Configurao dos formulrios para a existncia de uma nica janela (Formulrio Principal) ............... 41
ErrorProvider- ........................................................................................................................................ 43
XV-
Estrutura foreach()......................................................................................................................... 46
Classes ........................................................................................................................................... 48
Exemplo: ................................................................................................................................................ 50
[modificador de acesso] class <identificador> ....................................................................................... 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-
XX-
Selando as classes.......................................................................................................................... 64
XXI-
Compartilhar dados entre os formulrios e Formulrio com Validao de Usurio e Senha ........ 65
XXII-
XXIII-
XXIV-
Apndice ................................................................................................................................... 81
XXV-
Bibliografia Utilizada................................................................................................................ 84
I-
Introduo a Linguagem C#
Glossrio
C# - Linguagem de programao orientada a objetos. Pronuncia-se cisharp 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.
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
II-
Desenvolvimento de um Projeto
Ao iniciar o Microsoft Visual C#, ir aparecer a pgina inicial onde devese 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
III-
Ambiente de Desenvolvimento do C#
Barra de Ferramentas
Janela de Propriedades
usada para alterar as
informaes do controle
selecionado no momento
ou determinar o evento
do mesmo
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.
Mostra as
propriedade
s
Mostra/oculta
todos os
arquivos
Mostra a
janela de
cdigo
Mostra a janela
de designer
(grfico)
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.
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.
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.
10
IV-
11
Extenses de arquivos
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).
12
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");
}
13
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;
14
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.
15
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");
}
}
}
16
VII-
Primeiro Projeto
FORM
LABEL
BUTTON
TEXTBOX
Propriedades
As propriedades so usadas para alterar as caractersticas
(informaes) do formulrio, de seus
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 controles
Propriedade
Valor
Significado
FormBorderStyle
FixedToolWindow
Name
Form_saudacao
Text
Projeto exemplo
saudao
BackColor
Red
Opacity
70%
Modifica a porcentagem de
transparncia do formulrio
StartPosition
CenterScreen
17
Controle Label
O Rtulo, texto que aparece na tela e no pode ser alterado (editado) pelo
usurio
Propriedade
Name
Valor
textBox_nome
Text
Significado
Altera o nome da caixa de texto
Contm o contedo a ser digitado pelo
usurio ou informado diretamente.
Font
....
ForeColor
Blue
Valor
Significado
Name
label_ nome
Text
Nome:
Font
....
ForeColor
Blue
BackColor
Linen
Controle Button
Boto, usado para chamar um evento quando clicado
Propriedade
Valor
Significado
Name
button_exibe
Altera o nome
Text
&Clique aqui!
....
ForeColor
Maroon
BackColor
Linen
18
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.
19
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.
nome do boto
tipo de evento
20
1) MessageBox.Show("Bom dia!");
Texto que aparece no centro da Caixa de Dilogo
21
cones
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
22
VIII- Variveis
Tipo .Net
Boolean
Byte
Sbyte
Int16
Uint16
Int32
Uint
Uint32
Long
Int64
Ulong
Uint64
Float
Single
Double
Double
Decimal
Char
Decimal
Char
String
String
Datetime
Datetime
de programao
inteiro definido na
ou J#.Net. Abaixo
CTS, a quantidade
Descrio
Bytes
V ou F
Sem sinal (0 at 255)
Com sinal (-128 at 127)
Com sinal (-32.768 at 32.767)
Sem sinal (0 at 65.535)
Com sinal
(-2.147.483.648 at 2.147.483.647)
Sem sinal (0 at 4.294.967.295)
Com sinal (-9.223.372.036.854.775.808
at 9.223.372.036.854.775.807)
Sem
sinal
(0
at
18.446.744.073.709.551.615)
Ponto flutuante.
(+/- 1,5*10-45 at +/- 3,4*101038)
7 dgitos significativos.
Exige o sufixo "f" ou "F".
Ponto flutuante de preciso dupla.
(+/-5,0*10 -324 at+/-1,8*10308)
- 15 a 16 dgitos significativos
Preciso fixa de 28 dgitos e a posio do
ponto decimal.
Exige o sufixo "m" ou "M".
Um nico caracter
1
1
1
2
2
4
4
8
8
16
2
2 para
cada
caracter
8
23
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)
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(.).
24
IX-
Converso de Tipos
25
Exemplos
P Percentual
Nota.ToString("##0.00");
N Numrico
F Fixo
C- Currency
Valor_Venda.ToString("C2");
E- Notao Cientfica
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);
int x;
x = Int32.Parse("100");
26
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)
textBox_Peso
textBox_Altura
label_resultado_imc
label_situacao
27
Alerta:
Caixa de Dilogo
MessageBoxButtons.YesNo
MessageBoxIcon.Question
MessageBoxDefaultButton.Button2
inicialmente o foco (destaque)
qual
dos
botes
que
tem
28
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.
29
XI-
Tratamento de String
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
Curiosidade:
A primeira posio considerada zero(0) ndice interno.
30
Icon
Botes
Image
ImageAlign
Groupbox
Groupbox
ComboBox
TextBox
Enabled
RJ
SC
False
32
{
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);
}
33
label_GastoDestino.Text = gasto_destino.ToString("C2");
label_GastoTransporte.Text = gasto_transporte.ToString("C2");
textBox_ValorTotal.Text = gasto_total.ToString("C2");
34
35
36
37
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();
}
38
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.
39
40
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.
41
{
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();
}
42
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();
}
43
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");
44
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;
}
}
{
try
{
System.Diagnostics.Process.Start("calc.exe");
}
catch (Exception)
{
MessageBox.Show("Caminho
invlido");
}
}
45
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 = "";
}
}
47
XVI- Classes
48
49
50
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:
internal.
Tipo
Funo
public
private
protected
internal
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] <tipo do valor de retorno>
<identificador 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.
52
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
}
}
53
_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;
}
}
}
Propriedades
Mtodos
54
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);
55
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;
}
56
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.
Classe Base (superclasse)
Pessoa
Clientes
Funcionarios
Mensalista
Horista
57
//Construtor Default
//Novo Construtor
}
Definio da classe derivada
class Horista : Funcionario
{
private int _qtdHora;
private float _valorHora;
public int QtdHora
{
get { return _qtdHora; }
set { _qtdHora = value; }
}
58
= value; } }
59
60
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;
}
61
62
64
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;
65
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();
66
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.
67
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);
}
}
68
69
70
71
Data Type
Allow Nulls
int
Nome_func
nvarchar(30)
Fone_func
nvarchar(20)
72
73
Clique no Menu na opo DATA e escolha Show Data Source, essa aba ir
aparecer do lado da esquerda.
empresasDataSet
funcionariosBindingSource: conecta com a tabela funcionrio
funcionariosBindingNavegator: faz aparecer a barra de navegao
(boto para inserir, salvar, excluir) ligada a tabela funcionrio (pelo
funcionariosBindingSource
75
Cuidado:
Existe duas cpias do banco que voc criou
Empresas.mdf, uma na pasta do projeto e outro na
pasta Debug. Qual o original? o da pasta projeto.
O outro inserido sempre quando compilamos (F5).
Para no haver conflito e perda de dados, altere a
propriedade do Banco de Dados. Dessa forma o
compilador no mais criar uma cpia no Debug ao
compilar.
Depois altere o arquivo app.config, que tem as configuraes da sua
aplicao. Nesse arquivo tem o caminho que ele procura em tempo de
execuo pelo banco de dados. O caminho deve estar correto, no importa em
que mquina v ser executada, na sua, na faculdade ou na mquina do
professor (minha em casa). Quando estiver numa rede deve ser informado o ip
do servidor.
connectionString="Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Empresas.mdf;Inte
grated Security=True;User Instance=True"
76
Referncias globais
A varivel usada como referncia a string de conexo e a referncia da
conexo e comando podem ser definidas dentro da classe do formulrio como
um atributo. Dessa maneira poder ser usada em todos os eventos.
string conexao;
SqlConnection con;
SqlCommand com;
Insero de dados
No se esquea que primeiro tem que haver a conexo para depois
fazer a insero dos dados, como no cdigo explicado a seguir:
1 Atribui a varivel de conexo
2 Cria uma instncia de conexo usando a varivel de conexo. Se quiser
pode enviar a string de conexo diretamente pelo construtor.
3 Crie uma varivel com a instruo SQL de insero de dados
4 Inicia a conexo com o banco
5 Cria uma instncia de comando SQL, passando para o construtor a
instruo SQL (inserir no caso)
6 Executa a instruo SQL na conexo atual
7 Fecha a conexo no trmino
SqlConnection objconexao = new SqlConnection(conexao);
//faz a criao da instancia de conexo, passando para seu construtor a string
de conexo atribuda na varivel conexo.
string nome;
nome = textBoxNome.Text;
//declara e atribui ou primeiro declara e depois atribui o valor da varivel
77
78
Excluso de Dados
DELETE FROM Clientes where nome = " + vNome + ""
Alterao dos Dados
UPDATE Clientes SET Nome ='" + vNome+ "', "'endereco='" + vEndereco + "' WHERE
nome=" + vNome + "";
79
Linguagem SQL
atravs da instruo SQL (Linguagem Estruturada de Consulta Structured
Query Language) possvel fazer acesso as tabelas. Essa linguagem possui
uma sintaxe especial e tem instrues relacionadas a banco de dados
(armazenamento, excluso, alterao, consulta).
ADO.NET
O ADO.net (que vem no framework) tema todas as classes necessrias para
trabalhar com banco de dados, desde seu acesso at a sua manipulao. Elas
esto no namespace System.Data .Com o ADO voc no precisa estar
conectado com o banco para trabalhar.
Dependendo do banco que voc deseje acessar precisar incluir outras
namespace, como:
DataSet
Quando se clica no EmpresasDataSet.xsd voc visualiza a uma
representao do seu banco de dados com as tabelas que foram criadas.
Nele existe os mtodos que manipulam os dados. Para voc test-lo basta
dar um clique com o boto direito no mtodo Fil, GetData() e escolher o
Preview Data, depois o boto Prevew.
80
XXIVa)
.Net
b)
Orientao a eventos
c)
Apndice
81
d)
Classes:
Exemplos
Exemplos de atributos:
o aluno: nome, telefone, data de nascimento, curso, ...
o professor: nome, telefone, data de nascimento, graduao, ....
o funcionrio: nome, cargo, salrio, data de nascimento, data de
admisso, ...
o carro: ano, marca, modelo, cor,...
o retngulo: largura, altura, cor da linha, cor de preenchimento,...
Exemplos de operaes:
o pessoa fsica: cadastrar dados, consultar dados, ...
o aluno: lanar notas, calcular desconto, lanar faltas, alterar dados,
...
o professor: alterar dados, alterar plano de carreira, ...
o funcionrio: reajustar salrio, obter salrio lquido, obter desconto
refeio, ....
o carro: obter preo de venda, consultar tabela, efetuar a venda ...
o retngulo: desenhar, mudar cor da linha, mover, redimensionar,...
82
Cada bolo feito com aquela receita um objeto, ou seja, uma instncia
da classe bolo.
Cada bolo feito atravs daquela receita diferente, pode ser de sabor
diferente,
83
Use a Cabea! C#- Andrew Stellman & Jennifer Greene, Alta Books.
conceitual
84