Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Visual C Sharp (C#), Notas de estudo de Eletromecânica

apostila de exemplos práticos em c#

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 26/06/2009

aline-ss-11
aline-ss-11 🇧🇷

4.8

(59)

33 documentos

Pré-visualização parcial do texto

Baixe Visual C Sharp (C#) e outras Notas de estudo em PDF para Eletromecânica, somente na Docsity! Exemplos Práticos de Programação Visual em C# por Paulo Cortez e Hélder Quintela Unidade de Ensino Departamento de Sistemas de Informação Escola de Engenharia Universidade do Minho Guimarães, Portugal Janeiro, 2008 ii v Índice de Figuras Figura 1 – Exemplo da criação de um projecto no Visual Studio 4 Figura 2 – Exemplo de um Solution Explorer 5 Figura 3 – Exemplo da caixa de diálogo Save Project 5 Figura 4 – Exemplo do ambiente de trabalho do Visual Studio 6 Figura 5 – Janela da mensagem “Olá Mundo!!!” 8 Figura 6 - Janela de mensagem com botões de interacção 10 Figura 7 – Exemplo da caixa de diálogo Properties 11 Figura 8 – A janela principal da aplicação 11 Figura 9 – Caixa de mensagem activada por um botão 12 Figura 10 – Exemplo da criação de diagrama de classes 15 Figura 11 – Formulário do programa empregado em modo Design 17 Figura 12 – Formulário do programa empregado em modo runtime 18 Figura 13 – Diagrama de Classes com composição 19 Figura 14 – Formulário do Projecto Carros de Corrida (Design) 20 Figura 15 – MDI Form com controlo mainMenu 26 Figura 16 – A aplicação MDI 27 Figura 17 – Formulário 1 de introdução de dados da aplicação MDI 28 Figura 18 - Formulário 2 de alteração de dados da aplicação MDI 28 Figura 19 - Formulário 1 actualizado da aplicação MDI 29 vi vii Índice de Tabelas Tabela 1 – Os botões de uma MessageBox .................................................................8 Tabela 2– Ícones para a MessageBox .........................................................................9 2 3 2 Introdução ao Visual Studio .Net C# 2.1 Criar uma aplicação Explicação Para a criação de uma aplicação no Visual Studio é importante compreender 3 conceitos: solution, project e project item. Uma solução (solution) é um conjunto de projectos e ficheiros relacionados que integrarão a aplicação. A utilização de diversos projectos para uma solução única permite melhorar aspectos como: a edição, o controlo de erros (debug) e a execução de todas as partes da aplicação a partir de uma única sessão. Trata-se de um conceito importante quando se lida com aplicações muito complexas e compostas por várias áreas que devem ser desenvolvidas de forma autónoma, por modo a reduzir a complexidade no desenvolvimento, assegurando contudo facilidade de integração posterior. Um projecto (project) consiste num conjunto de project items (e.g. formulários, classes, ficheiros XML, relatórios), representando normalmente um componente da aplicação. Quando se desenvolvem aplicações relativamente simples, o conceito de solução confunde-se com o de projecto, uma vez que a solução será composta por um único projecto. No desenvolvimento de uma aplicação, o primeiro passo consiste então na criação de uma solution, tratando-se de um processo transparente, uma vez que a solução é criada quando se cria o primeiro projecto para a aplicação. Exemplo Para criar uma solução, devem segui-se os seguintes passos: 1. Seleccionar Ficheiro | New | Project. A janela New Project é apresentada (Figura 1). 4 Figura 1 – Exemplo da criação de um projecto no Visual Studio 2. Definir o tipo de projecto a criar (e.g. Visual C#), e seleccionar para o tipo de projecto escolhido o template desejado (e.g. Windows Application, Console Application, Class Library), de acordo com o tipo de aplicação a desenvolver. 3. Introduzir o nome do projecto, devendo-se ter-se alguns cuidados e usar algumas convenções, como utilizar uma abreviatura do nome da aplicação com um sufixo indicando o tipo de projecto. Por exemplo, no caso de estarmos a desenvolver uma aplicação para gestão de componentes de um laboratório em ambiente Windows, poderá dar-se ao projecto o nome GESLABWin. 4. Definir a localização onde serão guardados todos os ficheiros da solução. 5. Clicar em Ok. Após estes passos, na janela Solution Explorer (Figura 2) do IDE (Ambiente de Trabalho do Visual Studio), é apresentado de forma hierárquica o projecto criado e os seus respectivos items. Por defeito, quando um projecto do tipo Windows Application em C# é criado, são adicionados os items Form1.cs e Program.cs. O Form1 é um formulário base, que será por defeito (embora se possa alterar) o primeiro a ser visualizado quando a aplicação inicia. Por sua vez, o Program.cs é o ficheiro com o código necessário para a inicialização/arranque da aplicação. 7 3 Programas simples 3.1 Mensagem de texto: “Ola Mundo!!!” Explicação Uma simples mensagem de texto pode ser apresentada de modo simples dentro de uma janela , através da classe MessageBox. Exemplo No Visual Studio deve criar-se um novo projecto, do tipo Windows Application (versão 2005) ou Windows Forms Application (versão 2008). De modo automático, o programa (IDE) cria uma janela (Form) e código mínimo em C#. Basta seleccionar a janela Solution Explorer e escolher o ficheiro (ou seja, clicar com o rato) chamado Program.cs (ou similar). Todo o seguinte código é gerado automaticamente pelo IDE, excepto a parte a negrito, que se irá alterar para este exemplo específico. O comentário (//) impede que a janela principal seja mostrada no ecrã. Eis o código: Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); MessageBox.Show("Ola Mundo!!!"); } } } 8 Resultado Figura 5 – Janela da mensagem “Olá Mundo!!!” 3.2 Resposta a uma pergunta de uma MessageBox Explicação Na maioria das situações, pretende-se utilizar a janela de mensagem de forma mais interactiva do que a apresentada no exemplo anterior, adicionando: a) um título à janela, b) interacção com o utilizador, e c) um ícon ilustrativo da mensagem/questão. Uma MessageBox pode contar mais botões além do OK, permitindo desta forma recolher a resposta do utilizador a uma questão apresentada na janela de mensagem. Embora possam ser incluídos até três botões numa MessageBox, a sua disposição não pode ser definida. Ao programador é apenas permitido seleccionar um dos grupos pré- definidos de botões disponíveis (ver Tabela 1). Tabela 1 – Os botões de uma MessageBox Valor Botões AbortRetryIgnore Abort, Retry, Ignore OK OK OKCancel OK, Cancel RetryCancel Retry, Cancel YesNo Yes, No YesNoCancel Yes, No, Cancel Em algumas situações, é usual surgir na janela da mensagem um ícone, normalmente ilustrativo da mensagem ou questão apresentada, estando disponíveis 9 possibilidades (Tabela 2): 9 Tabela 2– Ícones para a MessageBox Valor Descrição Asterisk Mostra um círculo contendo um i Error Mostra um círculo vermelho contendo um X Exclamation Mostra um triângulo amarelo com um ponto de exclamação. Hand Mostra um círculo vermelho contendo um X branco Information Mostra um círculo contendo um i None Não é mostrado qualquer icon Question Mostra um círculo contendo um ponto de interrogação Stop Mostra um círculo vermelho contendo um X branco Warning Mostra um triângulo amarelo contendo um ponto de exclamação Exemplo Vamos criar uma Windows Application que mostra uma janela de mensagem com três opções: “Sim”, “Não” ou “Cancelar”, quando a aplicação inicia (Figura 6). A resposta do utilizador é armazenada e apresentada uma segunda janela de mensagem com a opção escolhida pelo utilizador. Program.cs static void Main() { int resposta; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Armazenamento da resposta do utilizador na MessageBox //Botão Yes - Valor 6 //Botão No - Valor 7 //Botão Cancelar - Valor 2 resposta = Convert.ToInt32(MessageBox.Show("Pretende continuar?", "Mensagem", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)); //Avaliação da resposta dada if (resposta == 6) MessageBox.Show("Carregou em Sim", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); 12 Exemplo Repetir o processo anterior, com a propriedade “Size” de 300, 300. Na opção View do IDE, escolher a visualização da janela Toolbox. Esta contém diversos componentes que podem ser inseridos numa Form. Arrastar o componente do tipo “button”, e mudar a sua propriedade “Text” para “Mensagem”. Com o rato posicionado dentro da Form, clicar 2 vezes no botão. Imediatamente, o IDE salta para o método button1_Click que activa o evento do botão. Acrescentar a linha a negrito e correr o programa: private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Ola Mundo!!!"); } Resultado Figura 9 – Caixa de mensagem activada por um botão 3.5 Listagem de funcionalidades de alguns componentes Explicação O IDE disponibiliza um grande conjunto de componentes, estando fora do âmbito deste texto descrevê-los a todos. Os componentes servem para diferentes fins, sendo que de seguida se listam as suas principais funcionalidades: • Mostrar texto: Label, TextBox, LinkLabel; 13 • Mostrar blocos : Panel (com ou sem bordo, com cores, etc), GroupBox (agrega componentes num quadrado); • Áreas redimensionáveis: Splitter, SplitContainer; • Mostrar Figuras: PictureBox; • Para escolher uma ou mais opções: Button (uma), CheckBox, CheckListBox (uma ou mais), RadioButton, ComboBox, ListBox, ListView (somente uma de); • Para escolher um valor variável: TrackBar, HScrollBar, VScrollBar; • Para introduzir texto: TextBox; • É possível ter tabulações (TabControl) e ménus dentro de um Form (MenuStrip); 14 17 Figura 11 – Formulário do programa empregado em modo Design Dentro do código da janela principal (Form1.cs), acrescentou-se o atributo privado E e acrescentou-se código nos eventos dos componentes trackBar1, textBox1 e button1 (a negrito). O restante código foi gerado automaticamente pelo IDE: Form1.cs using System.Drawing; using System.Text; using System.Windows.Forms; namespace Empregado { public partial class Form1 : Form { private Empregado E; public Form1() { InitializeComponent(); E = new Empregado(); } private void button2_Click(object sender, EventArgs e) { E.Nome = textBox1.Text; label5.Text = E.Nome; label6.Text = (E.Idade).ToString(); } private void trackBar1_Scroll(object sender, EventArgs e) { label7.Text = (trackBar1.Value).ToString(); E.Idade = trackBar1.Value; } private void textBox1_TextChanged(object sender, EventArgs e) { E.Nome = textBox1.Text; label5.Text = E.Nome; } 18 } } Resultado Figura 12 – Formulário do programa empregado em modo runtime 4.2 Equipa de carros de corrida Explicação Uma classe pode utilizar objectos de outras classes como membros. Esta capacidade é chamada de composição, e é um dos princípios subjacentes à programação orientada a objectos no que concerne à reutilização de classes. Exemplo Neste exemplo vamos criar uma aplicação do tipo Windows Application para gestão/manipulação de 2 classes, em que uma das classes utiliza objectos da outra, seguindo o modelo de classes (Class Diagram) apresentado na Figura 13. 19 Figura 13 – Diagrama de Classes com composição O programa deve permitir inserir os dados de cada carro, bem como alterá-los e mostrá-los no ecrã. Deve ser também mostrada a velocidade média de todos os carros. 1. Existe uma classe Carro, com uma velocidade actual (em km/h) e um nome de uma marca: Carro.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowsFormsApplication1 { class Carro { private string MarcaCarro; private int VelocidadeCarro; public Carro(string MarcaCarro, int VelocidadeCarro) { this.MarcaCarro = MarcaCarro; this.VelocidadeCarro =VelocidadeCarro; } public string Marca { get { return MarcaCarro ; } set { MarcaCarro = value; } } public int Velocidade { get { return VelocidadeCarro; } set { VelocidadeCarro = value; } } } } 22 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int i,pos; Equipa E = new Equipa(3); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { i = 0; } private void button1_Click(object sender, EventArgs e) { E[i] = new Carro(textBox1.Text, Convert.ToInt16(textBox2.Text)); i++; carrega_list(); if (i>2) button1.Enabled = false; lblveloc.Text = Convert.ToString(calcula_media()); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { pos = Convert.ToInt16(listBox1.SelectedIndex.ToString()); 23 textBox1.Text=""; textBox2.Text = ""; textBox1.Text = E[pos].Marca; textBox2.Text=Convert.ToString(E[pos].Velocidade); } private void button2_Click(object sender, EventArgs e) { E[pos].Marca = textBox1.Text; E[pos].Velocidade=Convert.ToInt16(textBox2.Text); carrega_list(); lblveloc.Text = Convert.ToString(calcula_media()); } private void carrega_list() { int j; listBox1.Items.Clear(); for (j=0;j<i;j++) listBox1.Items.Add(E[j].Marca + " - " + E[j].Velocidade); } private double calcula_media() { int j; double media, soma; soma = 0; for (j = 0; j < i; j++) { soma = soma + E[j].Velocidade; } return (media = soma / j); } } } 24 27 A linha frm2.MdiParent=this, indica que a instância do formulário criada é filha da instância do Form1 activa, que é do tipo MDI. Resultado Figura 16 – A aplicação MDI Apesar de estarem duas janelas activas, na barra de tarefas do Windows existirá apenas um ícone, correspondente ao formulário “pai”. 5.3 Como partilhar dados entre duas Forms? Explicação Em C# não existe o conceito de variáveis globais, como por exemplo em Visual Basic, onde podem ser utilizados os módulos. No entanto, isto pode ser um problema quando se pretendem partilhar dados entre formulários. Esta dificuldade pode ser ultrapassada pela criação de uma classe com a/as variáveis que se pretende utilizar como globais, declarando-as como estáticas (static). Exemplo Pretende-se criar uma aplicação que contém a classe Aluno, um formulário principal (“pai”) MDI, e dois formulários “filho” - Form1 e Form2. 28 1. No Form1 é criado um aluno. Figura 17 – Formulário 1 de introdução de dados da aplicação MDI 2. No Form2 os dados do aluno são alterados. Figura 18 - Formulário 2 de alteração de dados da aplicação MDI 3. Depois de alterados os dados do aluno no Form2, quando se regressa ao Form1, as caixas de texto apresentam os novos valores do objecto aluno que foi criado e posteriormente alterado. 29 Figura 19 - Formulário 1 actualizado da aplicação MDI A classe Aluno, é composta por dois atributos: número e nome, estando implementados os métodos: construtor e acessores. Alunos.cs using System; using System.Collections.Generic; using System.Text; namespace GlobalProject { class Aluno { private int numero; private string nome; public Aluno(int numero, string nome) { this.numero = numero; this.nome = nome; } public int get_numero() { return numero; } public string get_nome() { return nome; } public void set_numero(int value) { this.numero = value; } public void set_nome(string value) 32 33 Bibliografia [Marques e Pedroso, 2005] Marques, P. e Pedroso, H., C# 2.0, editora FCA. [Patel, 2008] Patel, I., MDI (Multiple Document Interface), C# Corner, URL:http://www.csharpcorner.com/UploadFile/IrfanPatel/MultipleDocumentInterfac e11232005034108 AM/MultipleDocumentInterface.aspx, 2008. Bibliografia adicional (recomendada para saber mais): [Whatis?com, 2008] Whatis?com, What is a Multiple Document Interface?, URL: http://whatis.techtarget.com/definition/0,,sid9_gci214090,00.html. [Jones and MacDonald, 2005] Jones, A. and MacDonald, M., C# 2005 Recipes – A Problem-Solution Approach, Apress. [Deitel, 2005] Deitel, H.M., Visual C#2005: How to Program, Second Edition, Prentice Hall. [Robinson et al., 2004] Robinson, S., Nagel, C., Glynn, J., Skinner, M., Watson, K and Evjen B., Professional C# Programmer To Programmer, 3rd Edition, Wrox. [Marshall, 2006] Marshall, D., Programming Microsoft Visual C# 2005: The Language, Microsoft Press.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved