• Nenhum resultado encontrado

Introdução ao Desenvolvimento.NET

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao Desenvolvimento.NET"

Copied!
29
0
0

Texto

(1)

Introdução ao

Desenvolvimento .NET

Paulo Sousa

Instituto Superior de Engenharia do Porto Instituto Politécnico do Porto

Índice

z

Plataforma .net

z

C#

(2)

Plataforma .net

Introdução ao desenvolvimento .net

(3)

.net framework

z

Plataforma de desenvolvimento

z

Máquina virtual para execução

z CLR (Common Language Runtime)

z

Biblioteca de classes

z .net framework Class Library

z Conjunto de classes base sobre a qual se desenvolve

.net framework (2/2)

Win32 Win32 Message Message Queuing Queuing COM+ COM+ (Transactions, Partitions, (Transactions, Partitions, Object Pooling)

Object Pooling) IISIIS WMIWMI Common Language Runtime

Common Language Runtime .NET Framework Class Library .NET Framework Class Library

ADO.NET: Data and XML ADO.NET: Data and XML Web Services

Web Services User InterfaceUser Interface VB C++ C#

ASP.NET ASP.NET

(4)

.net framework (namespaces)

CLR

(Common Language Runtime)

.NET Framework Class Library Support

.NET Framework Class Library Support

Thread Support

Thread Support COM MarshalerCOM Marshaler Type Checker

Type Checker Exception ManagerException Manager

MSIL to Native

MSIL to Native

Compilers

Compilers ManagerManagerCodeCode CollectionCollectionGarbageGarbage

Security Engine

Security Engine DebuggerDebugger

Class Loader

(5)

Características CLR

z Gestão de memória Æ Garbage collection

z Evita “perdas” de memória

z Excepções

z Tratamento de erros mais elegante

z Type safety

z Validações de compile e run time para casts e inicializações

z Versioning

z Gestão de processos e threads

z Sistema comum de tipos

z Tudo são objectos

z Orientada aos “componentes”

“Máquina virtual”

z

Instanciação de Common Language

Infrastructure (CLI)

z Standard ECMA

z

Um mesmo formato de ficheiro binário

z

Um sistema de tipos comum

z

Meta dados

z

Linguagem intermédia (MSIL)

z Permite várias linguagens de programação

(6)

Implementações CLI

z

Microsoft Î CLR

z

Shared Source CLI

z Mono (Linux) z Rotor (FreeBSD)

Compilação e Execução

Class Loader Class Loader Class Loader JIT Compiler with optional verification JIT Compiler JIT Compiler with optional with optional verification verification Execution Execution Security Checks Security Checks EXE/DLL (MSIL and metadata) EXE/DLL (MSIL and metadata) Class Libraries (MSIL and metadata) Class Libraries (MSIL and metadata) Trusted, pre-JITed code only Call to an uncompiled method Runtime Engine Managed Native Code Compiler Compiler Source Code Source Code

(7)

Assembly

z

Blocos de construção de aplicações

z

Unidade fundamental de deployment,

versioning, reutilização e segurança

z

Colecção de tipos e recursos

z

Fornece meta-informação ao CLR para

execução

z

Todos os tipos existem no contexto de

um assembly

z

Tipos de assembly: DLL, EXE

Aplicação .net

(8)

Application Domain

z

Fornecem isolamento (execução e

segurança) entre aplicações diferentes

z

Podem existir diferentes appdomain em

mais que um processo (ex., IIS)

z Garantia de isolamento e segurança sem overhead de criação de processo

z Permite comunicação entre appdomain sem overhead de IPC (mas utiliza à mesma RPC)

z Cada appdomain pode ser parado sem parar o processo

Appdomain & assembly

z

Vários assemblys são tipicamente

carregados para um appdomain

z

É possível partilhar código de um

assembly utilizado em vários appdomain

mas não os dados

(9)

CTS

z

Common Type System

z

Infra-estrutura para inter-operabilidade

