Vous êtes sur la page 1sur 54

Introduo ao

Desenvolvimento .NET
Paulo Sousa
Instituto Superior de Engenharia do Porto
Instituto Politcnico do Porto

ndice
z
z
z

Plataforma .net
C#
Desenvolvimento

Plataforma .net
Introduo ao desenvolvimento .net

Viso .net

.net framework
z

Plataforma de desenvolvimento

Mquina virtual para execuo


z

CLR (Common Language Runtime)

Biblioteca de classes
z
z

.net framework Class Library


Conjunto de classes base sobre a qual se
desenvolve

.net framework (2/2)


VB

C++

C#

Perl

Web Services

Python

User Interface
ASP.NET

ADO.NET: Data and XML


.NET Framework Class Library
Common Language Runtime
Message
Queuing

COM+
(Transactions, Partitions,
Object Pooling)

Win32

IIS

WMI

.net framework (namespaces)

CLR
.NET Framework Class Library Support
Thread Support

COM Marshaler

Type Checker

Exception Manager

Security Engine

Debugger

MSIL to Native
Compilers

Code
Manager
Class Loader

Garbage
Collection

Caractersticas CLR
z
z
z

z
z
z
z
z

Gesto de memria Garbage collection


z Evita perdas de memria
Excepes
z Tratamento de erros mais elegante
Type safety
z Validaes de compile e run time para casts e
inicializaes
Versioning
Gesto de processos e threads
Sistema comum de tipos
Tudo so objectos
Orientada aos componentes

Mquina virtual
z

Instanciao de Common Language


Infrastructure (CLI)
z

z
z
z
z

Um mesmo formato de ficheiro binrio


Um sistema de tipos comum
Meta dados
Linguagem intermdia (MSIL)
z

Standard ECMA

Permite vrias linguagens de programao

Conjunto de classes base

Implementaes CLI
z

Microsoft CLR

Shared Source CLI


z
z

Mono (Linux)
Rotor (FreeBSD)

Compilao e Execuo
EXE/DLL
EXE/DLL
(MSIL
(MSILand
and
metadata)
metadata)

Compiler
Compiler

Class
Class Loader
Loader

Class
Class
Libraries
Libraries
(MSIL
(MSILand
and
metadata)
metadata)

JIT
JIT Compiler
Compiler
with
with optional
optional
verification
verification
Trusted,
pre-JITed
code only

Managed
Native
Code

Call to an
uncompiled
method

Execution
Execution
Security
Security Checks
Checks

Runtime Engine

Source
Source
Code
Code

Assembly
z
z
z
z
z
z

Blocos de construo de aplicaes


Unidade fundamental de deployment,
versioning, reutilizao e segurana
Coleco de tipos e recursos
Fornece meta-informao ao CLR para
execuo
Todos os tipos existem no contexto de
um assembly
Tipos de assembly: DLL, EXE

Aplicao .net

(Vdeo)

Application Domain
z
z

Fornecem isolamento (execuo e


segurana) entre aplicaes diferentes
Podem existir diferentes appdomain em
mais que um processo (ex., IIS)
z
z
z

Garantia de isolamento e segurana sem


overhead de criao de processo
Permite comunicao entre appdomain sem
overhead de IPC (mas utiliza mesma RPC)
Cada appdomain pode ser parado sem parar
o processo

Appdomain & assembly


z

Vrios assemblys so tipicamente


carregados para um appdomain
possvel partilhar cdigo de um
assembly utilizado em vrios appdomain
mas no os dados

CTS
z
z

z
z

Common Type System


Infra-estrutura para inter-operabilidade
entre linguagens de programao
Orientado a objectos
Suporta tipos de referncia e tipos de
valor
Compatvel com linguagens
procedimentais

CTS (2/2)

Value-types & Reference-types


z

Value types
z
z

Contm directamente os dados


No pode ser null

Reference types
z
z

Contm referncia para objecto


Pode ser null

int sp
String cp

20
ol

Garbage Collection

