Escolar Documentos
Profissional Documentos
Cultura Documentos
As caractersticas mais importantes da linguagem C# Alguma comparao c/ Java e C++ Reflexo crtica: aspectos positivos e negativos
Porqu C# ?
Hello World
using System;
public class HelloWorld { public static void Main(string[] args) { Console.WriteLine(Hello World!); } }
C# - Caractersticas
Linguagem OO:
Muito semelhante ao C++ / Java fcil comear a programar em C#
Tudo um objecto!
int val = 10; object obj = val; int k = (int) obj; // k fica c/ valor 10
val
obj
10
System.Int32
10
} Boxing
}
Unboxing
10
JAVA
Hashtable ht = new Hashtable();
ht.put(new Integer(1), Xpto); ht.put(new Integer(2), Xpti);
C# base
Controlo de execuo
if, for, do, while, switch, foreach... switch sem fall-through: switch a {
foreach:
Sistema de Tipos
String
string Nome; int[] tabela; class Pessoa { ... } enum Estado { Ligado, Desligado} struct Ponto { int x; int y; }
sbyte ushort uint ulong decimal
Array
Object
Class
Enum
ValueType
Struct
decimal conta;
Passagem de parmetros
Passagem de parmetros
public static void Main() { UseParams(1, 'a', "test"); int[] myarray = new int[3] {10,11,12}; UseParams(myarray); }
public static void UseParams(params object[] list) { for ( int i = 0 ; i < list.Length ; i++ ) Console.WriteLine(list[i]); Console.WriteLine(); }
Herana
public class Pessoa { private string Nome; private int Idade; public Pessoa(string nome, int idade) { this.Nome = nome; this.Idade = idade; } public void MostraInfo() { virtual void MostraInfo() { Console.WriteLine({0}, tem {1} anos, Nome, Idade); } }
Herana
public class Empregado : Pessoa { private string Empresa; public Empregado(string nome, int idade, int empresa) : base(nome, idade) { this.Empresa = empresa; } public override void MostraInfo() { base.MostraInfo(); Console.WriteLine(Empresa: {0}, Empresa); } }
Interfaces
interface ILeitorCD { void TocaCD(CD cd); }
public class Aparelhagem : ILeitorCD { void TocaCD(CD cd) { ... } } public class Computador : ILeitorCD { void TocaCD(CD cd) { ... } } Aparelhagem sony = new Aparelhagem(); Computador pc = new Computador(); ILeitorCD leitor; leitor = sony; leitor.tocaCD(GreatestHits);
Redefinio de Operadores
B.Add(3); B.Add(4);
Lista C = A + B; // Junta ambas as listas
Lista C = A + B;
public static Lista operator+(Lista a, Lista b) { Lista resultado = new Lista(); // Copia os elementos de <a> e <b> para // a lista <resultado> return resultado; } }
Unsafe Code
O C# suporta elementos avanados, como a utilizao de ponteiros Sempre que so utilizados estes elementos, o cdigo tem de ser colocado dentro de um contexto unsafe
public unsafe void FastCopy(byte* dst, byte* src, int count) { for (int i=0; i<count; i++) *dst++ = *src++; }
*ptr = 10;
}
C# vs. C++
GC destri objectos inacessveis Tipos de referncia e tipos-valor Boxing, unboxing Redefinio de mtodos tem de ser explcita
boolean no so inteiros switch sem fall-through No se podem usar variveis sem atribuio (out) No h mtodos globais
C# vs Java
C# vs Java (2)
Goto foreach Redefinio de operadores Enumeraes Tipos-valor e Boxing Cdigo inseguro (unsafe) ref serve para passar por referncia
Documentao em XML
/// /// /// /// /// /// /// /// /// ///
<summary> Este mtodo calcula o ordenado de uma pessoa, baseado nos seus dias de trabalho. </summary> <param name=diasTrabalho"> O nmero de dias que trabalhou. </param> <returns> O salrio da pessoa. </returns>
Exerccio 1
Exerccio 2
Crie um novo projecto C# de Windows Application Adicione um novo ficheiro de classes (.cs) Defina a interface IListaNomes, que dever incluir interfaces para:
Adicionar novo nome lista de nomes Retornar a listagem de todos os nomes presentes na lista de nomes, sob a forma de uma cadeia de caracteres Limpar o contedo da lista de nomes
Exerccio 2 (continuao)
Crie uma classe que implemente IListaNomes e crie uma instncia dessa classe na sua Windows Form. (Utilize a classe ArrayList para guardar os nomes) Construa a Windows Form por forma a utilizar todas as funcionalidades fornecidas pela interface IListaNomes Coloque breakpoints em cada mtodo da classe e verifique que cada mtodo da mesma chamado e executado correctamente