Академический Документы
Профессиональный Документы
Культура Документы
Comentrios
Tipos:
nica linha:
//
Comentrios
/// <summary> Gravar erro no arquivo de Log. </summary> /// <return>mtodo sem retorno (void) </return> /// <param name="strMessage">Mensagem a ser gravada </param> /// <param name="objPagina">Pgina de referncia </param> public static void Log(string strMessage, System.Web.UI.Page objPagina) { string arquivo = ConfigurationManager.AppSettings["PathLog"]; string diretorio = ConfigurationManager.AppSettings["PathLog"]; diretorio = diretorio.Substring(0, diretorio.LastIndexOf("\\")); StreamWriter text = new StreamWriter(arquivo, true); text.Write("\r\n" + DateTime.Now.ToString("dd/MM/yyyy - HH:mm") + "\r\n" + strMessage + "\r\n"); text.Close(); ExibirMensagemErro.Exibir("ERRO INESPERADO.", objPagina.Page); }
Comentrios
Coloque o curso sobre o parmetro do mtodo e pressione : Ctrl+Shift+Espao para visualizar os comentrios.
Mostrando Linhas
No Visual Studio 2005, escolha no menu a seguinte opo para apresentar o nmero da linha referente ao cdigo implementado. Este recurso lhe ajudar na hora de identificar possveis erros no cdigo.
Region
Permite uma viso hierrquica e resumida de todo o cdigo. #region construtor da classe public MinhaClasse() { // implementao } #endregion
2X
Classe
O C# requer que toda a lgica de programao seja definida dentro de classes. Uma vez definida, a classe poder ser O nome do arquivo (.CS) no precisa chamada (instanciada) em qualquer lugar do programa. ser igual ao nome da classe Public class MinhaClasse { Public static int contador; Public void MinhaClasse() { contador++ } }
Classe: Sempre ser necessrio definir um tipo (classe)
Corpo da classe: Delimitado por { e } Variveis e mtodos devem estar dentro da classe
Classe
Define um tipo Unidade fundamental da POO Um conjunto de dados e mtodos (operaes sobre os dados) class Conta { ... }
Classe
Campos da instncia
Cada instncia tem uma cpia do campo (uma cpia dos dados) Tambm chamados variveis de instncia
class Conta { public double saldo; }
Objetos
Os objetos so instncias das classes criadas com o uso da palavra reservada new Conta corrente = new Conta(); Conta poupanca = new Conta();
saldo
corrente
Objetos
saldo
poupana
Objetos
So criados a partir das classes atravs do operador new Memria alocada para todas as variveis de instncia Um objeto tambm chamado instncia A criao de um objeto chamada instanciao ou ativao
Mtodos
Os mtodos representam o comportamento da classe
Em C# no existem funes, pelo menos no ao p-da-letra, basta declar-las normalmente como sendo mtodos estticos da classe obrigatria. class Conta {
public double saldo = 0; public double Sacar(double valor) { this.saldo -= valor; return this.saldo; }
Mtodos
Como definir um mtodo Visibilidade (Public, Private, etc.) Tipo do mtodo (static) Tipo de retorno (void sem retorno) Nome do Mtodo (Exibir) Tipo de parametro do mtodo (string) Nome do parmetro do metodo (mens) Exemplo :
Mtodos
this: Referncia para o prprio objeto Usado na implementao de mtodos do objeto No de uso obrigatrio, salvo nas situaes onde h conflito de nomes public double Abrir(double saldo)
{
this.saldo = saldo; }
1X
Mtodos
Podem ser Exemplo: sobrecarregados:
Classe possui mais do que um mtodo com o mesmo { nome this.saldo -= valor;
return this.saldo; } Porm a lista de parmetros deve ser diferente public double Sacar(int valor) O compilador seleciona a verso correta baseado nos { this.saldo -= valor; tipos de parmetros passados return this.saldo; } public double Sacar(double valor)
Parmetros - ref
Passagem por referncia:
As alteraes realizadas sobre o parmetro no mtodo so mantidas usa-se as palavras-chave ref ou out
Parmetros - out
A diferena do out que o parmetro deve ser inicializado dentro do mtodo Public void ParametroOut() { int original = 10; AlterarValor(out original); } static void AlteraValor (out int valorOut) { valorOut = 1; }
2X
Usando...
public class Utilitarios { static void PreencherParametros() public static string VariosParametros(params string[] nomes) { { Utilitarios.VariosParametros string retorno = String.Empty; ( foreach (string nome in nomes) Ol", "Turma", "Estamos", { "aqui", "para", +nome; retorno = retorno+"aprender", "C#" ); } } return retorno; } }
Modificadores de Classe
No C#, os seguintes modificadores de classe podem ser usados :
Declarao Abstract
Definio Tira a capacidade da classe ser instanciada diretamente podendo apenas ser herdada para ser especificada Tira a capacidade da classe ser herdada, podendo ser somente instanciada. No comumente implementada.
sealed
3x
2X
public class AnimalMarinho : Animal mtodo abstrato deve ser Um { implementado nas classes concretas (derivadas). public override void Exibir(System.Web.UI.Page objPagina) { No h corpo no mtodo abstrato. ExibirMensagemErro.Exibir("O peixe um caractere de ponto-eSomente nada no mar azul", objPagina.Page); vrgula. } }
2X
public void Mensagem() Public class Sub : DaquiNaoPassa { { ExibirMensagemErro.Exibir("Classe Selada)", objPagina.Page); } }
Modificadores de Membros
1X
Os modificadores de membros podem ser aplicveis a variveis membros, propriedades e mtodos, que so definidos como tipos. Declarao
abstract
Definio
Quando declarado um membro na classe pai, obriga o desenvolvedor a implementar o membro para a classe filha. Obs.: no suporta implementao na classe pai Indica que o mtodo ou assessor pode ser anulado por classes de herana. Obs.: suporta implementao na classe pai e no obriga a implementao na classe herdada. Este modificador aplicado em campos e variveis locais. A expresso constante avaliada no tempo de compilao; portanto, ele no pode conter referncias.
virtual
const
Modificadores de Membros
Declarao override Definio Usado para modificar um mtodo ou assessor que definido como virtual ou abstract em uma classe base herdada. A assinatura da prevalncia e o mtodo da base deve ser igual Um membro declarado com o modificador readonly s pode ser alterado durante a declarao ou no construtor da classe Os membros declarados como static pertencem classe e no a uma instncia da classe. Voc pode utilizar static com campos, mtodos, propriedades, operadores e at mesmo construtores. Anula a capacidade de herana do membro
readonly
static
sealed
1X
Modificadores de Acesso
No C#, os seguintes modificadores de acesso podem ser usados para os membros de classe:
Declarao
Public Private (padro) Internal Protected protected internal Static (em mtodos)
Definio
Acesso ilimitado a partir de qualquer outra classe Acesso limitado somente classe que contm o membro Acesso limitado a qualquer outra classe que esteja no mesmo assembly (programa .exe / dll) Acesso limitado somente classe que contm o membro e s classes derivadas dela Acesso limitado classe que contm o membro, s classes derivadas dela, e s classes do mesmo assembly Indica que o mtodo est associado a nenhum objeto e chamado no contexto da classe com a syntaxe classe.metodo ao invez de objeto.metodo
Modificadores de Acesso
As seguintes regras se aplicam quando nenhum modificador de acesso especificado: Namespaces so sempre pblicos Classes so sempre publicas Membros da classe so sempre privados
Classe
Public internal Private - nao Protected - nao Protected Internal - nao Static (S pode conter membros estaticos)
Public static decimal soma(decimal n1, decimal n2) { result = n1 + n2; } Ver o mtodo ExibirMensagemErro.cs
Constantes
Campos ou variveis locais podem ser declarados como constantes usando a palavra-chave const, correspondente ao static final no Java Podem ser campos ou variveis locais de mtodos
1X
Constantes
class ExConstante { public const int dez = 10; }
Campos:
Inicializao somente na declarao
Somente-leitura (readonly)
Podemos definir campos somenteleitura atravs do modificador
readonly
Campos somente-leitura s podem ser inicializados:
Na declarao No construtor da classe
3X
Somente-leitura (readonly)
class ExSomenteLeitura { public readonly int dez = 10; } class ExSomenteLeitura { public readonly int dez; public ExSomenteLeitura() { dez = 10; Campos: } } Inicializao no mtodo construtor
Campos:
Inicializao na declarao
Somente-leitura (readonly)
A diferena bsica entre constantes (const) e somente-leitura (readonly) que campos somente-leitura podem assumir diferentes valores atravs do uso de diferentes construtores Readonly pode ser usado quando s podemos saber o valor do membro em tempo de execuo Qualquer tentativa de alterao em um campo do tipo readonly fora dos locais permitidos gera erro de compilao
No precisam que uma instncia seja criada para serem usados (new)
So inicializados antes mesmo que uma instncia da classe seja criada So compartilhados por todas as instncias da classe
1X
1X
Construtores So mtodos especiais da classe que so executados no momento da ativao (instanciao) do objeto O construtor de uma classe deve ter as seguintes caractersticas:
Pblico No ter declarao do tipo de retorno Ter o mesmo nome da classe
1X
Construtores
Se o programador no define um obrigado a definir um O programador no construtor, o compilador mtodo construtor C# o faz: suas classes: para as public Pessoa() { } public class Pessoa
{ }
Este construtor chamado Construtor padro (default private string nome; constructor) Se ao menos um construtor definido (qualquer um), o construtor padro no criado pelo compilador!!!
Construtores Construtores podem ser sobrecarregados Chamamos outros construtores atravs da palavra-chave this
Esta chamada deve ser feita no cabealho do mtodo, no no seu corpo!
3X
Construtores
public class Ponto { private int x, y; public Ponto(int x, int y) { this.x = Construtor x; this.y = y; }
Sobrecarga
public Ponto() : this(0,0) { Construtor } }
1X
Construtores
public class Ponto { private int x, y; Chamada ao mtodo construtor sobrecarregado. public Ponto(int x, int y) { No no corpo do mtodo e sim no seu this.x = x; cabealho! this.y = y; } public Ponto() : this(0,0) {} }
Enumerao
Conjunto de valores constantes do tipo numrico Esses valores tm significado significativo para o cdigo Podem ser acessados atravs de um nome e no pelo seu valor propriamente dito
Cdigo fica mais fcil de ler e compreender Pode ser suportado pelo Intellisense (VS.NET) e tecnologias similares em outros editores Restringe os valores que podem ser recebidos por um determinado tipo
3X
Enumerao
public class Cliente {
Varivel do tipo enum: Atribuio: public uma varivel do tipo enum, o seu enum TipoCliente { Ao declarar
tipo o nome da emunerao Ao realizar Ouro Bronze, Prata, uma atribuio para uma varivel do tipo enum, devemos prefixar o valor com o } nome da enumerao:
Declarao:
public
Ex.: A declarao pode TipoCliente tipo; ser feita no corpo da classe TipoCliente.Bronze ou em um Namespace. No pode ser feita dentro de um mtodo!
1X
Enumerao Podemos alterar o tipo base da enumerao: public enum TipoCliente : byte { Bronze, Prata, Ouro }
1X
Enumeraes
Os valores atribudos a cada valor iniciam em 0 (zero)
Mas podemos forar valores especficos para cada enum enumerao: public item da TipoCliente : byte
{
public enum TipoCliente : byte Bronze, // 0 { Prata, // 1 Bronze = 1, Ouro // 2 Prata = 2, } Ouro = 3 }
Struct
Parecidas com classes
Suas instncias so do tipo valor, sendo, portanto, mais eficientes do que as classes
public struct Estrutura { public int Codigo; public string Nome; }
Struct
No podem ter construtor padro (sem parmetros), mais pode conter construtor com parmetros.
public struct Estrutura { public int Codigo; public string Nome; public Estrutura (int codigo, string nome) { this.Codigo = codigo; this.Nome = nome; }
Struct
Usando o struct
Estrutura[] structClientes = new Estrutura[10]; int linha = 0; for (int contador = 0; contador < structClientes.Length; contador++) { linha++; structClientes[contador].Codigo = linha; structClientes[contador].Nome = "NOME-"+ linha.ToString("000"); lbxStruct.Items.Add("Cdigo => " + structClientes[contador].Codigo); lbxStruct.Items.Add("Nome => " + structClientes[contador].Nome); lbxStruct.Items.Add(string.Empty); }
2X
Struct
No podem herdar de outras No podem ser classes bases de outras classes public struct Estrutura : ClasseBase { ... Estrutura uma Struct, } public SubClasse : Estrutura { ... }
Uma classe classesqualquer
Struct
Internamente, as structs so definidas como classes sealed derivadas de
System.ValueType
Classes sealed so classes que no podem ser extendidas (no pode haver subclasses de classes sealed) Em geral, o uso de structs indicado quando:
A quantidade de dados contidos no tipo pequena (pontos, RGB, etc.) O tipo define poucos ou nenhum mtodo
Propriedades Mecanismo da CLR que permite habilitar controle de acesso aos membros da classe Propriedades podem ter mtodos para:
Atribuio (setters) Acesso (getters)
5X
Propriedades
public class Pessoa { private string nome;
Usando...
Cdigo a ser executado quando a propriedade for lida. Deve retornar um valor do mesmo tipo da propriedade new (string no caso) Pessoa();
set Cdigo a ser executado quando a txtNome.text = joao.Nome;um valor atribudo a ela. A { propriedade tiver this.nome = value; } } }
varivel value automaticamente criada e tem escopo dentro do corpo do mtodo set
1x
Propriedades
Um dos mtodos (ou o get ou o set) pode no existir
public class Pessoa { private string nome; public string Nome { get { return this.nome; } } Propriedade somente-leitura
1x
Propriedades
Um dos mtodos (ou o get ou o set) pode no existir
public class Pessoa { private string nome; public string Nome { set { this.nome = value;} } }
Propriedade somente-escrita
Propriedades
Qualquer violao dos mecanismos de acesso s propriedades (tentativa de leitura de propriedade somente-escrita ou de escrita de propriedade somente-leitura) causar erro em tempo de compilao