(Vdeo)

Eventos
z
z
z
z
z

Mecanismo de sinalizao
Intrnseco ao framework
extensivamente utilizado internamente
Permite programao assncrona
Publish/subscribe

Componentes .net
z

Orientada aos componentes


z
z
z

Propriedades, mtodos e eventos


Design e run time
Especialmente vocacionados para utilizao com
design surfaces (ex., Visual Studio)

O termo componente em .net corresponde a


uma classe que implementa a interface
IComponent ou deriva directa ou
indirectamente de
System.ComponentModel.Component

Componentes .net (2/2)


z

Componentes com interface grfica so


chamados Control.
Devem derivar directa ou indirectamente
de System.Windows.Forms.Control
ou System.Web.UI.Control

C#
Introduo ao desenvolvimento .net

Introduo
z

Nova linguagem tendo por base o C/C++


z
z
z
z

z
z
z

Tambm vai buscar inspirao ao Java ;-)


Mantm o investimento e know-how existente
Cdigo mais limpo
Construes sintticas especiais para tirar partido do
framework

Tudo so objectos
Ficheiros com extenso .cs
Declarao e definio de mtodos no mesmo
ficheiro

Tipos de dados
z
z
z
z
z
z
z
z

object
string
sbyte, short, int, long
byte, ushort, uint, ulong
char
float, double, decimal
bool
Estes tipos so alias para os tipos definidos na
framework
z

Ex., int == System.Int32

Classes e namespaces
z

Organizao do cdigo dentro de


classes
Classes organizadas dentro de
namespaces

namespace Demo {
public class MyClass {
...
}
}

Mtodos
z
z
z

Sintaxe semelhante ao C/C++


Podem ser pblicos ou privados
Suporta overloading

public class MyHelloWorld {


...
public void SayHello()
{ ... }
private void SetTitle(String Title)
{ ... }
}

Passagem de parmetros
z
z

Por valor
Por referncia
z
z

out parmetro de sada


ref parmetro de entrada e sada

public void func1(int x)


{ ... }
public void func2(out int x)
{ ... }
public void func2(ref int x)
{ ... }

Herana
z

Apenas existe herana simples

public class MyClassBase {


...
public void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public new void Func() { base.Func(); ... }
}

Herana (2/2)
z

Mtodos no so virtuais por defeito

public class MyClassBase {


...
public virtual void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public override void Func() { base.Func(); ...
}
}

Propriedades
z

Sintaxe alternativa para acesso a membros de


dados da classe mas com as vantagens dos
mtodos

public class Button : Control


{
private string caption;
public string Caption {
get { return caption; }
set { caption = value; Repaint(); }
}
...
}

Operadores
z

Atribuio
z

Relacionais
z

<

<=

>

>=

==

!=

Lgicos
z

&&

||

Aritmticos
z
z

+ - * / %
+= -= *= /=

++

--

Constantes
z

Pr-definidas
z
z

null
true

false

De utilizador
z

const string Ver = 1.0b;

Criao de objectos
// definio da classe
public class MyClass { ... }
// definio da varivel
MyClass obj;
// criao do objecto
obj = new MyClass();

Construtores
z

Seguem as regras do C/C++


z
z
z

Mesmo nome da classe


Sem tipo de retorno
Podem ter ou no argumentos

public class MyClass {


...
public MyClass() { ... }
public MyClass(String Title) { ... }
}

Arrays
z

Suportados ao nvel da biblioteca base


de classes em System.Array

// declarao do vector
String[] vec;
// criao do vector
vec = new String[10];
// nmero de elementos pode ser dinmico
vec = new String[n];

Ciclos
// repetio n vezes
for (int x = 0; i < vec.Length; i++)
Console.WriteLine(vec[i]);
// repetio condicional
int i = 0;
while (i < vec.Length)
{
Console.WriteLine(vec[i]);
i++;
}
// enumerao
foreach (String x in vec)
Console.WriteLine(x);

