terça-feira, 6 de fevereiro de 2007

Conhecendo C#

C# (pronunciada “C Sharp”), é uma nova linguagem de programação, da Plataforma .NET, derivada de C/C++,  simples, moderna, orientada à objetos e fortemente tipada(type-safe). C# possui o poder do C/C++ aliado a alta produtividade do Visual Basic.

C#  será distribuido juntamente com Microsoft Visual Studio 7.0(Visual Studio.NET), e providenciará acesso a toda a plataforma do Next Generation Windows Services(NGWS), que incluem uma poderosa biblioteca de classes e um mecanismo de execução comum.

C# é a linguagem nativa para .NET Common Language Runtime(CLR), mecanismo de execução da plataforma .NET. Isso possibilita a convivência com várias outras linguagens especifícadas pela Common Language Subset(CLS). Por exemplo, uma classe base pode ser escrita em C#, derivada em Visual Basic e novamente derivada em C#.

Objetivos da linguagem

  • Primeira linguagem “orientada à componentes” da família C/C++:

    • .NET Common Language Runtime é um ambiente baseado em componentes, e C# é desenhado para facilitar a criação de componentes. Os conceitos de componentes, como propriedades, métodos, eventos e atributos, são fortemente aplicados. Documentação pode ser escrita dentro dos componentes e exportadas para XML.

    • C# não requer a bibliotecas de tipo(type libraries),  arquivos de cabeçalho(header files), arquivos IDL(IDL files). Os componentes criados em C#, são auto-descritivos e não necessitam de processo de registro. 

  • Tudo é objeto

    • Em C#, ao contrário de linguagens como Java ou C++, tipos de dados e objetos interagem. C# fornece um “sistema unificado de tipos”, onde todos os tipos são tratados como objetos, sem perda de performance,  ao contrário de linguagens como Lisp ou Smalltalk. 

  • Próxima geração de softwares robustos e duráveis

    • Software robusto e durável é uma necessidade básica. Muitas aplicações são dificeis de depurar e algumas vezes trazem resultados inesperados em tempo de execução.

    • Coletor de Lixo(Garbage Collection) que fornece gerenciamento automatico de memória, Excessões(Exceptions) que dispara erros que podem ser tratados, Segurança no tipo de dados (Type-safety) que assegura a manipulação de variáveis e casts e Versão(Versioning), são a recursos encontrados na linguagem para construção dessa categoria de software. 

  • Preservar seu  investimento

    • C# é montado sobre a “herança” do C++, isso torna confortável a adaptação do programador C++. C# possibilita utilização de ponteiros, na execução de código não gerenciado.

    • C# permite interoperabilidade com XML, SOAP, componentes COM, DLL e qualquer outra linguagem da Plataforma .NET, matendo integração total com projetos existentes.

    • Milhões de linhas de código, em C#, são encontradas no .NET, isso permite uma rápida curva de aprendizado e aumento de produtividade.

Next Generation Windows Services(NGWS) SDK

Para utilizar as classes base da plataforma .NET, o ambiente de execução, documentação e o compilador de C#, é necessário instalar o NGWS SDK que pode ser encontrado em http://msdn.microsoft.com/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml.

Windows 2000 (incluindo IIS) e Internet Explorer 5.5 são requiridos nesta instalação.

Primeiro programa

Escrevendo o tradicional programa Hello World, em C#:

using System;

 

class Hello{ 

  public static void Main(){ 

    Console.WriteLine("Hello World!!!"); 

  } 

}

Digite o código acima no seu editor de texto favorito e grave-o com o nome de Hello.cs. Para compilar o exemplo acima, no prompt, digite csc Hello.cs. Execute o programa digitando Hello. Figura 1, mostra compilação e execução da aplicação em C#: 

Figura 1: Compilação e Execução do programa em C#

Algumas considerações sobre o código do programa. A claúsula using referencia a as classes a serem utilizadas, System atua como namespace das classes. O namespace System contém muitas classes, uma delas é a Console. O método WriteLine, simplesmente emite a string no console.

Main

O método Main é o ponto de entrada de execução seu programa. No C# não existem funções globais, a classe que será executada inicialmente possui embutida a função estática Main. Uma ou mais classe pode conter a função Main, portanto apenas uma será o ponto de entrada, indicada na compilação pelo parametro /main:<tipo>, ou simplificando /m:<tipo>.

O método Main, pode ser declarado de 4 formas: 

  • Retornando um vazio(void):

    • public static void Main()

  • Retornando um inteiro(int):

    • public static int Main()

  • Recebendo argumentos, através de um array de string e retornando um vazio:

    • public static void Main(string[] args)

  • Recebendo argumentos, através de um array de string e retornando um inteiro:

    • public static int Main(string[] args)  


Estrutura de um programa

O esqueleto de um programa em C#, apresentando alguns dos seus elementos mais comuns, segue abaixo:

//Estrutura do programa em C#

using System;

namespace MathNamespace{
  public class MathClass{
    /*
     Main
     Exibe no prompt
    */
    public static void Main(string[] args){    
      Math m = new Math();
      Console.WriteLine(m.Sum(1,1));
    }
    //<summary>Classe Math</summary>
    public class Math:Object{
      public int Sum(int a, int b){
        return (a+b);
      }
    }
  }
}


A estrutura de um programa em C#, pode ser dividida em um ou mais arquivos,  e conter:
  • Namespaces;

  • Tipos - classes, estruturas, interfaces, delegações, enums;

  • Membros – constantes, campos, métodos, propriedades, indexadores, eventos, operadores, construtores;

  • Outros - coméntarios, instruções.

Conclusão

Neste artigo, conhecemos qual as caracteristicas da linguagem C# e sua estrutura. Também foi destacado a necessidade do NGWS SDK, que contém o .NET Framework e seus compiladores. Um programa tradicional foi montado, compilado e executado.

Para saber mais. Links: 

http://msdn.microsoft.com/library/default.asp?URL=/library/welcome/dsmsdn/deep07202000.htm
http://msdn.microsoft.com/vstudio/nextgen/default.asp
http://www.microsoft.com/net/default.asp
http://msdn.microsoft.com/voices/csharp01182001.asp

Artigo de: Fabio R. Galuppo.

Nenhum comentário:

Neobux