Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
2. Semestre / 2009
INDICE
1. HISTRICO E PRIMEIROS EXEMPLOS .................................................................................... 3 1.1 Ambiente do Visual Studio ................................................................................................. 3 2. MTODOS DE PROGRAMA EM C#........................................................................................... 5 2.1 Mtodos da classe Math...................................................................................................... 5 3. CONCEITOS DE POO .................................................................................................................. 5 3.1 Encapsulamento, Atributos e mtodos, Ocultao da informao........................................ 5 3.2 Modificadores de Acesso (public e private) ........................................................................ 7 3.3 Construtores ....................................................................................................................... 7 3.4 Utilizao de SETs e GETs / Propriedades ..................................................................... 10 3.5 Composio: referncias a objetos como variveis de instncia de outras classes.............. 11 3.6 Usando a referncia THIS................................................................................................. 13 4. HERANA.................................................................................................................................. 14 5. TRABALHO DE HERANA...................................................................................................... 18 6. POLIMORFISMO ....................................................................................................................... 23 6.1 converso de objetos da classe derivada para objetos da classe base.................................. 23 6.2 Classes Abstratas.............................................................................................................. 24 6.3 Interface ........................................................................................................................... 28 7. EXCEO .................................................................................................................................. 29 7.1 DivideByZeroException ................................................................................................... 29 7.2 Criando uma classe separada para tratamento da Exceo................................................. 30 7.3 Testando estouros com os operadores CHECKED e UNCHECKED................................. 31 8. CONTROLES/COMPONENTES VISUAIS SIMPLES ............................................................... 32 8.1 Label, Textbox e Button ................................................................................................... 32 8.2 Groupbox e Panel ............................................................................................................. 32 8.4. Controle Com Guias (TabControl)................................................................................... 33
Programao Orientada a Objetos C# 1. HISTRICO E PRIMEIROS EXEMPLOS O C# tem razes em C, C++ e Java. Trata-se de uma linguagem visual dirigida por eventos e total/ee orientada a objetos. A Microsoft sabedora das necessidades do mercado para : Aplicativos baseados na Web Ferramentas de programao para dispositivos eletrnicos mveis (por ex telefones celulares) Para atender essas necessidades a Microsoft anunciou sua iniciativa .NET (dot.net ou ponto.net) em junho de 2000. A plataforma .NET possibilita que os aplicativos baseados na Web possam ser distribudos para uma grande variedade de dispositivos (at telefones celulares) e p/computadores de mesa. Ela independente de uma linguagem, permitindo que os programadores criar aplicativos em uma linguagem compatvel com essa tecnologia (cdigo nas linguagens .NET compreendem C#, Visual C++.NET, Visual Basic.NET Java, JScript, Pascal, Perl entre outras) 1.1 Ambiente do Visual Studio Solution Explorer: lista todos os arquivos da soluo. Quando o Visual Studio carregado, o solution explorer est vazio. Quando um novo projeto criado, o solution explorer exibe o contedo desse projeto. ToolBox (caixa de ferramentas): os programadores podem arrastar e soltar controles em um formulrio. Existem grupos de componentes relacionados (Common Controls, Containers, Data, Components, Windows Forms). Janela Properties: Permite a manipulao das propriedades do controle. Na ilustrao abaixo, mostra as propriedades do FORM. A coluna da direita mostra seus valores atuais. O cone EVENTS permite que o controle ou formulrio responda a certas aes do usurio.
Programao Orientada a Objetos C# 1o. exemplo) Imprimindo uma linha de texto using System; // acrescentando biblioteca class Primeiro
{
2o. exemplo) Exibindo uma caixa de texto using System; // acrescentando biblioteca using System.Windows.Forms; class Segundo
{
3. Exemplo) Somando dois nmeros using System; // acrescentando biblioteca class SomaNumeros
{
string primeiroNumero, segundoNumero; int num1, num2, soma; Console. Write( favor entre com primeiro numero inteiro: ); primeiroNumero = Console.ReadLine(); Console. Write( favor entre com segundo numero inteiro: ); segundoNumero = Console.ReadLine(); num1 = Int32.Parse(primeiroNumero); num2 = Int32.Parse(segundoNumero); soma = num1 + num2; Console.WriteLine(\n A soma eh {0 } , soma); Console.WriteLine (\nOs nmeros foram {0} e {1} ,num1, num2);
string pausa = Console.ReadLine();
} /* comentario } */
Operador ( ) parnteses * / ou % + ou -
Precedncia 1. 2. 3
int media, somaTotal, contador, nota; somaTotal = 0; contador = 1; while (contador <= 10) { Console. Write( entre com a nota do aluno: ); nota = Int32.Parse(Console.ReadLine()); somaTotal = somaTotal + nota; contador = contador + 1; } media = somaTotal / 10; Console. WriteLine( \n\nMedia da classe = {0} , media);
string pausa = Console.ReadLine();
} /* comentario } */
2. MTODOS DE PROGRAMA EM C#
double
2.1 Mtodos da classe Math Console.WriteLine( Math.Sqrt(900.0)); // resultado = 30.0 (doubl) Console.WriteLine ( Math.PI ); // exibe 3,14159265358979323846 Cos (x ) Pow (x, y) Sin (x ) Sqrt ( x ) Tan ( x ) Floor ( x ) Ceiling (x ) Cos (0.0) 1.0 X elevado a y Pow (2,3) = 23 = 8
Arredonda x para o maior inteiro no maior que x Floor (9.2) = 9.0 Arredonda x para o menor inteiro no menor do que x Ceiling (9.2) = 10.0
3. CONCEITOS DE POO 3.1 Encapsulamento, Atributos e mtodos, Ocultao da informao A orientao a objetos usa classes para encapsular (isto reunir) dados (atributos) e mtodos (comportamentos). Os objetos tem capacidade de ocultar sua implementao de outros objetos (esse princpio chamado de ocultamento de informaes). Embora alguns objetos possam se comunicar uns com os outros, por meio de interfaces bem definidas (assim como a interface do motorista com um carro inclui um volante, pedal acelerador,
Programao Orientada a Objetos C# pedal de freio e cambio), os objetos no sabem como os outros so implementados (assim como o motorista no sabe como o volante, o motor, o freio, e os mecanismos de transmisso so implementados). Em geral dos detalhes da implementao ficam ocultos dentro dos prprios objetos. Certamente possvel dirigir um carro sem conhecer os detalhes do funcionamento dos motores, das transmisses e dos sistemas de escape. Em linguagens de programao procedimentais (como C) a programao tende a ser orientada a aes. A programao C#, entretanto orientada a objetos. Em C, a unidade de programao a funo (as funes so chamadas de mtodos em C#). Em C#, a unidade de programao a classe. Os objetos so eventualmente instanciados (isto , criados) dessas classes, e as funes so encapsuladas dentro dos limites das classes como mtodos. Os programadores de C se concentram na escrita de funes. Eles agrupam em uma funo aes que executam alguma tarefa e, ento agrupam as funes para formar um programa. Certamente, os dados so importantes em C, mas eles existem principalmente para suportar as aes que as funes executam. Os verbos (calcule, verifique, busque) em um documento de requisitos de um sistema descrevendo os requisitos de um novo aplicativo, ajudam o programador de C a determinar o conjunto de funes que trabalharo juntas para implementar o sistema. Em contraste, os programadores C# se concentram na criao de seus prprios tipos definidos pelo usurio, chamados classes. Tambm nos referimos as classes como tipos definidos pelo programador. Cada classe contem dados e um conjunto de mtodos que manipulam dados. Os componentes de dados ou membros de dados de uma classe so chamados de variveis de instancia. Em C#, a ateno focalizada nas classes, em vez de mtodos. Os substantivos em um documento de requisitos (pessoa, funcionrio, aluno, livro) ajudam o programador de C# a determinar um conjunto inicial de classes com as quais vai comear o processo de projeto.
class VerificaTriangulo { int a, b, c; public VerificaTriangulo(int va,int vb,int vc) { a = va; b = vb; c = vc; } public bool verificaFormacao() { if ((a < b + c)&&(b < a+c)&&(c < a + b)) return true; else return false; } public int verificaTipo() { if (verificaFormacao()) { if ((a == b) && (b == c)) return 1; //equuilatero else if ((a != b) && (b != c) && (c != a)) return 2; //escaleno else return 3; //isosceles } else return -1; //no eh triangulo } public override string ToString() { string temp; switch (verificaTipo()) { case 1: temp = "Equilatero"; break;
public Form1() { InitializeComponent(); } private void bVerifica_Click(object sender, EventArgs e) { try { int a = Int32.Parse(tbA.Text); int b = Int32.Parse(tbB.Text); int c = Int32.Parse(tbC.Text); VerificaTriangulo TR = new VerificaTriangulo(a, b, c); lSaida.Text = TR.ToString(); } catch (Exception erro) { MessageBox.Show("entre com os valores primeiramente...");
} } }
3.2 Modificadores de Acesso (public e private) As 3 variveis de instncia Hora, Minuto e Segundo foram declaradas com o modificador de acesso PRIVATE, indicando que essas variaveis de instancia so acessveis apenas para membros da classe isso conhecido como ocultamento de dados. Isto indica que apenas os mtodos dentro da classe conseguem enxergar as variveis de instancia Hora,Minuto e Segundo. Normalmente, as variveis de instancia so declaradas como PRIVATE e os mtodos como PUBLIC. possvel declarar de outra forma tambm (variveis de instancia PUBLIC e/ou mtodos PRIVATE, conhecidos por serem mtodos utilitrios, usados s dentro da prpria classe). 3.3 Construtores Os constructores de uma classe podem ser sobrecarregados. O C# chama o constructor apropriado fazendo corresponder o nmero, tipos e ordem dos argumentos especificados na chamada do constructor com o nmero, tipos e ordem dos parmetros especificados em cada definio do constructor.
namespace Tempo { class ClasseTempo { private int hora; // de 0 a 23 private int minuto; // de 0 a 59 private int segundo; // de 0 a 59 public ClasseTempo() // constructor { SetTempo(0, 0, 0);//meia-noite } public ClasseTempo(int hora) // constructor so com hora { SetTempo(hora, 0, 0); } public ClasseTempo(int hora, int minuto) // constructor so com minuto { SetTempo(hora, minuto, 0);
} public ClasseTempo(int hora, int minuto, int segundo)// constructor so c/segundo { SetTempo(hora, minuto, segundo); } public ClasseTempo(ClasseTempo tempo)// constructor c/um tempo anterior { SetTempo(tempo.hora, tempo.minuto, tempo.segundo); } public void SetTempo(int valorHora, int valorMinuto,int valorSegundo) { hora = (valorHora >= 0 && valorHora < 24) ? valorHora : 0; minuto = (valorMinuto >= 0 && valorMinuto < 60) ? valorMinuto : 0; segundo = (valorSegundo >= 0 && valorSegundo < 60) ? valorSegundo : 0; } // converte a hora para uma string no formato de hora universal (24 horas) public string ToUniversalString() { // formato D2 =formato de numero digital base 10 - de dois digitos return String.Format("{0:D2}:{1:D2}:{2:D2}", hora, minuto, segundo); } public string ToAmericanoString() { return String.Format("{0}:{1:D2}:{2:D2} {3}", ((hora == 12 || hora == 0) ? 12 : hora % 12), minuto, segundo, (hora < 12 ? "AM" : "PM"));
} } }
Ligando a interface (Form) com a classe ClasseTempo namespace Tempo { public partial class Form1 : Form { ClasseTempo T = new ClasseTempo(); public Form1() { InitializeComponent(); }
private void bVerifica_Click(object sender, EventArgs e) { int h, m, s; if ((tbHora.Text == "")&&(tbMinuto.Text=="")&&(tbSegundo.Text=="")) T = new ClasseTempo();//meia noite else if ((tbHora.Text!= null)&&(tbMinuto.Text=="")&&(tbSegundo.Text=="")) { h = Int32.Parse(tbHora.Text); T = new ClasseTempo(h, 0, 0);//so hora } else if ((tbHora.Text !="")&&(tbMinuto.Text != "")&&(tbSegundo.Text=="")) { h = Int32.Parse(tbHora.Text); m = Int32.Parse(tbMinuto.Text); T = new ClasseTempo(h, m, 0); //hora+minuto } else// todos diferentes de null { h = Int32.Parse(tbHora.Text); m = Int32.Parse(tbMinuto.Text); s = Int32.Parse(tbSegundo.Text); T = new ClasseTempo(h, m, s); } string temp = "Americano=" + T.ToAmericanoString() + "\n" + "Universal=" + T.ToUniversalString(); lSaida.Text = temp; } private void Form1_Load(object sender, EventArgs e) { tbHora.Clear(); tbMinuto.Clear(); tbSegundo.Clear(); } private void bValida_Click(object sender, EventArgs e) { ClasseTempo tempo1 = new ClasseTempo();//00:00:00 ClasseTempo tempo2 = new ClasseTempo(2);//02:00:00 ClasseTempo tempo3 = new ClasseTempo(21, 34);//21:34:00 ClasseTempo tempo4 = new ClasseTempo(12, 25, 42);//12:25:42 ClasseTempo tempo5 = new ClasseTempo(27, 74, 99);//00:00:00 invalido ClasseTempo tempo6 = new ClasseTempo(tempo4);//12:25:42 string saida; saida = "Constructores utilizados: " + "\nTempo1: todos argumentos so default" + "\n " + tempo1.ToUniversalString() + "\n " + tempo1.ToAmericanoString(); saida += "\nTempo2: hora especifica, minutos e segundos so default" +
10
3.5 Composio: referncias a objetos como variveis de instncia de outras classes Hierarquia de Agregao/decomposio Agregao - Um objeto pode ser visto como um agregado de outros objetos (suas partes). Por exemplo, numa casa tpica, pode-se visualizar vrias objetos que a compem, a exemplo do diagrama que se segue:
Este diagrama mostra que um objeto casa composto por vrios outros objetos. A relao entre uma casa e suas partes componentes pode ser lida como: - uma casa < composta por> .. - ma casa < um agregado de> - uma casa < decomposta em> ...
11
Programao Orientada a Objetos C# e apresenta uma viso todo -> parte, ou seja, do objeto mais complexo para as partes que o compe. Uma mudana rpida de perspectiva possibilita um outro tipo de afirmaes: o endereo < parte da> casa os mveis <so parte da> casa
Exemplo: Classe Datas Classe Empregado Classe TestaEmpregado(main) A classe DATE encapsula informaes relacionadas a uma data especfica. A classe EMPREGADO encapsula o nome do funcionrio e dois objetos DATE representando a data de nascimento e de contratao do funcionrio. A classe TestaComposio cria um objeto da classe Empregado para demonstrar a composio O uso de referncias a objetos de classes j existentes, como membros de novos objetos, chamado de composio (ou agregao). Classe DATE
using System; public class Date { private int mes; // de 1 a 12 private int dia; // 1 a 31 private int ano; // qq ano public Date(int d, int m, int a) { if (m > 0 && m <= 12) mes = m; else { mes = 1; Console.WriteLine("mes {0} invalido. setado como mes 1", m); } ano = a; dia = verificaDia(d); }// constructor Date
Classe Empregado
using System; public class Empregado { private string nome; private Date niver; private Date contratacao; public Empregado(string n, int dn,int mn, int an, int dc,int mc, int ac) { nome = n; niver = new Date(dn, mn, an); contratacao = new Date(dc, mc, ac); }// constructor Empregado public string ToEmpregadoString() { return nome + " nasceu em " + niver.ToDateString() + "\n foi contratado em " + contratacao.ToDateString(); } }// class Empregado
12
class TestaTHIS { static void Main(string[] args) { Tempo4 tempo = new Tempo4(12,30,19); MessageBox.Show(tempo.ConstroiString(), "Demosntrando o \"this\" referencia"); } }
13
4. HERANA A herana uma forma de reutilizao de software em que as classes so criadas pela absoro dos dados e comportamentos de uma classe j existente e aprimorando-as com novos recursos. Ao criar uma classe, em vez de escrever variveis de instancia e mtodos completamente novos, o programador pode indicar que a nova classe deve herdar as variveis de classe, propriedades e mtodos de outra classe. A classe anteriormente definida chamada classe base ou super classe, e a nova classe referida como classe derivada. Uma classe derivada, na qual variaveis de instancia, propriedades, e mtodos exclusivos so normalmente adicionados, frequentemente maior do que a sua classe base. Fazemos uma distino entre o relacionamento -um e o relacionamento tem-um. -UM representa herana . Em um relacionamento UM , um objeto de uma classe derivada tambm pode ser tratado como um objeto de sua classe base. Por exemplo, um carro um veculo. Em contraste, tem-um significa composio. No relacionamento tem-um, um objeto da classe contm uma ou mais referncias de objeto como membros. Por exemplo, um carro tem um volante. Um problema de herana que uma classe derivada pode herdar propriedades e mtodos que no precisa ou que no deve ter. responsabilidade do projetista da classe garantir que os recursos fornecidos por uma classe sejam apropriados para as futuras classes derivadas. Mesmo quando a propriedade ou mtodo de uma classe base apropriada para uma classe derivada, essa classe derivada frequentemente exige que a propriedade ou mtodo realize sua tarefa de maneira especifica para a classe derivada. Em tais casos, a propriedade ou o mtodo da classe base pode ser sobreposto (overriden, redefinida) na classe derivada, com uma implementao apropriada. Ponto
Circulo
Cilindro
14
// toda classe em C# herda da classe System.Object // isto significa que ela herda 8 mtodos padro da classe Object // o mtodo ToString da classe Ponto sobrepe o metodo ToString original da classe Object public override string ToString() { return "["+x+", "+y+"]";
} }
using System; class circulo : Ponto { private double raio; public circulo() { // chamada implicita ao contrsuctor de Ponto ocorre aqui } public circulo(int xvalor, int yvalor,double r): base(xvalor,yvalor) { // chamada implicita ao contrsuctor de Ponto ocorre aqui Raio = r;
}
public double Raio { get { return raio; } set { if (raio>=0) raio = value; }
}
public double Diametro() { return raio * 2; } public double Circunferencia() { return Math.PI * Diametro(); } public virtual double Area() //essa palavra chave permite que as classes derivadas //sobreponham um metodo da classe base
15
using System; class Cilindro: circulo { private double altura; public Cilindro() { } public Cilindro(int xvalor, int yvalor, double r, double alt) : base(xvalor, yvalor, r) { Altura = alt; } public double Altura { get { return altura; } set { if (value >= 0) altura = value; } } public override double Area() { return 2 * base.Area() + base.Circunferencia() * Altura; } public double Volume() { return base.Area() * Altura; } public override string ToString() { return base.ToString() + "\n Altura "+Altura; } }// fim da classe cilindro using System; using System.Windows.Forms; public class TestaPonto { public static void Main(string[] args) { /*Ponto p = new Ponto(72,118); string saida = "Coordenada X = " + p.X + "\n" + "Coordenada Y = " + p.Y; p.X = 10; p.Y = 10; saida += "\n\nA nova localizao do ponto = " + p; // note aqui a chamada ao ToString MessageBox.Show(saida, "demonstrao da classe ponto");
16
17
Empregado
Matrcula Nome SalarioBruto SalarioLiquido DataAdmisso Constructor sem args Constructor com args Propriedades ToString
Operador Britadeira Insalubridade Constructor sem args Constructor com args CalculaSalario ToString propriedades
Constructor sem args Constructor com args ToString Propriedades verifica() getData() bissexto()
Tcnico de Explosivos Adicional Periculosidade Constructor sem args Constructor com args CalculaSalario ToString propriedades
18
public void verifica() { int[] dmes={0,31,28,31,30,31,30,31,31,30,31,30,31}; ano = ano > 0 ? ano:1; dmes[2] = dmes[2]+bissexto(); mes = mes > 0 && mes < 13 ? mes:1; dia = dia > 0 && dia <= dmes[mes] ? dia:1;
} // fecha verifica
public String getData() { verifica(); string[] nomes= {"zero", "Janeiro","Fevereiro","Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro","Dezembro"}; string temp = dia+"/"+nomes[mes]+"/"+ano; return (temp); } }// classe datas
19
20
21
===============================================================
22
Programao Orientada a Objetos C# 6. POLIMORFISMO O polimorfismo nos permite escrever programas que tratam uma ampla variedade de classes relacionadas de uma maneira genrica e facilita a adio de novas classes e recursos em um sistema. Os programas podem processar objetos de todas as classes genericamente em uma hierarquia de classes, como objetos de uma classe base comum. Alem disso, novas classes podem ser adicionadas com pouca ou nenhuma modificao nas partes genricas do programa. Polimorfismo ocorre quando uma subclasse tem um mtodo com a mesma assinatura da superclasse (classe base), ou seja, contm a mesma assinatura. Assinatura significa nmero, tipo e ordem dos parmetros. Polimorfismo tambm definido da seguinte forma: Trata-se da criao de uma famlia de funes (mtodos) que compartilham do mesmo nome, mas cada uma tem cdigo independente. 6.1 converso de objetos da classe derivada para objetos da classe base
using System; class Ponto
{
public double Raio { get { return raio; } set { raio = ((value > 0) ? value : 1); }
}
23
using System; using System.Windows.Forms; class testaConversao { static void Main(string[] args) { Ponto p = new Ponto(30, 50); Circulo c = new Circulo(120, 89, 2.7); string saida = "Ponto p " + p.ToString() + "\nCirculo c " + c.ToString(); //relacionamento -um para atribuir circulo c ao um objeto Ponto Ponto p2 = c; saida += "\nCirculo foi atribuido ao Ponto p2 " + p2.ToString(); //converte ponto p2 novamente para circulo c2 Circulo c2 = (Circulo)p2;
saida += "\nPonto p2 (que era circulo) volta a origem circulo c2 " + c2.ToString();
6.2 Classes Abstratas Existem casos em que interessante definir classes para as quais o programador nunca pretende instanciar quaisquer objetos. Tais classes so chamadas classes abstratas. Essas classes no podem ser usadas para instanciar objetos, pois as classes abastratas so incompletas. As classes derivadas devem definir as partes faltantes. As classes abstratas contem um ou mais mtodos abstratos ou
24
Programao Orientada a Objetos C# propriedades abstratas, que so mtodos e propriedades que no fornecem implementao. As classes a partir das quais objetos podem ser instanciados so chamados de classes concretas.
using System;
25
26
27
Programao Orientada a Objetos C# 6.3 Interface Interfaces especificam conjuntos de servios PUBLIC (isto , mtodos e propriedades) que as classes DEVEM implementar. Uma interface usada quando no existe nenhuma implementao padro para herdar (nenhuma varivel de instancia e nenhuma implementao de mtodo). Uma classe abstrata usada para fornecer DADOS e servios (MTODOS e PROPRIEDADES). Uma interface usada para fornecer servios SEM IMPLEMENTAO (Mtodos e Propriedades) que renem objetos dspares, que se relacionam entre si apenas por meio desta interface. public interface InterfaceIdade
{ int Idade { get; } string Nome { get; } }
using System;
28
" + ultNome; }
7. EXCEO Uma exceo uma indicao de um problema que ocorre durante a execuo de um programa. O nome exceo vem do fato de que, embora um problema possa ocorrer, ele ocorre raramente. A idia que programadores escrevam programas mais robustos, claros e mais tolerantes a falhas. 7.1 DivideByZeroException
using System; using System.Windows.Forms; public class Divisao
{
try
{
Console.WriteLine("\n Entre com o numerador "); int numerador = Int32.Parse(Console.ReadLine()); Console.WriteLine("\n Entre com o denominador "); int denominador = Int32.Parse(Console.ReadLine()); double result = numerador / denominador; string saida = String.Format("{0:F}", result);
29
MessageBox.Show("vc deve entrar com 2 numeros inteiros", "formato invalido de entrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
7.2 Criando uma classe separada para tratamento da Exceo Exemplo: Extrair a raiz quadrada de um nmero negativo
using System; class NumeroNegativoExcecao : ApplicationException { public NumeroNegativoExcecao() : base("Operacao Ilegal devido a numero negativo")
{ }
try
{
Console.WriteLine("\n Entre com um numero real: "); double numero = Double.Parse(Console.ReadLine()); if (numero < 0) throw new NumeroNegativoExcecao("No permitido raiz quadrada de nro negativo"); double result = Math.Sqrt(numero); string saida = String.Format("{0:F}", result); MessageBox.Show(saida, "testando exceo raiz quadrada");
}
MessageBox.Show("vc deve entrar com numero inteiro positivo", "formato invalido de entrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
30
int numero1 = Int32.MaxValue; ;// 2.147.483.647 int numero2 = Int32.MaxValue; int soma = 0; Console.WriteLine("numero 1 {0:D} \n Numero 2: {0:D}", numero1, numero2); try
{
Console.WriteLine(overExcecao.ToString());
}
Console.WriteLine("\nSoma depois de checar a operao {0}",soma); Console.WriteLine("\nSoma de inteiros no checados "); soma = unchecked(numero1+numero2); Console.WriteLine("soma depois de operao no checada {0}",soma); string pausa = Console.ReadLine();
}// main }// Overflow
Resumo sobre Exceo: Uma exceo uma indicao de um problema que ocorre durante a execuo de um programa; O tratamento de excees permite que os programadores criem aplicaes que podem resolver excees, frequentemente permitindo que o programa continue sua execuo como se nenhum problema tivesse sido encontrado. O tratamento de excees permite que os programadores escrevam programas claros, robustos e mais tolerantes a falhas. O tratamento de excees permite que o programador remova o cdigo de tratamento de erros da linha principal da execuo do programa. Isso melhora a clareza do programa e tambm sua capacidade de modificao.
31
Programao Orientada a Objetos C# 8. CONTROLES/COMPONENTES VISUAIS SIMPLES 8.1 Label, Textbox e Button TextBox propriedades: Name: tB1 PasswordChar: * Label propriedades: Name: l1 BorderStyle: Fixed3D Autosize: false Text: vazio Button propriedades: Name: b1 Text: Mostrar Texto Evento Click do boto
private void b1_Click(object sender, EventArgs e) { l1.Text = tB1.Text; }
8.2 Groupbox e Panel GroupBox (caixas de grupo) pode exibir uma legenda Panel (painis) pode ter barra de rolagem
GroupBox propriedades: Name gB1 Text: sexo Panel propriedades: AutoScroll: padro false (se true aparece as barras de rolagem) BorderStyle: borda (padro none) outras opes Fixed3D e FixedSingle Label propriedades: RadioButton propriedades: Name: l1 e l2 Name (masculino/femino) Text: (vazio) Text (masculino/feminino) Checked: true para masculino private void feminino_CheckedChanged(object sender, EventArgs e) { l1.Text = "Feminino selecionado"; } private void masculino_CheckedChanged(object sender, EventArgs e) { l1.Text = "Masculino selecionado"; } private void bsoma_Click(object sender, EventArgs e) } { l2.Text = "boto soma"; private void bsubtrai_Click(object sender, EventArgs e) } { l2.Text = "boto subtrai"; private void bdivide_Click(object sender, EventArgs e) } { l2.Text = "boto divide";
32
Exercicio
1 Label : posicione-o abaixo do TabControl. Mude o Name para msg 1 TabControl. Para adicionar PagPages, clique boto direito no TabControl e d ADD TAB Verifique na caixa de Propriedades se est selecionado o TabControl ou o TabPage Modifique a propriedade Text dos TabPages: Cor, Tamanho, Msg e Sobre Dentro de cada TabPage, coloque RadioButtons (mude Name e Text) Form1.cs
public partial class Form1 : Form
33
private void Azul_CheckedChanged(object sender, EventArgs e) { msg.ForeColor = Color.Blue; } private void Preto_CheckedChanged(object sender, EventArgs e) { msg.ForeColor = Color.Black; } private void vermelho_CheckedChanged(object sender, EventArgs e) { msg.ForeColor = Color.Red; } private void doze_CheckedChanged(object sender, EventArgs e) { msg.Font = new Font(msg.Font.Name, 12); } private void catorze_CheckedChanged(object sender, EventArgs e) { msg.Font = new Font(msg.Font.Name, 14); }
private void dezesseis_CheckedChanged(object sender, EventArgs e) { msg.Font = new Font(msg.Font.Name, 16); } private void oi_CheckedChanged(object sender, EventArgs e) { msg.Text = "Oiiiiii"; } private void tchau_CheckedChanged(object sender, EventArgs e) { msg.Text = "Tchauuuuuu"; } }// fecha class
34