Condicionais
// teste de deciso
if (i < vec.Length)
Console.WriteLine(vec[i]);

else
Console.WriteLine(Erro!!!);
// teste mltiplo
switch (x)
{
case 1: ...; break;
case 2: ...; goto case 3;
case 3: ...; break;
default: ...; break;
}

Interfaces
z
z
z

Semelhantes a classes mas no tm


implementao dos mtodos
Apenas definem as assinaturas
Todos os mtodos so pblicos

public interface IMovimentavel


{
void MoverEsquerda();
void MoverDireita();
...
}

Implementao de Interfaces
z

Qualquer classe pode implementar uma ou


mais interfaces

public class Pessoa : IMovimentavel


{
void MoverEsquerda() { ... }
void MoverDireita() { ... }
...
}

Enumerados
z

Fortemente tipados
z
z

Sem converso automtica para int


Suportam operadores +, -, ++, --, &, |, ^, ~

Pode-se definir tipo de dados base


z

Byte, short, int, long

enum Color : byte {


Red = 1,
Green = 2,
Blue = 4,
Black = 0,
White = Red | Green | Blue
}

structs
z

Semelhantes a classes, excepto


z
z
z
z
z

Alocao na stack e no no heap


No suporta herana
Cpia (atribuio) de contudo e no de referncia
Ideal para conceitos pequenos (ex., Complex)
Utilizada nos tipos primitvos da framework (ex. int)

Benefcios
z

Como no so alocadas no heap no colocam carga


sobre o mecanismo de garbage collection

Classes e estruturas
class CPoint { int x, y; ... }
struct SPoint { int x, y; ... }
SPoint sp = new SPoint(10, 20);
CPoint cp = new CPoint(10, 20);

sp

10
20

cp

CPoint
10
10

delegates
z
z

Ponteiros (orientados a objectos) para mtodos


Permite mltiplos receptores
z
z

Cada delegate tem uma lista de invocao


Publish/subscribe

Base para o mecanismo de eventos

delegate void MouseEvent(int x, int y);


delegate double Func(double x);
Func fn = new Func(Math.Sin);
double x = fn(1.0);

Comentrios XML
class XmlElement
{
/// <summary>
/// Returns the attribute with the given name and
/// namespace</summary>
/// <param name="name">
/// The name of the attribute </param>
/// <param name="ns">
/// The namespace of the attribute, or null if
/// the attribute has no namespace</param>
/// <return>
/// The attribute value, or null if the attribute
/// does not exist</return>
/// <seealso cref=" ="GetAttr(string)"/>
public string GetAttr(string name, string ns) {
... ...
}
}

Desenvolvimento .Net
Introduo ao desenvolvimento .net

IDE
z

Visual Studio .net 2003


z
z
z
z
z
z

Soluo multi-projecto
Multi-linguagem
Multiplos tipos de projecto
Debugger
Gerao de cdigo .net
Gerao de cdigo nativo
z

Evoluo do VC++ 6.0

Demo Hello World

Demo - Aritmtica

Perguntas & Respostas


Introduo ao desenvolvimento .net

Mais Informao...
z

MSDN Library
z

.net framework center


z

http://msdn.microsoft.com/vcsharp/

ASP.net
z

http://msdn.microsoft.com/netframework/

C#
z

http://msdn.microsoft.com/library

http://www.asp.net

Laboratrio .net do ISEP/IPP


z

http://www.dei.isep.ipp.pt/labdotnet/

Mais Informao...
z

Open CLI
z

Mono (.net @ Unix)


z

http://sourceforge.net/projects/ocl

http://www.go-mono.com/

ECMA
z

http://www.ecma-international.org/

Mais Informao...
z

Introduction to C# @ ECMA
z

http://www.ecmainternational.org/activities/Languages/Introdu
ction%20to%20Csharp.pdf

Common Language Infrastructure @


ECMA
z

http://www.ecmainternational.org/activities/Languages/ECMA
%20CLI%20Presentation.pdf

Vous aimerez peut-être aussi