entre linguagens de programação

z

Orientado a objectos

z

Suporta tipos de referência e tipos de

valor

z

Compatível com linguagens

procedimentais

(10)

Value-types & Reference-types

z

Value types

z Contém directamente os dados

z Não pode ser null

z

Reference types

z Contém referência para objecto

z Pode ser null

20

int sp

String cp olá

Garbage Collection

(11)

Eventos

z

Mecanismo de “sinalização”

z

Intrínseco ao framework

z

extensivamente utilizado internamente

z

Permite programação assíncrona

z

Publish/subscribe

Componentes .net

z Orientada aos “componentes”

z Propriedades, métodos e eventos

z Design e run –time

z Especialmente vocacionados para utilização com “design surfaces” (ex., Visual Studio)

z O termo componente em .net corresponde a uma classe que implementa a interface IComponent ou deriva directa ou indirectamente de

(12)

Componentes .net (2/2)

z

Componentes com interface gráfica são

chamados Control.

z

Devem derivar directa ou indirectamente

de System.Windows.Forms.Control

ou System.Web.UI.Control

C#

(13)

Introdução

z Nova linguagem tendo por base o C/C++

z Também vai buscar inspiração ao Java ;-)

z Mantém o investimento e know-how existente

z Código mais “limpo”

z Construções sintáticas especiais para tirar partido do framework

z Tudo são objectos

z Ficheiros com extensão .cs

z Declaração e definição de métodos no mesmo ficheiro

Tipos de dados

z object

z string

z sbyte, short, int, long

z byte, ushort, uint, ulong

z char

z float, double, decimal

z bool

z Estes tipos são alias para os tipos definidos na framework

(14)

Classes e namespaces

z

Organização do código dentro de

classes

z

Classes organizadas dentro de

namespaces

namespace Demo {

public class MyClass { ...

} }

Métodos

z Sintaxe semelhante ao C/C++

z Podem ser públicos ou privados

z Suporta overloading

public class MyHelloWorld { ...

public void SayHello() { ... }

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

(15)

Passagem de parâmetros

z Por valor

z Por referência

z out – parâmetro de saída

z ref – parâmetro de entrada e saída

public void func1(int x) { ... }

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

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

Herança

z

Apenas existe herança simples

public class MyClassBase { ...

public void Func() { ... } }

public class MyClassDeriv : MyClassBase { ...

public new void Func() { base.Func(); ... } }

(16)

Herança (2/2)

z

Métodos não são 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 métodos

public class Button : Control {

private string caption; public string Caption {

get { return caption; }

set { caption = value; Repaint(); } }

... }

(17)

Operadores

z

Atribuição

z = z

Relacionais

z < <= > >= == != z

Lógicos

z && || ! z

Aritméticos

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

--Constantes

z

Pré-definidas

z null z true false z

De utilizador

(18)

Criação de objectos

// definição da classe

public class MyClass { ... }

// definição da variável MyClass obj;

// criação do objecto

obj = new MyClass();

Construtores

z

Seguem as regras do C/C++

z Mesmo nome da classe

z Sem tipo de retorno

z Podem ter ou não argumentos

public class MyClass { ...

public MyClass() { ... }

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

(19)

Arrays

z

Suportados ao nível da biblioteca base

de classes em

System.Array

// declaração do vector

String[] vec;

// criação do vector

vec = new String[10];

// número de elementos pode ser dinâmico

vec = new String[n];

Ciclos

// repetição n vezes

for (int x = 0; i < vec.Length; i++) Console.WriteLine(vec[i]);

// repetição condicional

int i = 0;

while (i < vec.Length) {

Console.WriteLine(vec[i]); i++;

}

// enumeração

foreach (String x in vec) Console.WriteLine(x);

(20)

Condicionais

// teste de decisão if (i < vec.Length) Console.WriteLine(vec[i]); else Console.WriteLine(“Erro!!!”); // teste múltiplo switch (x) { case 1: ...; break; case 2: ...; goto case 3; case 3: ...; break; default: ...; break; }

Interfaces

z Semelhantes a classes mas não têm implementação dos métodos

z Apenas definem as assinaturas

z Todos os métodos são públicos

public interface IMovimentavel

{

void MoverEsquerda(); void MoverDireita(); ...

(21)

Implementação de Interfaces

z Qualquer classe pode implementar uma ou mais interfaces

public class Pessoa : IMovimentavel

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

Enumerados

z Fortemente “tipados”

z Sem conversão automática para int

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

z 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 }

(22)

structs

z Semelhantes a classes, excepto

z Alocação na stack e não no heap

z Não suporta herança

z Cópia (atribuição) de contéudo e não de referência

z Ideal para conceitos pequenos (ex., Complex)

z Utilizada nos tipos primitvos da framework (ex. int)

z Benefícios

z Como não são alocadas no heap não 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);

10 20 10 10 CPoint sp cp

(23)

delegates

z Ponteiros (orientados a objectos) para métodos

z Permite múltiplos receptores

z Cada delegate tem uma lista de invocação

z Publish/subscribe

z 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);

