Documente Academic
Documente Profesional
Documente Cultură
Linguagem C#
Você pode usar C# para criar aplicativos clientes tradicionais do Windows , XML
Web services, componentes distribuídos, aplicativos cliente-servidor, aplicativos de
banco de dados, e muito, muito mais.
Microsoft Visual C# 2005 fornece um editor de código avançado, designers de
interface de usuário convenientes, depurador integrado, e muitas outras
ferramentas para facilitar o rápido desenvolvimento de aplicativos com base na
versão 2.0 da linguagem C# e do .NET Framework.
Introdução à linguagem C#
Observação
Não se preocupe se não entender algumas palavras e conceitos.
Estes assuntos serão abordados ao longo do curso.
Métodos que substituem métodos virtuais em uma classe pai exigem a palavra-
chave override como uma forma para evitar redefinição acidental.
No C#, uma estrutura é como uma classe simplificada; ele é um tipo alocado na
pilha que pode implementar interfaces mas não tem suporte a herança
Diagrama de um Projeto
Editor de códigos
O Editor de códigos contém os seguintes recursos novos para Visual C# 2005, entre
eles os trechos de código
Trechos são armazenados como arquivos XML que podem ser facilmente editados e
personalizados.
Refatoração
Ambiente de Desenvolvimento
O ambiente de desenvolvimento inclui os seguintes aperfeiçoamentos para Visual
C# 2005, entre eles o IntelliSense
Comentários XML
Debug
Para obter Visual Studio 2005 Express Edition clique no link abaixo
http://msdn2.microsoft.com/pt-br/express/aa975050.aspx
Escolhendo a versão Express
Nesta mesma página, um pouco mais abaixo você encontrará diversas opções para
download.
Seleção do Idioma e Versão
1- Tela de Apresentação
Clique no botão Next para continuar.
Tela de licença
Instalação do MSDN
Local de Instalação
Instalação em Andamento
Instalação em progresso
Observação
Após 30 dias, se você não tiver feito o registro, o programa para de funcionar.
Criando Seu Primeiro Aplicativo C#
Siga estas etapas para criar um programa que abre uma janela e reage a um
pressionamento de botão.
Procedimentos
Expanda a lista Common Controls, e arraste o controle Label (rótulo) para seu
formulário.
Executando o Programa
Parabéns!
Você acabou de escrever seu primeiro aplicativo C#.
Avaliação da aula
Envie toda a pasta (zipada) MeuProjeto para o email de seu tutor responsável.
Observação
Para localizar esta pasta, basta selecionar o nome do projeto dentro do Solution
Explorer.
Tópicos Abordados
Didática de Estudo
Avaliação da Aula
• Este projeto deve ser enviado, via e-mail, ao tutor, o qual analisará o mesmo
• Se aprovado, o tutor libera a próxima aula, caso contrário, ele vai orientar,
como deveria ser feito.
Algumas das ferramentas são compartilhados com outras linguagens do Visual Studio, e
algumas, como o compilador C#, são exclusivas para Visual C#.
Nesta aula você terá uma visão geral de como usar as ferramentas mais importantes do
Visual C# enquanto você trabalha na IDE em várias fases do processo de
desenvolvimento.
Ferramentas Visual C#
As janelas para a maioria dessas ferramentas podem ser abertas a partir do menu
View.
Principais Janelas
Abaixo as Janelas que serão utilizadas com maior freqüência ao longo deste curso.
Solution Explorer
Toolbox
Properties
Utilize a janela Properties (Janela de Propriedades), para configurar propriedades e
eventos dos objetos da sua interface de usuário.
Um projeto contém todos os arquivos necessários para seu aplicativo, incluindo não
apenas arquivos de código fonte, mas também arquivos de recursos como ícones,
referências a arquivos externos que seu programa depende.
Designer de Projeto
Assembly name
Especifica o nome do arquivo de saída que manterá o manifesto do conjunto.
Default namespace
Especifica o espaço para nome base para todos os arquivos no projeto.
Output type
Especifica o tipo do aplicativo para criar.
Assembly Information
Através desta caixa de diálogo é utilizada para especificar os valores dos atributos
no arquivo AssemblyInfo criado automaticamente com o projeto.
A seguir será apresentado maiores detalhes.
Startup object
Define o ponto de entrada a ser chamado quando o aplicativo carregado;
geralmente isso é definido um para o formulário principal no seu aplicativo ou para
o Sub Main procedimento que deve executado quando o aplicativo for iniciado.
Recursos
As opções a seguir permitem-lhe definir configurações gerais para o aplicativo.
Icon
Define o arquivo.icone que você deseja usar como o ícone do aplicativo.
Resource File
Para adicionar um arquivo de recurso do Win32 para o projeto
Assembly Information
Title
Especifica um título para o manifesto do conjunto.
Description
Especifica uma descrição opcional para o manifesto do conjunto.
Company
Especifica um nome da empresa para o manifesto do conjunto.
Product
Especifica um nome de produto para o manifesto do conjunto.
Copyright
Especifica um aviso de copyright para o manifesto do conjunto.
Trademark
Especifica uma marca para o manifesto do conjunto.
Assembly Version
Especifica a versão do conjunto
File Version
Especifica um número de versão que instrui o compilador para usar uma versão
específica para o recurso de versão de arquivo Win32.
GUID
Um GUID exclusivo que identifica o conjunto. Quando você criar um projeto, Visual
Studio gera uma GUID para o conjunto.
Neutral Language
Especifica qual cultura o oferece suporte do conjunto.
Para visualizar estas informações localize o teu arquivo executável e clique com o
botão direito do mouse.
Se seu programa cria uma instância de uma classe que está definida em algum
outro assembly, você deve adicionar uma referência a esse arquivo em seu projeto
antes de você compilar o projeto.
Para adicionar uma referência, clique em Add Reference no menu Project.
Todos os projetos C# por padrão incluem uma referência a mscorlib.dll, que contém
as classes principais do .NET Framework.
Observação
Você pode adicionar referências a DLLs adicionais do .NET Framework e outros
arquivos, clicando no menu Project, e selecionando Add Reference.
Formulários
Você escreve seu código no Form1.cs; o arquivo designer.cs é onde o Windows Forms
Designer escreve o código que implementa todas as ações que você realizou arrastando
e soltando controles da Caixa de Ferramentas.
Cada formulário tem dois arquivos associados a ele. Form1.cs, ou qualquer outro nome
que você dê, contém o código fonte que você escreveu para configurar o formulário e
seus controles, como caixas de listagem e caixas de texto, e responde a eventos como
clique de botão e pressionamento de tecla.
Em projetos simples do Windows Forms, você faz a maioria ou toda a sua codificação
nesse arquivo.
O arquivo Designer.cs contém o código fonte que o Forms Designer escreve quando
você arrasta controles para o formulário, define propriedades na janela Properties, e
assim por diante.
Normalmente, você não deve editar esse arquivo manualmente.
Outros arquivos de código fonte
Um projeto pode incluir qualquer número de arquivos .cs adicionais que pode ou
não estar associado a um Windows Form específico.
No Visual C#, a maneira mais rápida e conveniente de criar sua interface de usuário
(UI) é fazê-la visualmente, usando o Windows Forms Designer e o Toolbox.
Adicionando controles
No designer, você usa o mouse para arrastar, por exemplo botões e caixas de texto, para
uma superfície de projeto que representa o formulário.
Enquanto você trabalha visualmente, o designer converte suas ações em código fonte
C# e os grava em um arquivo de projeto chamado designer.cs onde é o nome que você
deu para o formulário.
Quando seu aplicativo é executado, esse código fonte irá posicionar e dimensionar os
elementos de UI para que elas apareçam da mesma maneira que na superfície de
projeto.
Definindo Propriedades
Após você adicionar um controle ao seu formulário, você pode usar a janela
Properties para definir suas propriedades, como cor do plano de fundo e texto
padrão.
Nome do objeto
Lista o objeto atualmente selecionado ou objetos.
Categorias
Lista todas as propriedades e valores de propriedade para o objeto selecionado, por
categoria.
Você pode recolher uma categoria para reduzir o número de propriedades visíveis.
Ao você expandir ou recolher uma categoria, você verá um sinal (+). ou menos (-)
para a esquerda do nome da categoria Categorias estão listadas em ordem
alfabética.
Alfabética
Em ordem alfabética classifica todas as propriedades em tempo de design e
eventos para objetos selecionados.
Propriedades
Exibe as propriedades de um objeto.
Muitos objetos também ter eventos que podem ser exibidos usando a Properties
janela.
Eventos
Exibe os eventos para um objeto.
Propriedade Pages
Exibe a Property Pages caixa de diálogo ou Project Designer para o item
selecionado.
Form1
Name : frmCadastro
Text: Cadastro
Botão
Name : cmdIncluir
Text: Incluir
label1
Name : lblEmpresa
Text: Empresa
textBox1
Name : txtEmpresa
Text: deixar em branco
Label2
Name : lblStatus
Text: Status:
Tratamento de eventos
Elas aguardam até que um usuário faça algo como inserir texto em uma caixa de
texto, clicar em um botão, ou alterar uma seleção em uma caixa de listagem.
Quando isso acontece, o controle, que é apenas uma instância de uma classe do
.NET Framework, envia um evento para seu aplicativo.
Você pode optar por manipular um evento escrevendo um método especial em seu
aplicativo que será chamado quando o evento é recebido.
Você pode usar a janela Properties para especificar que evento deseja tratar em
seu código.
Basta, nesta janela apagar este nome e dar um clique duplo no lugar onde estava o
button1_Click conforme figura abaixo.
Código Fonte
A maioria dos controles geram um número grande de eventos, mas na maioria dos
casos, um aplicativo somente precisará manipular alguns deles, ou mesmo somente
um.
Editando código
Assim como o Microsoft Word fornece suporte abrangente para frases, parágrafos, e
gramática, o editor de códigos C# faz o mesmo para sintaxe C# e para o .NET
Framework.
Visual C# fornece um número enorme de atalhos de teclado que você pode usar para
executar ações sem usar o mouse ou menus.
Visite o link abaixo para ter uma lista completa, agrupada por categorias.
http://msdn2.microsoft.com/en-us/library/ms366739(VS.80).aspx
Avaliação da aula
Envie toda a pasta (zipada) MeuProjeto, com as alterações feitas nesta aula para o seu
tutor responsável.
O mesmo após a análise, se estiver tudo OK vai liberar a próxima aula.
Observação
O prazo máximo para a liberação da próxima aula é de até 2 dias uteis.
Uma aplicação console é uma aplicação que roda através de uma linha de
comando, no prompt do DOS
Clique em OK
Vamos agora examinar as partes importantes deste programa por sua vez.
No início do código temos algumas referencias a namespaces (será abordado mais a
frente)
Comentários
O método Main é um método static (estático) que reside em uma classe ou uma
estrutura.
Entrada e Saída
A instrução:
Console.WriteLine(curso);
Ele exibe no console o valor do seu parâmetro seguido por uma nova linha.
Uma aplicação console é uma aplicação que roda através de uma linha de
comando, no prompt do DOS
Vamos fazer uma pequena revisão de como criar uma aplicação Windows
Clique em OK
Tela inicial
Adicionando Controles
Para adicionar os controles acima basta com o mouse sobre a caixa de ferramentas
e arrastar os controles para o formulário.
Por enquanto podemos observar que ele foi declarado na linha 18 e o seu corpo
começa na linha 19 e termina na linha 21.
Este procedimento é privado (private), é do tipo void (ou seja não retorna nada), se
chama button1_Click e recebe como parâmetros a variável sender que é do tipo
Object e a variável e que é do tipo EventArgs.
Adicionando instruções
Instruções
Uma instrução pode declarar variável ou constante, uma chamada local um método,
criar um objeto, ou atribuir um valor a uma variável, propriedade ou campo.
Visibilidade da variável
Expressões
Uma expressão é um fragmento do código que pode ser avaliado como um único valor,
objeto, método, ou espaço para nome.
Nomes simples pode ser, por exemplo o nome de uma variável, parâmetro, método,
espaço para nome ou tipo.
Exemplo
Expressões podem usar operadores que por sua vez usam outras expressões como
parâmetros ou chamadas de método cujos parâmetros são por sua vez outras chamadas
de método, portanto, expressões podem variar de simples a muito complexo.
Uma invocação (chamada) do método requer o nome do método, como um nome como
no exemplo anterior, na linha 20.
Operadores
Operadores que usam dois operandos, tais como operadores aritméticos (+., -) são
chamados operadores binários.
Principais operadores
A instrução C# a seguir contém dois operadores binários, cada um com dois operandos.
Basta sobre o nome do projeto clicar com o botão direito do mouse e selecionar Add - >
Windows Form
Selecionando o Template
Application.Run(new Calculadora());
Avaliação da aula
Exemplo
Envie toda a pasta (zipada) de seu projeto, com as alterações feitas nesta aula
para o seu tutor responsável.
Observação
O prazo máximo para a liberação da próxima aula é de até 2 dias uteis.
C# é uma linguagem fortemente tipada, portanto cada variável e objeto deve ter um tipo
declarado.
Todos os tipos acima , na linguagem C# são aliases dos tipos sistema .NET
Framework.
A tabela a seguir mostra palavras-chave para os tipos do C# que são aliases dos
tipos predefinidos no namespace System.
Todos os tipos na tabela, exceto object e string, são chamados de tipos simples.
Por exemplo, você pode declarar uma variável inteira usando um das seguintes
declarações:
Inicializando as variáveis
Portanto, se você declarar uma variável local sem inicialização como abaixo:
Neste caso estará sendo chamado o construtor padrão da classe Int32 que atribui
um valor inicial para a variável.
Observação
A tabela a seguir mostra os valores padrão dos tipos valor retornado pelos
construtores padrão.
Ele é usado para declarar variáveis que armazenam os valores booleanos, ou seja
true ou false.
Você também pode atribuir uma expressão avaliada como booleana a uma variável
bool.
Observações
Em C++, um valor do tipo bool pode ser convertido em um valor do tipo int, em
outras palavras, false é equivalente a zero e true é equivalente a valores diferentes
de zero.
A palavra-chave byte denota um tipo que armazena valores inteiros conforme indicado
na tabela a seguir.
Você pode declarar e inicializar uma variável byte como neste exemplo:
Tipo char
Constantes do tipo char podem ser gravadas como caracteres literais, seqüência de
escape hexadecimal, ou representação Unicode.
Tipo decimal
Em comparação com o tipo ponto flutuante, o tipo decimal tem uma precisão maior e
um intervalo menor, que torna adequado para cálculos financeiros e monetários.
O intervalo aproximado e a precisão do tipo decimal são exibidos na tabela a seguir.
Se você deseja um literal numérico real deve tratar como decimal, usando o sufixo m ou
M, por exemplo:
Sem o sufixo m, o número é tratado como double (que é o padrão) gerando portanto um
erro do compilador.
Não existe nenhuma conversão implícita entre tipos de ponto flutuante e o tipo decimal;
portanto, um cast deve ser usado para converter entre esses dois tipos.
Tipo double
Palavra-chave double denota um tipo simples que armazena valores de ponto flutuante
de 64 bits.
Por padrão, um literal numérico real no lado direito do operador de atribuição é tratada
como double.
Tipo enum
Palavra-chave enum é usada para declarar uma enumeração, um tipo distinto consiste
um conjunto de constantes nomeadas chamada a lista de enumerador.
Cada tipo de enumeração tem um tipo base, que pode ser qualquer tipo integral exceto
char.
Exemplo
Por exemplo:
Por exemplo:
Tipo float
Palavra-chave float denota um tipo simples que armazena valores de ponto flutuante de
32 bits.
A tabela a seguir mostra o precisão e aproximado intervalo para o tipo float .
Por padrão, um literal numérico real no lado direito do operador de atribuição é tratada
como double
Portanto, para inicializar uma variável FLOAT, use o sufixo f ou F, como por exemplo:
Se você não usar o sufixo na declaração anterior, você receberá um erro de compilação
porque você está tentando armazenar um double em uma variável tipo float.
Tipo int
Palavra-chave int denota um tipo inteiro que armazena valores de acordo com o
tamanho e intervalo mostrado na tabela a seguir.
Você pode declarar e inicializar uma variável do tipo int como este exemplo:
Tipo long
Palavra-chave long denota um tipo integral que armazena valores de acordo com o
tamanho e intervalo mostrado na tabela a seguir.
Você pode declarar e inicializar uma long variável como este exemplo:
Tipo sbyte
Palavra-chave sbyte denota um tipo inteiro que armazena valores de acordo com o
tamanho e intervalo mostrado na tabela a seguir.
Você pode declarar e inicializar uma sbyte variável como este exemplo:
Tipo short
Você pode declarar e inicializar uma short variável como este exemplo:
Tipo uint
Palavra-chave uint denota um tipo inteiro que armazena valores de acordo com o
tamanho e intervalo mostrado na tabela a seguir.
Você pode declarar e inicializar uma variável do tipo uint como este exemplo:
Tipo ulong
A palavra-chave ulong denota um tipo inteiro que armazena valores de acordo com
o tamanho e intervalo mostrado na tabela a seguir.
Você pode declarar e inicializar uma ulong variável como este exemplo:
Tipo ushort
Você pode declarar e inicializar uma ushort variável como este exemplo:
• Classe
• Interface
• Delegates
• Object
• String
Formatação numérica
Boxing e Unboxing
Boxing e unboxing permitem que tipos por valor passem a serem tratados como
objetos.
Isso permite que o tipo de valor para ser armazenado na pilha coletados pelo
Garbage Collector.
Introdução as Matrizes
Uma matriz é uma estrutura de dados que contém um número de variáveis do
mesmo tipo.
Forma simplificada.
Tambem podemos declarar a matriz e inicializar seus valores em uma única linha
O resultado será 3.
Caso não encontrasse o valor seria -1
Matrizes multidimensionais
Por exemplo, a declaração a seguir cria uma matriz bidimensional de quatro linhas
e duas colunas:
Matrizes irregulares
A seguir há uma declaração de uma matriz dimensional única que tenha três
elementos, cada um deles é uma matriz dimensional única de inteiros:
Uma matriz irregular é uma matriz de matrizes, e portanto seus elementos são tipos
de referência e são inicializados para null.
Por exemplo, supondo que você tenha declarado da matriz anterior, esta linha:
Retornará um valor de 3.
Retornará um valor de 5.
Esta instrução fornece uma maneira simples e limpa para percorrer os elementos
de uma matriz.
Por exemplo, o código a seguir cria uma matriz chamada n e intera através da
mesma a instrução foreach:
Introdução a Strings
Uma string (ou seqüência de caracteres) é uma matriz de caracteres.
Strings são imutáveis, significando que eles não podem ser alterados uma vez que
tenha sido criada.
Caracteres de escape
Caracteres de escape, como " \\n " (nova linha) e " \\t " (tabulação) pode ser incluídas
em seqüências.
As instruções:
Se você desejar incluir uma barra dentro da string , ele deve ser precedido com outra
barra invertida.
A seqüência a seguir:
Resultado
ab\\cd
O símbolo @
As instruções:
Caracteres de escape
Caracteres de escape, como " \\n " (nova linha) e " \\t " (tabulação) pode ser
incluídas em seqüências.
As instruções:
Se você desejar incluir uma barra dentro da string , ele deve ser precedido com
outra barra invertida.
A seqüência a seguir:
Resultado
ab\\cd
O símbolo @
As instruções:
Usando StringBuilder
Esse código, por exemplo, altera o conteúdo de uma seqüência sem criar uma nova
seqüência:
Avaliação da aula
Para cada dia do mês e para cada hora, o transito, em kilometros na cidade.
Por exemplo:
Dica:
transito[5][12] = 20;
Observação
O prazo máximo para a liberação da próxima aula é de até 2 dias uteis.
Uma instrução de controle de fluxo permite que o fluxo do programa seja desviado,
mediante certas condições.
• Estruturas de Decisão
• Estruturas de Repetição
Instrução para controle de fluxo pode mediante certas condições, executar ou não
um bloco, ou executar o bloco repetidas vezes, ou seja alterar o fluxo normal da
execução.
Instrução if else
Código Fonte
Simplificando o if
No exemplo anterior, como há apenas uma instrução no if, o bloco não é necessário
e poderíamos simplificar o exemplo.
Por exemplo:
Neste exemplo, o status será verdadeiro se x for maior do que 10 e y tambem for
maior do que 10
Código Fonte
Utilizando else if
Instrução switch
A instrução switch é uma instrução de controle que trata várias seleções, passando
controle a uma das instruções case no seu corpo como o exemplo a seguir:
Código Fonte
Observação
• for
• while
• do..while
Instrução while
Instrução do while
Código Fonte
Instrução for
O for loop executa uma instrução ou um bloco de instruções repetidamente até que
uma expressão especificada for avaliada como false.
Código Fonte
codigo
Instrução foreach
A instrução foreach repete um grupo de instruções para cada elemento em uma
matriz ou uma coleção de objeto.
A instrução foreach é usada para uma iteração através da coleção para obter as
informações desejadas, mas não deve ser usado para alterar o conteúdo da coleção
para evitar resultados imprevisíveis.
Neste exemplo, foreach é usado para exibir o conteúdo de uma matriz de inteiros.
Código Fonte
Um desvio é feito usando instruções próprias para desviar o fluxo do programa, que
causa uma transferência imediata do controle do programa
• break
• continue
• return
Instrução break
A instrução break termina o bloco mais próximo de uma instrução for ou while em
que apareça.
O controle é passado para a instrução após o bloco.
Neste exemplo, a instrução condicional contém um contador que está deve para
contar de 1 a 10, no entanto, a instrução break termina o loop depois do 4.
Código Fonte
Instrução continue
Código Fonte
Instrução goto
Código Fonte
No exemplo acima observe que nenhuma instrução após o return será executada.
Tratamento de Exceções
Exceções e Tratamento de Exceção
Exceções podem ser geradas pelo Common Language Runtime (CLR), pelas
bibliotecas de terceiros, ou via código usando a palavra-chave throw.
Exemplo de Exceção
No exemplo abaixo, estamos tentando dividir por zero.
Tratando a exceção
Classe Exception
Classes Derivadas
A partir da classe Exception, existe uma série de classes, derivadas da mesma para
tratamento mais específico de uma exceção em particular.
Bloco finally
Podemos tambem adicionar um bloco finally
Pode ser utilizado para liberar recursos externos, como arquivos abertos ou
conexão de banco de dados sem precisarem aguardar até que o coletor de lixo em
tempo de execução possa finalizar os objetos.
Por exemplo
Propriedade StackTrace
Exemplo
Verificando nome em branco
Observe que deu erro no método ValidarNome, o qual foi chamado pelo método
cmdIncluir_Click
Definição de Classes
Podemos dizer que as classes são, na verdade, modelos de objetos do mesmo tipo.
Mais à frente veremos maiores detalhes sobre atributos e métodos das classes.
Observação
Para facilitar a assimilação inicial do conceito de uma classe você pode fazer uma
analogia em relação a construção de uma casa.
A partir deste projeto, se você quiser, você poderia construir varias casas.
Neste exemplo o projeto seria a nossa classe e as casas seriam os objetos criados a
partir desta classe.
Observações
Para classes públicas, recomendamos que cada classe seja criada em um arquivo e
que o nome do arquivo seja idêntico ao nome da classe.
Observe que esta classe não tem o método main, ou seja ela não poderá ser
executada diretamente.
Objetos
Os Objetos possuem:
• Estado (atributos)
• Comportamento (métodos)
• Identidade (cada objeto é único)
Observação
No C# todo procedimento ou função deve ser criado dentro de uma classe, portanto
utilizaremos sempre o termo método, independente se o procedimento retorna ou
não um valor.
Instâncias da Classe
Observação
As variáveis não guardam os objetos, mas sim uma referência para a área de
memória onde os objetos estão alocados.
Observações
• Utilize sempre a complementação de código, alem de mais produtivo,
haverá menos chance de erros.
• Você pode utilizar qualquer atributo ou método listado.
• Não adianta tentar digitar algo que não apareça, com certeza estará errado.
Utilizando a classe
Atributos da Classe
Através dos atributos da classe é que podemos passar e receber valores para a
classe.
• Campos
• Propriedades
Campos
Campos são simplesmente variáveis, visíveis a partir das instâncias da classe.
Propriedades
Propriedades são mais sofisticadas podendo ter um bloco get (utilizado para ler um
valor) e um bloco set (utilizado para atribuir um valor) utilizados para atribuir
valores para uma variável privada.
Atributos do tipo campo nada mais são do que variáveis públicas (visíveis fora da
classe, mais à frente detalharemos melhor este escopo)
Valores da inicialização:
• Numéricos como 0
• Strings como null
• Booleanos como false
• Objetos como null
Diagrama
Vantagens de utilizar propriedades
4- Clique no botão OK
Observação
Esta funcionalidade não está disponível nas versões Express do Visual Studio
Nota
Observe que a forma de atribuir valores às propriedades é o mesmo em relação aos
atributos.
Atributos Estáticos
Atributos estáticos não devem ser instanciados da classe para serem usados
Observe que ao instanciar a classe o atributo cor não esta mais disponível.
Para acessar o atributo cor utilizamos diretamente a partir da classe.
Métodos Estáticos
Para utilizar os métodos estáticos, você não deve instanciar a classe. Veja exemplo
abaixo
Construtores da Classe
Observe que como o Status, dentro da classe Conexao, foi inicializado com a string
Valor inicial, este será o valor que aparecerá no label
O tipo void significa que ele não irá retornar um valor, é o equivalente a um
procedimento.
Diagrama de classe
Caso não retorne nada, utilizamos a palavra void, antes do nome do método.
Sobrecarga de Métodos
No C# pode haver, dentro de uma mesma classe, métodos com nomes iguais, mas
com parâmetros diferentes.
Observe que quando você utilizar este método, aparecerá as 3 opções disponíveis
na classe
Se passar uma String como parâmetro o segundo método é que será executado
Como o método Conectar é do tipo bool podemos executar este método conforme
exemplo abaixo:
Observações sobre a Criação de Métodos
Você pode criar o método em qualquer lugar dentro da classe, desde que não seja
dentro de outro método.
Exemplo
Observação
Este é o padrão ou seja dentro dos métodos das classes sempre utilizamos
as variáveis privadas.
Herança
Por exemplo, no caso de uma classe para clientes podemos ter clientes pessoas
físicas e clientes pessoas jurídicas.
Já a classe Fisica podemos chamar neste caso de classe derivada ou classe filha.
Tambem esta correto dizer que a classe Fisica estende a classe Clientes.
Observação
No C# não existe herança múltipla, ou seja cada classe só pode ter um pai.
Entretanto uma classe pode ter uma ou mais classes filhas.
Classe Cliente
Classe Fisica
Membros protegidos
Observe que dentro da classe Fisica, as variáveis privadas da classe Cliente não são
visíveis.
Se mudarmos estas variáveis para publicas, elas serão visíveis nas classes
derivadas, mas poderão ser vistas diretamente nas instancias, o que não é
recomendável.
Um membro protegido é visível dentro da classe em que foi criada, nas classes
derivadas mas não é visível nas instancias da classe
Observe que na instancia da classe Fisica a variável protegida status não está
disponível, apenas a propriedade Status
Classe Object
Por isso é que em qualquer classe criada, no C#, aparecem estes métodos,
provenientes da classe Object
Pode ocorrer que você necessite criar métodos com o mesmo nome nas classes
derivadas, seja porque a funcionalidade é diferente ou por ter a necessidade de
validações adicionais.
Override
Para isso temos de dizer que o método da classe pai é virtual e na classe filha dizer
que estamos sobrescrevendo.
Observe que no código acima há 2 métodos com o mesmo nome (Imprimir), mas
com parâmetros diferentes (sobrecarga de métodos).
A palavra chave base faz referência a atributos e métodos da classe superior (ou
classe pai)
Exemplo
Polimorfismo
Vamos fazer algumas alterações nas classes Pai e Filha para poder enxergar o
resultado.
a = b;
Ou seja o objeto a que originalmente era uma instancia da classe pai, passou a se
comportar como uma instancia da classe Filha.
O método imprimir, utilizado pelo objeto a, agora foi o método imprimir da classe
Filha
Classes Abstratas
Uma classe abstrata é uma classe que não pode ser instanciada.
Esta classe serve como base para outras classes.
Classes finais
Uma classe final não pode conter classes derivadas, para tanto basta utilizar a
palavra chave sealed
Exemplo
Classes Parciais
Arquivo Parcial1.cs
Arquivo Parcial2.cs
Métodos Abstratos
Isto significa que as classes derivadas da classe Clientes terão necessariamente que
implementar este 2 métodos.
Classes derivadas de classes abstratas
As classes derivadas, à partir de uma classe que contem métodos abstratos são
obrigadas a implementar estes métodos.
A classe abstrata, neste caso, se comporta como fosse um contrato que as classes
derivadas devem obedecer
Observação
interfaces
Para criar uma interface, você cria uma classe comum depois substitui a palavra
chave class pela palavra chave interface.
Depois basta declarar os métodos.
Observe que nas propriedade definimos o nome, tipo e se terá get, set ou ambos.
Implementando a Interface
Observação
Uma classe pode conter herança e implementar várias interfaces.
Neste caso a herança deve ser a primeira, depois as interfaces, separadas por
virgula.
Caso você tente compilar a classe acima haverá vários erros, pois é necessário criar
nesta classe todas as propriedades e métodos da interface.
Introdução
Delegate é uma classe especial que funciona como ponteiros para métodos, quando
criamos uma instância dele, passamos ao construtor o nome do método que
desejamos referenciar.
Por exemplo imagine que você tenha 4 métodos (Somar, Subtrair, Multiplicar e
Dividir), que recebam 2 inteiros e retorne um inteiro.
Desta forma fica mis simples trabalhar com estes métodos, sempre que necessário.
Exemplo prático
O objetivo deste formulário, é baseado nos valores das caixas de texto, calcular o
valor, baseado no botão clicado, utilizando delegates
Utilizando o delegate criado anteriormente
2- Criar uma variável que representa o delegate e definir qual o método que o
mesmo irá executar
instanciaDelegate -= metodo2;
Formulário
Generics
Introdução - Coleções
Principais coleções
• Aluno
Para conter os dados de um aluno específico
• Alunos
Para gerenciar cada aluno (incluir um aluno por exemplo)
Depois criamos uma segunda classe (classe Alunos) que pode conter varios
métodos referente à um cadastro (por exemplo alterar, excluir, incluir), e neste
caso, passamos, ao invés de cada atributo individualmente, passamos como
parametro uma instancia da classe Aluno.
Criando as classes
Classe Aluno
Classe Alunos
Observações
Observe que esta classe tem um método chamado IncluirAluno, que recebe
como parametro uma instancia da classe Aluno.
Este método simplesmente adiciona esta instancia para um ArrayList
Observações
Observe que diretamente a partir da variavel lista, não conseguimos obter os
valores de cada campo, pois para todos os efeitos a variável lista esta sendo
tratada com um objeto.
Para acessar corretamente é necessário fazer uma conversão (cast) para o tipo
desejado.
Não há! Você tem que dizer que tipo de coisa você colocou.
As principais são:
Observe que para acessar corretamente não é necessário fazer uma conversão
(cast) para o tipo desejado.
Métodos Genéricos
Assim como nos tipos genéricos, os métodos genéricos existem para permitir a
passagem de valores genéricos para um determinado método.
Exemplo
Abaixo criamos uma classe Generica a partir da classe List