sexta-feira, 22 de julho de 2011

Exercício


Criar um novo projeto para executar todos os exercícios propostos abaixo. O nome do projeto será Exercicio1 deverá ser gravado na pasta Aula criado no início do curso.

1.       Criar um outro projeto de nome Mat na solução, no projeto inicial Exercicio1 adicione a referência ao projeto Mat.

2.       No projeto Mat remova a classe Class1.cs e adicione uma nova classe de nome Geometria.
3.       Nesta classe adicione as propriedades Nome(literal), Area(real) e Lados(inteiro).

4.       Adicione o método CalculaArea onde pode ser sobrescrito.

5.       Adicione um outra classe de nome Triangulo onde será herança da classe Geometria e terá as seguintes propriedades: Lado1, Lado2 e Lado3 (inteiro). Adicione o método CalculaArea sobrescrevendo o método da classe pai.

6.       Adicione mais uma classe de nome Retangulo que também herdará Geometria e adicione as propriedades Lado1 e Lado2 (inteiro). Sobrescreva o método CalcularArea.

7.       Adicione mais uma classe de nome Circulo, que herdará Geometria. Adicione a propriedades: Raio e sobrescreva o método CalculaArea.

8.       Adicione a classe Cilindro, que herde Circulo e adicione a propriedade Altura (inteiro). Sobrescreva a propriedade CalculaArea.

9.       Na classe Program.cs do Exercicio1 crie código para testar os métodos feitos anteriormente.

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
 
namespace Wizard.Customization
{
   public partial class GenerateDuplicateTest : Form
   {
      // Properties of Forms      
      public List<Test> TestList { getset; }
      public string FileName { getset; }
 
      public GenerateDuplicateTest()
      {
         InitializeComponent();
         InitializeForm();
      }
 
      public GenerateDuplicateTest( List<Test> listTemperature )
      {
         InitializeComponent();
         TestList = listTemperature;
         InitializeForm();
         StartPosition = FormStartPosition.CenterScreen;
      }
 
      private void InitializeForm()
      {
         FillComboTemp();
         grid.Columns["TemperatureStr"].DefaultCellStyle.Alignment =
            DataGridViewContentAlignment.MiddleRight;
 
         bindTemperatureList.DataSource = TestList;
         grid.DataSource = bindTemperatureList;
      }
 
      private void FillComboTemp()
      {
         //cmbTemperature.Items.Clear();
         //cmbTemperature.Items.Add( "TEMP_FREE" );
         //for( int i = 20; i < 71; i++ )
         //{
         //   cmbTemperature.Items.Add( i.ToString() );
         //}
 
         List<TemperatureItem> listTempItem = new List<TemperatureItem>();
         listTempItem.Add( new TemperatureItem { Description = "TEMP_FREE", Value = 255 } );
         forint i = 1; i <= 99; i++ )
         {
            listTempItem.Add( new TemperatureItem { Description = i.ToString(), Value = i } );
         }
 
         bindTemperaturesCombo.DataSource = listTempItem;
      }
 
      private bool GenerateAndDuplicate()
      {
         if( saveFileDialog1.ShowDialog() == DialogResult.OK )
         {
            return true;
         }
         else
         {
            return false;
         }
      }
 
      private void btnApply_Click( object sender, EventArgs e )
      {
         int temperature = 0;
         if( cmbTemperature.Text == "TEMP_FREE" )
         {
            temperature = 255;
         }
         else
         {
            temperature = int.Parse( cmbTemperature.Text );
         }
 
         forint i = 0; i < grid.SelectedRows.Count; i++ )
         {
            ( ( Test )bindTemperatureList[grid.SelectedRows[i].Index] ).Temperature = temperature;
         }
         //bindTemperatureList.MoveFirst();
         grid.Refresh();
      }
 
      private void btnDuplicate_Click( object sender, EventArgs e )
      {
         bool TempCheckMsg = true;
 
         if( GenerateAndDuplicate() )
         {
            TemperatureCheck( grid );
            this.TestList = ( List<Test> )bindTemperatureList.DataSource;
            this.FileName = saveFileDialog1.FileName;
            this.DialogResult = DialogResult.OK;
         }
      }
 
      private void dataGridView1_SelectionChanged( object sender, EventArgs e )
      {
         panCombo.Visible = grid.SelectedRows.Count > 1;
         if( cmbTemperature.SelectedIndex < 0 )
         {
            //cmbTemperature.SelectedIndex = 1;
         }
      }
 
      public void TemperatureCheck( DataGridView grid )
      {
         bool TempCheckMsg = false;
 
         forint i = 0; i < grid.SelectedRows.Count; i++ )
         {
            int temperature = cmbTemperature.SelectedIndex;
 
            if( ( ( temperature < 20 ) || ( temperature > 70 ) ) && temperature != 255 )
            {
               TempCheckMsg = true;
            }
         }
 
         if( TempCheckMsg )
         {
            string error = "There are tests that have abnormal Temperature values";
            error += "\n\nThe temperature should fall between 20°C and 70°C.";
            error += "\n 20°C <= temperature <= 70°C";
            MessageBox.Show( error, "WARNING" );
         }
      }
 
      private void grid_CellContentClick( object sender, DataGridViewCellEventArgs e )
      {
 
      }
   }
 
   public class TemperatureItem
   {
      public int Value { getset; }
      public string Description { getset; }
   }
 
   public class Test
   {
      public string TestName { getset; }
      public int Temperature { getset; }
      public string TemperatureStr
      {
         get
         {
            if( Temperature != 255 )
               return Temperature.ToString();
            else
               return "TEMP_FREE";
 
         }
      }
   }
}



