Documente Academic
Documente Profesional
Documente Cultură
Resumo da Apresentao
Hello World
Bsicos do ambiente .NET
Objetivos da C#
Recursos da Linguagem
2
Hello World!
using System;
class Hello
{
static void Main() {
Console.WriteLine(Hello world!);
}
}
WebServices
XML / SOAP
4
Objetivos da C#
Linguagem Orientada a
Componentes
Conceitos de Componentes Fazem Parte da
Linguagem
Propriedades, Mtodos e Eventos
Atributos de desenvolvimento e de execuo
Documentao integrada usando XML
Reduo de Dependncias
No so necessrios arquivos externos (IDL,
cabealhos, etc)
6
Tudo um Objeto
C++, Java: tipos primitivos mgicos fora da
hierarquia de classes
Smalltalk, Lisp: tipos primitivos so objetos a um
custo de performance
C# unifica tipos primitivos e objetos, prometendo
nenhuma perda de performance
Novos tipos primitivos: SQL, Decimal
Colees funcionam para todos os tipos de
maneira uniforme
7
Facilidade de Aprendizado
Herana de C++
namespace, enum, unsigned, ponteiros (em
blocos de cdigo unsafe)
Adies
foreach, switch com strings
Tipo decimal para aplicaes financeiras
Parmetros ref e out
8
Ambiente de Execuo
Controlado
Coleta de Lixo
Tratamento de Excesses
Elimina tipos no inicializados e converses
de tipo inseguras
Mecanismos para controle de verses
embutido no ambiente de execuo e na
linguagem
9
Interoperabilidade
Recursos da Linguagem
Estrutura do Programa
Hierarquia de Tipos
Classes e Estruturas
Interfaces e Enumeraes
Delegates (Delegao?)
Propriedades e Indexadores
Eventos
Sobrecarga de operadores
Controle de Verso
Cdigo Inseguro
11
Estrutura do Programa
Namespaces
Contm tipos e outros namespaces
Declarao de Tipos
Classes, estruturas, interfaces, enumeraes e delegates
Membros
Constantes, campos, mtodos, propriedades,
indexadores, eventos, operadores, construtores e
destrutores
12
Estrutura do Programa
using System;
Namespace System.Collections
{
public class Stack
{
Entry top;
public void Push(object data) {
top = new Entry(top, data);
}
public object Pop() {
if (top == null) throw new InvalidOperationException();
object result = top.data;
top = top.next;
return result;
}
}
}
13
Tipos
Value types
Contm diretamente o valor
No podem ser nulos
Reference types
Contm uma referncia para um objeto
Podem ser nulos
14
Tipos
int i = 123;
string s = SOD legal;
i
s
123
SOD legal
15
Tipos
Tipos Valor
Primitivos
Enumeraes
Estruturas
int i;
enum Cor {Azul, Verde}
struct Point {int x, y;}
Tipos Referncia
16
Tipos Predefinidos
Tipos predefinidos do C#:
Referenciados
Com sinal
Sem sinal
Caractere
Ponto flutuante
Lgico bool
object, string
sbyte, short, int, long
byte, ushort, uint, ulong
char
float, double, decimal
17
Classes
Herana simples
Implementao de mltiplas interfaces
Membros de uma classe:
Constantes, campos, mtodos, propriedades,
indexadores, eventos, operadores, construtores e
destrutores
Membros estticos e da instncia
Sub-tipos
Acesso a membros
Public, protected, internal e private
18
Estruturas
Como classes, exceto que:
Armazenados na pilha
Atribuio copia os dados e no a referncia
No permitem herana!
Vantagens
Sem alocaes na heap, menos trabalho para o C. Lixo
Uso mais eficiente da memria
19
Interfaces
Herana mltipla
Pode conter mtodos, propriedades,
indexadores e eventos
Implementaes privadas
interface IDesenhavel
{
void Desenha(Superficie destino);
}
class Triangulo : IDesenhavel
{
void Desenha(Superficie destino);
}
20
Enumeraes
Fortemente Tipadas
Sem converso implcita de/para int
Operadores: +, -, ++, --, &, |, ^, ~
21
Delegaes
Ponteiros para funes orientados a objetos
Mltiplos recipientes
Cada delegao tem uma lista de invocao
Operaes + e seguras entre threads
22
Hierarquia de Tipos
Tudo deriva da classe object
Boxing / Unboxing
object
Stream
MemoryStream
Hashtable
int
double
FileStream
23
Desenvolvimento de
Componentes
O que define um componente?
Propriedades, mtodos e eventos
Documentao integrada
Informaes para desenvolvimento
Propriedades
Sintaxe simples, controle de acesso
Public class Button: Control
{
private string caption;
public string Caption {
get {
return caption;
}
set {
caption = value;
Repaint();
}
}
}
25
Indexadores
Public class ListBox: Control
{
private string[] items;
public string this[int index] {
get {
return items[index];
}
set {
items[index] = value;
Repaint();
}
}
}
26
27
Tratando o Evento
public class MyForm: Form
{
Button okButton;
public MyForm() {
okButton = new Button(...);
okButton.Caption = OK;
okButton.Click += new EventHandler(OkButtonClick);
}
void OkButtonClick(object sender, EventArgs e) {
ShowMessage(Boto Ok!);
}
}
28
Atributos
29
Atributos
public class TrataPedidos
{
[WebMethod]
public void FazPedido(OrdemPedido pedido) {...}
}
[XmlRoot(Pedido, Namespace=urn:acme.b2b-schema.v1)]
public class OrdemPedido
{
[XmlElement(endereco)] public string Endereco;
[XmlElement(cobrar)]
public string Cobranca;
[XmlElement(items)]
public Items[] Items;
}
30
Construes e Expresses
Cdigo Inseguro
32
Concluso
Nenhuma revoluo ou grande inovao
Coleo de diversas pequenas idias de
diversos outros lugares
Voltado ao mercado Windows e Internet
Influncia da Microsoft no despresvel
33
Referncias
Programming C#, Jesse Liberty, OReilly &
Associates
C# Language Specification, Microsoft Corp
C# Station, http://www.csharp-station.com/
C# Corner, http://www.c-sharpcorner.com/
C# Today, http://www.csharptoday.com/
34