Sunteți pe pagina 1din 34

C#

Tiago Tagliari Martinez


Sistemas de Objetos Distribudos
25/06/2002
1

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!);
}
}

Bsicos do Ambiente .NET


Common Language Runtime CLR
Independncia de linguagem
Classes comuns entre todas as linguagens
Tipos comuns entre todas as linguagens

WebServices
XML / SOAP
4

Objetivos da C#

Linguagem Orientada a Componentes


Tudo um objeto
Ambiente de Execuo Controlado
Facilidade de Aprendizado
Interoperabilidade
5

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

Com outras linguagens da .NET


WebServices usando XML/SOAP
COM / Automao OLE
DLLs locais e sistema operacional (cdigo
marcado como inseguro)
10

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

Indepndencia da ordem de declarao


Implementao junto com declarao (Java)

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

Classes class A : B, IC {...}


Interfaces
interface IA : IB {...}
Vetores string[] v = new string[10];
Delegaes
delegate void Algo();

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

Tipos so apelidos para tipos do .NET


int = System.Int32

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!

Ideal para objetos menores


Complex, Point, Rectangle, Color
int, float, double, etc... so estruturas

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: +, -, ++, --, &, |, ^, ~

Pode especificar o tipo interno


byte, short, long
enum Cor : byte
{
Red
= 1,
Green
= 2,
Blue
= 4,
Black
= 0,
White
= Red | Green | Blue;
}

21

Delegaes
Ponteiros para funes orientados a objetos
Mltiplos recipientes
Cada delegao tem uma lista de invocao
Operaes + e seguras entre threads

Base para o sistema de eventos da .NET


delegate void MouseEvent(int x, int y);
delegate double Func(double x);
Func func = new Func(Math.Sin);
double x = func(1.0);

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

Suporte interno para estes elementos:


Sem nomenclatura padro, adaptadores, etc...
Sem necessidade de arquivos externos
24

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

Criando e Disparando Eventos


public delegate void EventHandler(object sender, EventArgs e);
public class Button
{
public EventHandler Click;
protected void OnClick(EventArgs e) {
if (Click != null) Click(this, e);
}
}

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

Associar informaes a tipos e membros


URL de documentao para uma classe
Contexto de transao para um mtodo
XML de mapeamento de persistncia

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

if, while, do requer condio booleana


switch sem continuar para o prximo
foreach
Expresses checked e unchecked
Expresses devem executar alguma
operao
31

Cdigo Inseguro

Blocos de cdigo ou mtodos podem ser


marcados como unsafe
Aritmtica de ponteiros
Chamada a outros mtodos unsafe

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

S-ar putea să vă placă și