quinta-feira, 31 de março de 2011

Aplicativos .NET C# para Android usando o Monodroid

Mono para o Android permite aos desenvolvedores usar o Microsoft Visual Studio™ para criar aplicações C# .NET que funcionam em celulares com Android. Os desenvolvedores podem usar suas habilidades existentes e reutilização de código e bibliotecas que foram construídos com. NET, tirando partido das APIs nativas Android.



O que está incluído em Mono para o Android?

Mono para o Android consiste no
núcleo do Mono, o Mono voltado a ligações nativas para uso nativo APIs do Android, um plug-in do Visual Studio 2010 para desenvolver aplicações Android e um SDK que contém as ferramentas para desemvolver, depurar e implantar aplicativos.

Nosso
plugin do Visual Studio 2010 permite aos desenvolvedores usar o Visual Studio 2010 para desenvolver, depurar e implantar seus aplicativos para um simulador de Android, um dispositivo Android ou o Android Application Store.

Versões futuras do IDE MonoDevelop vêm com suporte para o Mono para o Android.



Veja em http://mono-android.net/

quarta-feira, 30 de março de 2011

Oferta de Emprego

Empresa seleciona:

DESENVOLVEDOR WEB
- Nível Superior (cursando)
- Experiência em sites profissionais
- Dinâmico, pró-ativo e efeciente
- Excelente remuneração

Candidatos que atendam o perfil, enviar CV e Portifólio para: vaga.mao@gmail.com

--------------------------------------------------------

A Fundação Paulo Feitosa está selecionando profissionais para o seguinte cargo:

Titulo do Cargo: Técnico de Suporte
Conhecimentos Técnicos Necessários:

· Na plataforma Microsoft Windows;

· Pacote Intermediário Microsoft Office;

· Atendimento a usuários finais.

Requisitos Indispensáveis:

· Técnico em Informática ou Graduando em Informática.

Requisitos Desejáveis:

· Conhecimento em compactadores, portas seriais, instalação e desinstalação de aplicativos;

· Conhecimento em lógica de programação;

· Conhecimento básico nas linguagens Delphi e VB;

· Inglês Básico.

Habilidades Desejadas:

· Comprometimento com prazos;
· Responsável;

· Proativo e disposição para aprender;

· Comunicativo;

· Extrovertido;

· Trabalho em Equipe.

Benefícios:

* Plano de Saúde e Odontológico
* Vale Refeição e Cesta Básica
* Convênios com Drogaria, Ótica e Academia.


Os interessados deverão enviar seu currículo até o dia 01/04/11 para o e-mail selecao@fpf.br, com o seguinte titulo no assunto: Técnico Suporte

segunda-feira, 28 de março de 2011

TechEd 2011 North America



A 19ª Conferência da Microsoft TechEd oferece aos desenvolvedores e profissionais de TI técnicas mais abrangentes nas suites a serem lançados brevemente de soluções, serviços e produtos.

Este evento de 4 dias será realizado no Georgia World Congress Center em Atlanta, Georgia.

O video sobre o evento pode ser assistido clicando aqui

terça-feira, 15 de março de 2011

Web Services como Persistência

Este artigo é o resultado de um estudo que fiz sobre como minorar o dispêndio de procedimentos laborativos durante o desenvolvimento de aplicações que consomem Web Services. É minha intenção dispor essa idéia para toda comunidade interessada no assunto.

É comum implementar-se inúmeras classes, uma para cada tabela ou funcionalidade no Web Service. Contrariando esse tradicionalismo consegui montar um esquema de fácil construção.

Buscamos uma forma de se trabalhar com Web Service como uma camada de Persistência, tornando o trabalho de desenvolvimento mais produtivo e usando o melhor que as ferramentas RAD (Rapid Application Development) oferecem, apenas clicando e arrastando as tabelas e/ou seus respectivos campo, utilizando pouca codificação para os métodos de gravação e de navegação.

