Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tópicos Especiais Introdução ao C#.NET Utilizando aplicações Windows Forms Aula 03 Introdução ao C# Sua origem é fundamentada na linguagem C++ e também possui algumas características da linguagem Java; Assim como Java é orientado a objetos; Segue a mesma estrutura da linguagem Java e C++, com isso facilita a migração dos desenvolvedores; O C# possui o Garbage Collector (semelhante ao Java) que elimina os dados da memória que não estão mais sendo referenciados; Assim como acontece no Java, o C# não aceita herança múltipla, essa idéia pode ser feita utilizando o conceito de interfaces. Conceitos básicos de C# Todos os operadores utilizados em C# são os mesmos utilizados em Java Operadores aritméticos para teste, a variável x é igual a 10 Operador Exemplo Resultado + Adição z = x + 10; z = 20 - Subtração z = x - 10; z = 0 * Multiplicação z = x * 10; z = 100 / Divisão z = x / 10; z = 1 % Módulo (resto de uma operação de divisão) z = x % 3; z = 1 ++ Incremento antes z = ++x; z = 11 Incremento depois z = x++; z = 10 -- Decremento antes z = --x; z = 9 Decremento depois z = x--; z = 10 Conceitos básicos de C# Operadores de atribuição para teste, as variáveis são x = 10 e y = 2 Operador Exemplo Equivalência Resultado = x = y - x = 2 += x += y x = x + y x = 12 -= x -= y x = x - y x = 8 *= x *= y x = x * y x = 20 /= x /= y x = x / y x = 5 %= x %= y x = x % y x = 0 Conceitos básicos de C# Operadores de comparação para teste a variável x é igual a 10 Operador Descrição Exemplo == Igual a x == 20 (falso) != Diferente de x != 20 (verdadeiro) < Menor que x < 20 (verdadeiro) <= Menor ou igual a x <= 10 (verdadeiro) > Maior que x > 20 (falso) >= Maior ou igual a x >= 10 (verdadeiro) Conceitos básicos de C# Operadores lógicos para teste as variáveis são: x = 10 e y = 2 Operador Descrição Exemplo && e (x > y && y < 5) (verdadeiro) || ou (x > y || y > 5) (verdadeiro) ! Negação ! (x != y) (falso) Expressão 1 Expressão 2 && || true true true true true false false true false true false true false false false false Expressão ! true false false true Tabela verdade Tipos de Dados em C# Tipo de dados em C# Equivalente no Framework .Net bool System.Boolean byte System.Byte char System.Char double System.Double float System.Single int System.Int32 long System.Int64 short System.Int16 string System.String Declaração de uma variável Tipo nome; ou Tipo nome = valor inicial; Exemplo: int i; int idade=29; Estrutura de Controle - if if (Condição) { //instruções } else { //instruções } Exemplo: int a = 10; int b = 15; if (a == b) { MessageBox .Show(“A = B"); } else { MessageBox .Show (“A != B"); } Estrutura de controle - switch Verifica somente a relação de igualdade (==), não permite utilizar operações lógicos e operadores de comparação switch(valor) { case 1: //instruções break; case 2: //instruções break; case n: //instruções break; default: //instruções break; } Exemplo: int valor; valor = Convert.ToInt32(textBox1.Text); switch (valor) { case 1: MessageBox.Show("Você escolheu segunda"); break; case 2: MessageBox.Show("Você escolheu terça"); break; case 3: MessageBox.Show("Você escolheu quarta"); break; case 4: MessageBox.Show("Você escolheu quinta"); break; case 5: MessageBox.Show("Você escolheu sexta"); break; default: MessageBox.Show("Final de semana..."); break; } Estrutura de controle – while e do...while while (condição) { //instruções } do { //instruções } while (condição); Exemplo: int valor = Convert.ToInt32(textBox1.Text); int i = 0; String conteudo = ""; while (i <= valor) { conteudo += "nº" + i + "\n"; i++; } MessageBox.Show(conteudo); Estrutura for for(valor inicial; condição; incremento/decremento) { //instruções } Exemplo: int valor = Convert.ToInt32(textBox1.Text); String conteudo = ""; for (int i = 0; i<= valor; i++) { conteudo += "nº" + i + "\n"; } MessageBox.Show(conteudo); Java x C#.Net • Uso de programação orientada a objetos (POO) • Ambiente de desenvolvimento – Java (NetBeans, Eclipse, JCreator, etc) – C#.Net (Visual Studio) • Vantagens e desvantagens Java? – OpenSource, código aberto, multi-plataforma • Vantagens e desvantagens C#.Net? – Operacionalidade, produtividade, limitação de ambiente Estrutura de decisão Java if (condição) { //instruções } else { //instruções } C# if (condição) { //instruções } else { //instruções } Estrutura de decisão (cont.) Java switch (valor) { case condição : //Instruções break; ... default: //instruções } C# switch (valor) { case condição : //Instruções break; ... default: //instruções } Estruturas de repetição Java while (condição) { //instruções } C# while (condição) { //instruções } Estruturas de repetição (cont.) Java do { //Instruções } while (condição); C# do { //Instruções } while (condição); Estrutura de repetição (cont.) Java for (inicialização;condição;incremento){ //instruções } C# for (inicialização;condição;incremento){ //instruções } Procedimento/Funções/Métodos Java - Procedimento modificador void nome(parâmetros){ //instruções } - Função modificador tipo nome(parâmetros){ //instruções return <valor> } C# - Procedimento modificador void nome(parâmetros){ //instruções } - Função modificador tipo nome(parâmetros){ //instruções return <valor> } Classe: Java x C#.Net Java public class Pessoa { private String nome; private String cpf; public Pessoa(String nome, String cpf) { this.nome = nome; this.cpf = cpf; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } ... } C# public class Pessoa { private String nome; private String cpf; public Pessoa(String nome, String cpf) this.nome = nome; this.cpf = cpf; } public String Nome { get { return nome; } set { nome = value; } } ... } Classe: Java x C#.Net Java public class Pessoa { private String nome; private String cpf; public Pessoa(String nome, String cpf) { this.nome = nome; this.cpf = cpf; } public String getNome() { return nome; } public void setNome(Stringnome) { this.nome = nome; } ... } C# public class Pessoa { public Pessoa(String nome, String cpf) { this.nome = nome; this.cpf = cpf; } public string Nome { get; set; } Outra forma de declarar set e get Não é necessário criar uma variável private para Nome ... } Herança: Java x C# .Net Java public class Aluno extends Pessoa { private String rgm; Aluno(String nome, String rgm, String cpf){ super(nome, cpf); this.rgm=rgm; } public String getRgm() { return rgm; } public void setRgm(String rgm) { this.rgm = rgm; } } C# public class Aluno : Pessoa { private String rgm; public Aluno(String nome, String rgm, String cpf) : base(nome, cpf) { this.rgm=rgm; } public String Rgm { get{ return rgm; } set { rgm = value; } } } Herança: Java x C# .Net Java public class Aluno extends Pessoa { private String rgm; Aluno(String nome, String rgm, String cpf){ super(nome, cpf); this.rgm=rgm; } public String getRgm() { return rgm; } public void setRgm(String rgm) { this.rgm = rgm; } } C# public class Aluno : Pessoa { public Aluno(String nome, String rgm, String cpf) : base(nome, cpf) { this.rgm=rgm; } public String Rgm { set; get;} } Outra forma de declarar set e get Não é necessário criar uma variável private para Rgm Java x C# .Net - Curiosidade Os destrutores só existem em .NET e são métodos que são executados automaticamente quando o objeto não é mais utilizado e referenciado. A definição de um destrutor segue as seguintes regras: • Assim como o construtor, não pode ser chamado diretamente; • não tem tipo de retorno; • tem o mesmo nome da classe precedido de “~”; • não pode conter parâmetros; • não pode ser sobrecarregado; • não é herdado (processo de herança de classes); Os destrutores foram concebidos principalmente para liberação de memória, processo que deveria ser feito manualmente pelo programador em linguagens como C e C++. Como no .NET a memória é gerenciada pelo “Garbage Collector”, não temos controle de quando o destrutor será executado. C# - Curiosidade C# public class Aluno : Pessoa { public Aluno(String nome, String rgm, String cpf) : base(nome, cpf) { this.rgm=rgm; } public String Rgm { set; get;} ~ Aluno { // Destrutor // comandos } } C# - Exemplo public class Aluno { //Construtor public Aluno() { Console.WriteLine("Chamando o construtor"); } //Destrutor ~Aluno() { Console.WriteLine("Chamando o destrutor"); } } class Program { static void Main(string[] args) { Aluno a = new Aluno(); a = null; GC.Collect(); // força chamada ao Garbage Collector Console.ReadKey(); } } Interface Gráfica: Java x C#.Net Interface Gráfica: código (Java) private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); ... txtTitulo = new javax.swing.JTextField(); txtRgm = new javax.swing.JTextField(); ... bnt_Prof = new javax.swing.JButton(); btn_Aluno = new javax.swing.JButton(); ... jLabel1.setText("PROFESSOR"); getContentPane().add(jLabel1); jLabel1.setBounds(20, 150, 80, 14); ... getContentPane().add(txtTitulo); txtTitulo.setBounds(90, 200, 130, 20); getContentPane().add(txtRgm); txtRgm.setBounds(80, 40, 120, 20); bnt_Prof.setText("Exibir"); bnt_Prof.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bnt_ProfActionPerformed(evt); } }); getContentPane().add(bnt_Prof); bnt_Prof.setBounds(310, 200, 70, 23); ... ... } Interface Gráfica: código (C# .Net) private void InitializeComponent(){ this.Label1 = New System.Windows.Forms.Label this.Label2 = New System.Windows.Forms.Label ... this.txtRgm = New System.Windows.Forms.TextBox this.txtNomeAluno = New System.Windows.Forms.TextBox ... this.btnAluno = New System.Windows.Forms.Button this.btnProf = New System.Windows.Forms.Button ... this.Label1.AutoSize = True this.Label1.Location = New System.Drawing.Point(30, 33) this.Label1.Name = "Label1" this.Label1.Size = New System.Drawing.Size(44, 13) this.Label1.TabIndex = 0 this.Label1.Text = "ALUNO" ... this.txtRgm.Location = New System.Drawing.Point(129, 56) this.txtRgm.Name = "txtRgm" this.txtRgm.Size = New System.Drawing.Size(100, 20) this.txtRgm.TabIndex = 5 ... this.btnAluno.Location = New System.Drawing.Point(394, 59) this.btnAluno.Name = "btnAluno" this.btnAluno.Size = New System.Drawing.Size(75, 23) this.btnAluno.TabIndex = 9 this.btnAluno.Text = "Exibir" this.btnAluno.UseVisualStyleBackColor = True ... this.AutoScaleDimensions = New System.Drawing.SizeF(6F ,13F) this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font this.ClientSize = New System.Drawing.Size(491, 299) this.Controls.Add(this.btnProf) this.Controls.Add(this.btnAluno) this.Controls.Add(this.txtTitulo) this.Controls.Add(this.xtNomeProf) this.Controls.Add(this.txtNomeAluno) this.Controls.Add(this.txtRgm) this.Controls.Add(this.Label6) this.Controls.Add(this.Label5) this.Controls.Add(this.Label4) this.Controls.Add(this.Label3) this.Controls.Add(this.Label2) this.Controls.Add(this.Label1) this.Name = "Form1" this.Text = "Form1" this.ResumeLayout(False) this.PerformLayout() } Eventos (botões) • Java private void btn_AlunoActionPerformed(java.awt.event.ActionEvent evt) { Aluno a = new Aluno("Juliana","11.111-1","111.111.111-11"); txtNomeAluno.setText(a.getNome()); txtRgm.setText(a.getRgm()); } • C# .Net private void btnAluno_Click(object sender, EventArgs e) { Aluno a = new Aluno("Juliana","11.111-1","111.111.111-11"); txtRgm.Text = a.Rgm; txtNomeAluno.Text = a.Nome; } Criando uma SOLUÇÃO e PROJETO C# Windows Forms Ambiente Visual Studio (C#) Toolbox (Ctrl+Alt+X) View > Toolbox Properties (F4) View > Properties WIndows Solution Explorer (Ctrl+Alt+L) View > Solution Explorer Projeto Principal • Criar ainterface abaixo: Projeto BasicCSharp Na solução criada anteriormente, adicionar o projeto chamado BasicCSharp. Nesse projeto iremos organizar todas as classes. Exemplo • Vamos criar as classes: – Pessoa – Aluno com herança de Pessoa – Professor com herança de Pessoa Classe Pessoa Classe Pessoa public class Pessoa { public string Cpf { get; set; } public string Nome { get; set; } public Pessoa() { } public Pessoa(string cpf, string nome) { this.Cpf = cpf; this.Nome = nome; } } Classe Aluno public class Aluno: Pessoa { public string Rgm { get; set; } public Aluno(string cpf, string nome, string rgm) : base(cpf, nome) // chamada ao construtor da classe pai (super em java) { this.Rgm = rgm; } } Classe Professor public class Professor:Pessoa { public string Titulo { get; set; } public Professor(string cpf, string nome, string titulo) : base(cpf, nome) // chamada ao construtor da classe pai (super em java) { this.Titulo = titulo; } } No projeto Aula04 onde contém o Windows Forms iremos adicionar a referência ao projeto BasicCSharp onde estão criadas as classes. Formulário using System; using System.Windows.Forms; using BasicCSharp; namespace Aula04 { public partial class Form1 : Form { Aluno aluno; Professor professor; public Form1() { InitializeComponent(); aluno = new Aluno(); professor = new Professor(); } private void btnExibirAluno_Click(object sender, EventArgs e) { aluno.Nome = "Luiz Carlos Reis"; aluno.Cpf = "111-111-111-11"; txtNomeAluno.Text = aluno.Nome; txtRgm.Text = aluno.Rgm; } private void btnExibirProfessor_Click(object sender, EventArgs e) { professor.Nome = "Alexander Gobbato"; professor.Titulo = "Mestre"; } } } Formulário private void Form1_Load(object sender, EventArgs e) { aluno = new Aluno("111.111.111-11", "Nome Aluno", "RGM"); professor = new Professor("222.222.222-22", "Nome Professor", "Título"); txtNomeAluno.Text = aluno.Nome; txtRgm.Text = aluno.Rgm; txtNomeProfessor.Text = professor.Nome; txtTitulo.Text = professor.Titulo; } Exercício • Criar uma classe de nome Comprador com atributos privados para nome, cpf, endereço e telefone • Criar uma clase de nome Carro com atributos privados do tipo Modelo, Portas e Acessórios • Criar uma interface gráfica que permita criar um objeto das classes referenciadas acima. Referências • DEITEL, H. M. C# Como Programar. São Paulo: Pearson Education do Brasil, 2003 www.cruzeirodosul.edu.br
Compartilhar