Sunteți pe pagina 1din 63

TREINAMENTO INTERNO

Rodrigo Calazans Negro rodrigo.calazans@voeit.com.br Jundia, SP Dezembro 2012

CSHARP (C#)

Linguagem orientada a objetos;

Desenvolvida especificamente para a plataforma .Net; Evoluo das linguagens C e C++;


TUDO OBJETO;

Cdigo

organizado em namespaces;

Nvel

de organizao superior: Assembly;

VARIVEIS
Tipo C# bool byte char Tipo .NET System.Boolean System.Byte System.Char Faixa de dados True ou False -127 a 128 U + 0000 a U + ffff

decimal double
float int long object short string Uint Ulong ushort

System.Decimal System.Double
System.Single System.Int32 System.Int64 System.Object System.Int16 System.String System.UInt32 System.UInt64 System.UInt16

1,0 x 10-29 a 7,9 x 1028 5,0 x 10-324 a 1,7 x 10308


1,5 x 10-45 a 3,4 x 1038 -2.147.483.648 a 2.147.483.647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.808 0 a 4.294.967.295 0 a 18.446.744.073.709.551.615 0 a 4.294.967.295 0 a 18.446.744.073.709.551.615 0 a 65.535

ESCOPO DE VARIVEIS
Declarao Escopo

private

Acessvel dentro do mesmo mdulo, classe ou estrutura

internal

Acessvel dentro do mesmo Projeto, mas no fora dele.

protected

Acessvel dentro da mesma classe ou numa classe derivada dela.

protected internal

Acessvel dentro das classes derivadas ou dentro do mesmo projeto

public

Acessvel em qualquer lugar do projeto.

DECLARAO DE VARIVEIS:

Declarao de variveis:
public int Codigo; private string Nome;

Inicializao de variveis:
public int Codigo; Codigo = 2;

ou
public int Codigo = 2;

ESTRUTURA DE UM PROGRAMA
Um

programa pode conter um ou mais arquivos e cada arquivo pode conter:


Namespaces; Tipos: classes, estruturas, interfaces, delegaes, enums; Membros: constantes, campos, mtodos, propriedades, indexadores, eventos, operadores, construtores; Outros: comentrios e instrues.

ESTRUTURA DE UM PROGRAMA
using System; using System.Windows.Forms;

namespace WindowsApplication1 {
public class Form1 : System.Windows.Forms.Form { // declarao de variveis private bool salvou = false;

public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { // cdigo do mtodo Dispose } private void InitializeComponent() { // aqui esto os mtodos requeridos para a montagem dos componentes na tela }
} }

CLASSE
class <nome da classe> { // membros da classe }
Palavra-chave nenhum ou internal public abstract ou internal abstract Acesso classe A classe acessvel apenas dentro do projeto atual A classe acessvel de qualquer lugar A classe acessvel apenas no projeto atual, no podendo ser instanciada, apenas derivada.

public abstract

A classe acessvel de qualquer lugar, no podendo ser instanciada, apenas derivada

sealed ou internal sealed

A classe acessvel apenas no projeto atual, no podendo ser derivada, apenas instanciada

public sealed

A classe acessvel de qualquer lugar, no podendo ser derivada, apenas instanciada

CLASSE
internal class MinhaClasse { // membros da classe } public class MinhaClasse { // membros da classe pblica } public abstract class MinhaClasse { // membros da classe abstrata } public sealed class MinhaClasse { // membros da classe }

CLASSE

Indicando uma herana


public class MinhaClasse : System.Windows.Forms.UserControl { // membros da classe }

Definindo que a classe MinhaClasse derivada da classe System.Windows.Forms.UserControl

INTERFACES

Conjunto de mtodos e propriedades pblicos que so agrupados para envolver funcionalidades especficas. Descrevem um grupo de comportamentos relacionados que podem pertencer a qualquer classe ou estrutura;

INTERFACE

Sintaxe Possui apenas assinaturas dos mtodos (contrato)


interface <nome da interface> { // membros da interface }

INTERFACE
using System; namespace ConsoleApplication1 { interface IAnimal { // Propriedades string ClasseBiologica { get; set; } string Alimentacao { get; set; } // Mtodo Animal IncluirAnimal(int Codigo); } }

INTERFACES
Apenas

define os membros;

A interface no pode possuir cdigo algum;

Seus membros so sempre pblicos;


Podem ser implementadas por vrias classes;

OBJETOS
So

instncias de classe;

Possuem dados, identidade e comportamento;

Podem ser estruturas;

definidos

atravs

de

classes

OBJETOS

<nome da classe> <nome da varivel> = new <nome da classe> (<parmetros>)

public class minhaClasse { public Cliente (int codigo) { //Construtor da classe Cliente } public Cliente (int codigo, string nome) { //Construtor da classe Cliente } public class TesteCliente { //Criando um objeto Cliente com valores Cliente meuCliente = new Cliente(16, "Maria da Silva"); } }

CONSTRUTORES

chamado sempre que uma classe criada;

Inicializa as variveis de instncia;

Fornece implementao System.Object;

padro

atravs

de

CONSTRUTORES

Deve possuir o mesmo nome da classe;


Construtor Padro : no possui parmetros;
public class Status

{
public bool estaAtivo;

public Status() { estaAtivo = true;

}
}

CONSTRUTORES

Sobrecarga (overload) de construtores


public class ContaCorrente { public double Saldo; // Primeiro construtor public ContaCorrente(double SaldoParcial) { Saldo = SaldoParcial; } // Segundo construtor public ContaCorrente(double SaldoTotal, double Juros) { Saldo = (SaldoTotal * Juros) + Saldo; } }

DESTRUTORES

So usados para excluir uma instncia de classe S existe um por classe

O desenvolvedor no chama o destrutor


S pode existir para classes e no para struct

DESTRUTORES

A chamada gerenciada pelo Garbage Collector; Podemos forar a chamada ao coletor de lixo:
class ContaCorrente { ~ ContaCorrente() // destructor { // limpando as instrues
} }

PROPRIEDADES

Fornecem acesso aos dados dos objetos Permite a manipulao dos dados, atribuindo ou recuperando valores Acessores:

get : recupera o valor de um campo set : modifica o valor de um campo;

PROPRIEDADES

Sintaxe
<escopo> <modificadores> <tipo do dado> <nome da propriedade> { get { // Varivel que ser retornada } set { // Cdigo para modificar a varivel } }

Argumentos: <escopo> - define o nvel de visibilidade da propriedade <modificadores> - indica o nvel de acessibilidade da propriedade. opcional; <tipo do dado> - o tipo do dado (int, string, etc) que a propriedade est manipulando; <nome da propriedade> - o nome que o desenvolvedor d para a propriedade e atravs do qual ela ser acessada;

PROPRIEDADES

Modificadores de Acesso:
Significado

Modificador

New

usado para esconder explicitamente um membro herdado. Para esconder esse membro, declare-o na classe derivada usando o mesmo nome que est na classe base, usando o modificador new.

Static

Indica que a propriedade no pode ser referenciada atravs de uma instncia. Deve ser referenciada atravs de um tipo de dado.

Virtual

Indicando que um membro virtual, estamos permitindo que esse membro seja sobrescrito nas classes derivadas (override)

Abstract

Indica que o membro no pode ser herdado, ou seja, usado apenas pela classe base.

Override

usado quando se deseja sobrescrever um membro j declarado.

PROPRIEDADES

Exemplo

public virtual String Nome { get { return nome; } set { nome = value; } } public Int Codigo { get { return codigo; } set { codigo = value; } }

EVENTOS

So aes-resposta do objeto a alguma ao do usurio, do cdigo do programa ou do sistema.

Deve possuir o cdigo que ir definir o comportamento do objeto quele evento;

EVENTOS

Assinatura do Evento: Cdigo que inserimos no evento

Manipulador de Evento ou Event Handler: so mtodos que associam o objeto a determinado evento; indica ao programa como agir na resposta a um evento

EVENTOS

Exemplo
public delegate void ButtonEventHandler(); class TestButton {

// Declarando o event handler para o evento

// OnClick um evento, implementado pelo manipulador ButtonEventHandler.

public event ButtonEventHandler OnClick;


// Um mtodo que dispara o evento

public void Click() { OnClick(); } }

EVENTOS

Continuao
// Criando uma instncia da classe TestButton TestButton mb = new TestButton(); // Especificando o mtodo que ir ser disparado pelo evento Click() mb.OnClick += new ButtonEventHandler(TestHandler); // Especificando um mtodo annimo adicional mb.OnClick += delegate {System.Console.WriteLine("Hello, World!"); }; // Disparando o evento mb.Click();

MTODOS
So as funes que os objetos possuem, ou seja, do acesso as funcionalidades do objeto.

Podem ser pblicos, privados ou protegidos; Podem ou no conter parmetros;

MTODOS

Sintaxe
<escopo> <tipo de retorno> <nome do mtodo> (<parmetros>) { // cdigo do mtodo }

MTODOS

Exemplo

public double CalcularJuros() { double sdParcial = -520.03; double sdTotal = 0;


if (sdParcial < 0) { Console.WriteLine("Cliente est com saldo devedor.); sdTotal = sdParcial - (sdParcial * 0.06); Console.WriteLine("Saldo devedor:", sdTotal); } return sdTotal; }

MTODOS

Sobrecarga de mtodos Podemos criar diferentes assinaturas para um mtodos, ou seja, podemos criar parmetros diferentes para o mesmo mtodo

NOTA: a assinatura de um mtodo composta pelo nome do mtodo, pelos tipos e posies dos parmetros

MTODOS

Exemplo

public void IncluirCliente (int Codigo) { // cdigo do mtodo } public void IncluirCliente (int Codigo, string Nome) { // cdigo do mtodo } public void IncluirCliente (int Codigo, string Nome, string Cidade, string Estado) { // cdigo do mtodo }

MTODOS

Implementando o mtodo (exemplo)

PASSAGEM DE PARMETRO

Podemos passar parmetros para os mtodos por valor ou por referncia Note que no Visual Basic temos o ByVal e ByRef No C#, usamos o ref e o out, para passar dados tipo valor por referncia e dados tipo referncia por valor

PASSAGEM DE PARMETRO

Considere que temos a varivel abaixo


public int Codigo = 16;

Dado Tipo Valor sendo passado por referncia:


public void ParamPorReferencia(ref int Codigo) { Cdigo = 43; }

Aps a execuo do mtodo, a varivel cdigo ter o valor 43

Dado Tipo Referencia sendo passado por valor:


public void ParamPorValor(out string Nome) { Codigo = 43; Aps }

a execuo do mtodo, a varivel cdigo permanecer com o valor 16

ARRAYS

um grupo de posies de memria adjacentes que tm o mesmo nome e tipo, permitindo o acesso indexado a valores individuais.
uma lista indexada de variveis em uma nica varivel do tipo array

ARRAYS

Sintaxe

<tipo base>[] <nome>

Argumentos: <tipo base> - qualquer tipo de varivel (int, string etc); <nome> o nome da varivel tipo array que est sendo criada.

ARRAYS

Inicializando um Array Forma literal: indicando cada um dos valores do array


int [] meuArray = {3, 9, 12, 15, 18}

Usando new: que inicializa todos os elementos do array


int [] meuArray = new int[5]

ARRAYS

Exemplo

private void Form1_Load(object sender, System.EventArgs e) { int i; int [] meuArray = new int[5]; // executar o cdigo dentro do for enquanto i for menor que o tamanho do array

for (i = 0; i < meuArray.Length; i++) { meuArray[i] = i * 2; }

COLEES

So objetos que podem conter listas de objetos.


Possuem mais funcionalidades que o array O tamanho pode ser aumentado depois de declarado, ao contrrio do array

COLEES

So fortemente tipadas, ou seja, especficas para o objeto que queremos trabalhar Interfaces importantes:
IEnumerable: fornece a capacidade de fazer um loop pelos itens de uma coleo; ICollection: fornece capacidade de obter o nmero de itens em uma coleo e copiar itens em um tipo arrays simples; IList: fornece uma lista de itens para uma coleo juntamente com as capacidades para acessar estes itens, e algumas outras capacidades bsicas relacionadas a lista de itens. IDictionary: semelhante a IList, mas fornece uma lista de itens acessvel por meio de um valor-chave em vez de por um ndice.

COLEES

Sintaxe
ArrayList meuArrayList = new ArrayList(); ArrayList meuArrayList = new ArrayList(); SortedList minhaSorted = new SortedList(); SortedList minhaSorted = new SortedList();

COLEES

Exemplo

private void Form1_Load(object sender, System.EventArgs e) { // declarando um ArrayList ArrayList meuArrayList = new ArrayList(); //adicionando dados ao ArrayList meuArrayList.Add("Banana"); meuArrayList.Add("Ma"); meuArrayList.Add("Laranja"); meuArrayList.Add(1); meuArrayList.Add("Uva"); meuArrayList.Add("Morango"); meuArrayList.Add(1.23); // mostrando o tipo dos itens que foram inseridos no ArrayList foreach (Object item in meuArrayList) { textBox1.Text = textBox1.Text + (item.GetType()).ToString(); }

COLEES

Continuao
//mostrando o contedo do ArrayList // mostrando o tipo dos itens que foram inseridos no ArrayList foreach (Object item in meuArrayList) { textBox1.Text = textBox1.Text + item.ToString(); } //Removendo um elemento especfico usando o mtodo Remove meuArrayList.Remove("Banana"); //removendo um elemento usando o RemoveAt (por ndice) meuArrayList.RemoveAt(2); // Inserindo um objeto numa posio especfica. Note que o Add // adiciona o elemento no final do Array, e no na posio especfica meuArrayList.Insert(2, "Mamo"); // Removendo todos os itens do arrayList meuArrayList.Clear(); }

COLEES

Adicionando itens

Aps as operaes de insero e remoo de itens.

Listando o tipo de cada item

ESTRUTURAS DE CONTROLE DE FLUXO

Estruturas Condicionais: so aquelas que permitem o desvio do fluxo do programa de acordo com uma condio

Estrutura de Repetio: fazem que determinado bloco de cdigo se repita at que uma condio seja ou se torne verdadeira. Podem ser usados de vrias maneiras. Veremos as formas mais usadas

ESTRUTURAS CONDICIONAIS
If...

Else... Essa instruo executa um comando ou uma srie de comandos de acordo com uma condio que colocada nela.
if { } else { <comandos> } (<condio>) <comandos>

Argumentos:

<condio> - a condio que deve ser satisfeita para que os comandos dentro da estrutura sejam executados;
<comandos> - o comando que deve ser executado caso a condio seja satisfeita.

ESTRUTURAS CONDICIONAIS

Exemplo

if (nome == "Maria da Silva") { if (codigo = 2) { if (status == "ativo") { Console.WriteLine("O cliente {0} est ativo", nome); } } } else { Console.WriteLine("O nome no Maria da Silva"); }

ESTRUTURAS CONDICIONAIS

If... Else If... Deve ser utilizada quando mltiplas condies forem testadas
if { (<condio>) <comandos> } else if (<condio>) { <comandos> } else if (<condio>) { <comandos> }

ESTRUTURAS CONDICIONAIS
Switch Parecida com o comando If... Else if, pois possibita o teste de mltiplas condies

switch (<varivel de teste>) { case <valor1 de comparao> : <comandos>


case <valor2 de comparao> : <comandos>

case <valor3 de comparao> : <comandos>


... } Argumentos: <varivel de teste> - a varivel que se quer testar o valor; <valor de comparao> - so os valores que esto sendo comparados para que um cdigo determinado seja executado.

ESTRUTURAS CONDICIONAIS

Exemplo

switch (cod) { case 1: Console.WriteLine("Departamento break; case 2: Console.WriteLine("Departamento break; case 3: Console.WriteLine("Departamento break; case 4: Console.WriteLine("Departamento break; }

Financeiro");

Comercial");

de Desenvolvimento");

de Suporte ao Cliente");

ESTRUTURAS DE REPETIO
For O comando for faz com que o cdigo seja executado por um nmero de vezes determinado em sua estrutura

for (<inicializao>; <condio>; <operao>) { <cdigo a ser repetido> }

Argumentos: <inicializao> - o valor de inicializao da varivel contador; <condio> - a condio para continuar a repetio do cdigo; <operao> - a operao a ser realizada ao final de cada ciclo do for.

ESTRUTURAS DE REPETIO

Exemplo
int i; for (i = 0; i <= 10; i++) { Console.WriteLine("Nmero: {0} ", i); }

ESTRUTURAS DE REPETIO
Foreach O comando foreach usado para percorrer variveis do tipo Array, ArrayList, SortedList, etc. Ele enumera os objetos de uma coleo e percorre por todos eles

foreach (<tipo> <identificador> in <expresso>) { <cdigo a ser repetido> } Argumentos: <tipo> - o tipo do identificador; <identificador> - a varivel que representa o elemento da coleo; <expresso> - uma coleo de objetos (array, arrayList etc)

ESTRUTURAS DE REPETIO

Exemplo

SortedList minhaLista = new SortedList(); minhaLista.Add("Daniela"); minhaLista.Add("Mariana"); minhaLista.Add("Carlos"); foreach (Object item in minhaLista()) { Console.WriteLine("Nome: {0}", item.ToString); }

ESTRUTURAS DE REPETIO
Do... While Do - o cdigo executado ao menos uma vez While pode ou no ser executado ao menos uma vez

do { <cdigo a ser repetido> } while (<condio de continuidade) while (<condio de continuidade) { <cdigo a ser repetido> } Argumentos: <condio de continuidade> - a condio que faz com que o cdigo do seja executado novamente ou no;

ESTRUTURAS DE REPETIO

Exemplo
int i = 10; do { Console.WriteLine("Nmero: {0}", i); i ++; } while (i < 10); // o nmero ser impresso 1 vez

while (i < 10) { Console.WriteLine("Nmero: {0}", i); i ++; } // o nmero no ser impresso

TRATAMENTOS DE ERROS

Usamos o bloco Try... Catch.. Para o tratamento de excees Quando ocorre uma exceo, um objeto herdado da classe System.Exception criado para representar a exceo

TRATAMENTOS DE ERROS

Try: bloco de proteo ao cdigo


Catch: bloco que filtra e trata as excees Finally: pode ou no ser usado e contm cdigo que sempre ser executado

TRATAMENTOS DE ERROS

Sintaxe

try { ...

} catch (<tipo de exceo> e) { ... } finally { ... }

TRATAMENTOS DE ERROS

try { // chama o mtodo que exclui um domnio servicos.ExcluirDominio(dominio.ObjectID); // limpa todos os campos clearFields();

Exemplo

} catch (Exception ex) { // exibe mensagem ao usurio indicando erro durante a tentativa de excluso MessageBox.Show("No foi possvel excluir o domnio virtual." + ex.Message, this.Tag.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); }

S-ar putea să vă placă și