Bem, vamos ao que interessa. Utilizaremos o Visual Studio Team Suite para exemplificar este estudo.

Dentro do Server Explorer, mostrado na tela abaixo, observamos a existência de uma conexão com uma base de dados SQL Server cujo nome é Agenda e que está no servidor TI-09.



Agora iniciaremos um novo projeto do tipo Web Service. Vá no menu File à New à Web Site e escolha ASP.NET Web Service.



OBS: Como no computador que fiz este artigo está instalado o IIS (Internet Information Services), logo, configurei em Location para HTTP. Se em seu computador não estiver instalado o IIS, você pode optar pelo servidor embarcado Web do Visual Studio 2005 escolhendo em Location a opção File System.

Assim que é gerado o Web Service, por padrão, é criada uma classe de nome Service.cs que fica localizada na pasta APP_CODE. Iremos trabalhar com esta classe mais adiante.



Clicaremos com o botão direito sobre a pasta APP_CODE e escolheremos a opção Add New Item...

Em seguida, já na Janela de Templates, selecionamos a opção DataSet e trocamos o nome do arquivo para dsAgenda.



Aparecerá uma janela para configurarmos através do Wizard (assistente) o TableAdapter. Selecionamos a conexão que você fizemos anteriormente, e clicamos em Next.



Na próxima tela teremos a opção de gravar ou não a Connection String na aplicação para utilizá-la futuramente quando for necessário. O comum é armazenar. Depois da escolha, clicamos em Next.



Nesta tela encontraremos algumas opções para o acesso e armazenamento de dados nas tabelas dos banco de dados. A primeira opção o Wizard criará os comandos de Select, Update e Delete de cada tabela encontrada no DataSet. A segunda será através da criação de Stored Procedures, e a última é o uso de Stored Procedures existentes no banco. A primeira opção é a que escolheremos, por ser um banco de dados modelo.

Já na tela que se segue, nos é permitido entrar com um Select de uma tabela ou simplesmente usar o Query Builder para selecionarmos a tabela desejada. Utilizaremos a opção do Query Builder.



Aqui vemos a tela do Query Builder, para esse exemplo, selecionamos a tabela Pessoa e seus respectivos campos. Abaixo utilizamos o Select necessário para obter os dados dessa tabela.



Depois de construído o Select, serão criados dois métodos no TableAdapter desta tabela : GetData, responsável pelo select na tabela, e Update, responsável por insert, delete e update.



Pronto, finalizado a construção do DataSet dsAgenda, é só clicarmos em Finish para visualizarmos o resultado.



Podemos agora visualizar o DataSet dsAgenda e a tabela contida dentro dela. Se desejarmos adicionar a tabela Estado, por exemplo, basta clicar sobre ela de dentro do Server Explorer e arrastar até o dsAgenda que se encontra aberto.



Ao selecionarmos o PessoaTableAdapter, podemos ver os comandos do Select, Update, Insert e Delete. Em banco de dados diferentes do SQL Server, teríamos que fazer estas rotinas “na mão” devido às particularidades do provider (biblioteca que faz acesso aos dados).



Bem, vamos agora à parte codificada do WebService que é bem simples de se entender.

Voltamos para o Service.cs e retiramos o método HelloWorld() que já vem por padrão, e adicionamos o método ObterEsquema(), como mostrado abaixo.

///


///
Retorna o Esquema do DataSet
///
/// dsAgenda
[WebMethod]
public
dsAgenda ObterEsquema() {
return new dsAgenda();

}

Este método fará com que as aplicações .NET, que consumirem este WebService, vejam em seu Data Object o dsAgenda como fonte de dados.

Agora adicionaremos mais dois métodos para esta tabela, uma para obter os dados e outro para gravar os dados.

///


///
Obter dados de Pessoa
///

///
PessoaDataTable

[WebMethod(Description = "Obtendo os dados da tabela Pessoa")]
public dsAgenda.PessoaDataTable tbPessoa()
{
dsAgendaTableAdapters.PessoaTableAdapter adapter
= new dsAgendaTableAdapters.PessoaTableAdapter();
return adapter.GetData();
}

///


///
Atualizar dados de Pessoa
///
///
PessoaDataTable
///
Numero de linhas Afetadas
[WebMethod(Description="Atualiza os Dados da tabela Pessoa")]
public int tbPessoaAtualiza(dsAgenda.PessoaDataTable tab)
{
dsAgendaTableAdapters.PessoaTableAdapter adapter =
new dsAgendaTableAdapters.PessoaTableAdapter();
return adapter.Update(tab);

}