Comentários 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) { ... ...

} }

(24)

Desenvolvimento .Net

Introdução ao desenvolvimento .net

IDE

z

Visual Studio .net 2003

z Solução multi-projecto

z Multi-linguagem

z Multiplos tipos de projecto

z Debugger

z Geração de código .net

z Geração de código nativo

(25)

Demo – Hello World

(26)

Perguntas & Respostas

Introdução ao desenvolvimento .net

Mais Informação...

z MSDN Library

z http://msdn.microsoft.com/library z .net framework center

z http://msdn.microsoft.com/netframework/ z C#

z http://msdn.microsoft.com/vcsharp/ z ASP.net

z http://www.asp.net

z Laboratório .net do ISEP/IPP

(27)

Mais Informação...

z

Open CLI

z http://sourceforge.net/projects/ocl

z

Mono (.net @ Unix)

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

ECMA

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

Mais Informação...

z

Introduction to C# @ ECMA

z http://www.ecma-international.org/activities/Languages/Introdu ction%20to%20Csharp.pdf

z

Common Language Infrastructure @

ECMA

z

http://www.ecma-international.org/activities/Languages/ECMA %20CLI%20Presentation.pdf

(28)

Introdução ao

Desenvolvimento .NET

Paulo Sousa

Instituto Superior de Engenharia do Porto Instituto Politécnico do Porto

(29)

Referências

Documentos relacionados

b) sendo a data de pagamento da Guia de Recolhimento da União (GRU- SIMPLES) a mesma, será considerado o número do pedido registrado em cada Guia de Recolhimento da União

A progressão fora das dunas será feita em pequenos grupos e, todos juntos, para as travessias dos grandes cordões dunares em busca das mais belas passagens.. Os almoços piquenique

Para alcançar tanto os objetivos gerais como os específicos, estruturamos nosso trabalho de forma a apresentar uma breve introdução sobre o artigo traduzido e sobre a nossa

Como dito, essa foi uma das atividades de um projeto de extensão que parte do desejo dos discentes de contribuírem ativamente na elaboração de propostas de ensino, pesquisa

Ela determina, além da obrigatoriedade do exame toxicológico, o tempo máximo de direção, tempo de espera, descanso, jornada de trabalho e o seguro obrigatório ao

A partir de então, as doulas e as enfermeiras obstétricas reaparecem neste cenário buscando auxiliar essas mulheres no processo de parturição, utilizando métodos

Como sugestão de novos estudos, indica-se a pesquisa com organizações de outros segmentos para identificar como se diferenciam as atitudes empreendedoras e as percepções dos

De um modo geral, os problemas de interesse neste trabalho envolvem problemas de Otimização Combinatória conhecidos como NP-Difíceis, que são aqueles para os quais não se conhece