Pronto, o WebService está ok. Vamos rodar e testar o WebService. Quando o WebService for executado, ele aparecerá assim como mostrado abaixo. Clique no método tbPessoa para testá-lo.



Clique no botão Invoke para invocar o método.



Visualize o resultado em uma estrutura XML. Se apareceu como mostrado na tela abaixo, tudo ocorreu corretamente.



Faremos agora uma aplicação Windows Form para consumir o Web Service criado.

Iremos abrir outra instância do Visual Studio 2005 (caso você não tenha o IIS instalado em sua máquina).

Criaremos um projeto Windows Application com o nome TestaWSAgenda.


A primeira coisa que devemos fazer é uma Web Reference para o Web Service criado. Então, vamos ao Solution Explorer e clicamos com o botão direito em Reference e escolha a opção Add Web Reference, colocamos em Web reference name o nome WSAgenda e clicamos em Add Reference.



Vamos ao menu Data e escolhemos a opção Show Data Sources. Observe que o dsAgenda já aparece como fonte de dados. Agora pegamos a tabela Pessoa e arrastamos para dentro do formulário Form1.



Ao clicarmos na tabela Pessoa e arrastarmos até o formulário, serão adicionados os componentes BindingSource, BindingNavigator, dsAgenda e DataGrid.

Vamos aproveitar e arrastar os campos individualmente para que o formulário fique com a aparência abaixo.



No evento Load do formulário adicionamos o seguinte código:

private void Form1_Load(object sender, EventArgs e)
{
WSAgenda.Service ws = new WSAgenda.Service();
pessoaBindingSource.DataSource = ws.tbPessoa();
}


Alteramos a propriedade Enable do botão da barra de navegação que tem uma figura de “Disquete” para true e clicamos duas vezes sobre ela para adicionarmos o evento Click:

private void pessoaBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
WSAgenda.Service ws = new WSAgenda.Service();
int linhasAfetadas =
ws.tbPessoaAtualiza(
(WSAgenda.dsAgenda.PessoaDataTable)pessoaBindingSource.DataSource);
MessageBox.Show("Foram afetadas " + linhasAfetadas.ToString() + " linhas",
"Update", MessageBoxButtons.OK, MessageBoxIcon.Information);
}


Compilamos a aplicação para teste.



Conclusão

Trabalhando desta forma, teremos pouca codificação, atividades menos complexas e ganho de produtividade no desenvolvimento de aplicações que consomem WebService como camada intermediária.

domingo, 13 de março de 2011

Curso de Introdução ao .NET com C#

Neste curso o aluno não só conhecerá a tecnologia .NET da Microsoft, mas também aprenderá, na prática, desenvolver sistemas usando linguagem de programação C#.

Ementa

Amprender os fundamentos da tecnologia .NET. Estrutura da linguagem C#, orientação a objeto, tipos, classes, heranças, polimorfismo, sobrecarga, métodos. Trabalho com collections. Acesso a dados com ADO.NET e Entity Framework. Introdução ao Linq.

Programa

+ O que é .NET?
- CLR
- IL
- JIT
- Versões .NET Framework
+ Preparando ambiente de desenvolvimento
- Instalação do .NET Framework
- Configurando Variáveis de Systemas/Usuário
+ Primeira Parte - Contruindo os primeiros programas
- Código Base C#
- Usando o compilador para gerar o IL
- Executando e gerando o JIT através do CLR
+ Tipos de Dados
- Variáveis e Constantes
- Literais
- Numéricos
- Lógicos
- Data Hora
- Genérico
- Enumerados
+ Operadores
- Aritiméticos (+-*/^)
- Lógicos (&& || !)
- Incrementais (++ -- += =+ -= =-)
+ UML - Diagrama de Classe
- Pacote
- Interface
- Classe Abstrada
- Classe
- Generalização
- Associação (Agregação / Composição)
+ Codificando
- Namespace
- Interface
- Classes
- Classes Abstratas
- Métodos
- Métodos Construtores
- Métodos Estáticos
- Classes Anônimas
+ Encapsulamento
- Public
- Private
- Protected
- Internal
- protected Internal
+ Coleções
- Array
- ArrayList
- List
- Dictionary
+ Linq (Introdução)
- Seleção
+ ADO.NET
- DataColumn, DataRow, DataTabe, DataSet
- Connection
- DataReader
- DataAdapter
- Command
+ Entity Framework
- Tabelas
- Views
- Stored Procedures
- Linq to Entity
- Lambda

Sobre o curso

Local: Divus Endereço: Av. Carvalho Leal, 1336 Cachoeirinha
treinamento@divus.com.br
http://www.divus.com.br 
+55(92)3631-9081