• Nenhum resultado encontrado

Introdução ao Desenvolvimento.NET Paulo Sousa

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao Desenvolvimento.NET Paulo Sousa"

Copied!
54
0
0

Texto

(1)

Introdução ao

Desenvolvimento .NET

Paulo Sousa

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

(2)

Índice

z

Plataforma .net

z

C#

(3)

Plataforma .net

(4)
(5)

.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

(6)

.net framework (2/2)

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

IIS 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

(7)
(8)

CLR

.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 Code Code Manager Manager Garbage Garbage Collection Collection Security Engine

Security Engine DebuggerDebugger

Class Loader

(9)

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

(10)

“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

(11)

Implementações CLI

z

Microsoft

Î

CLR

z

Shared Source CLI

z Mono (Linux)

(12)

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

(13)

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

(14)

Aplicação .net

(15)

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

(16)

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

(17)

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

(18)
(19)

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

(20)

Garbage Collection

(21)

Eventos

z

Mecanismo de “sinalização”

z

Intrínseco ao framework

z

extensivamente utilizado internamente

z

Permite programação assíncrona

(22)

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

(23)

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

(24)

C#

(25)

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

(26)

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

(27)

Classes e namespaces

z

Organização do código dentro de

classes

z

Classes organizadas dentro de

namespaces

namespace Demo {

public class MyClass { ...

} }

(28)

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) { ... }

(29)

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) { ... }

(30)

Herança

z

Apenas existe herança simples

public class MyClassBase { ...

public void Func() { ... } }

public class MyClassDeriv : MyClassBase { ...

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

(31)

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(); ... }

(32)

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

... }

(33)

Operadores

z

Atribuição

z = z

Relacionais

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

Lógicos

z && || ! z

Aritméticos

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

(34)

--Constantes

z

Pré-definidas

z null

z true false

z

De utilizador

(35)

Criação de objectos

// definição da classe

public class MyClass { ... }

// definição da variável

MyClass obj;

// criação do objecto

(36)

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) { ... } }

(37)

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

(38)

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

(39)

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

(40)

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(); ...

(41)

Implementação de Interfaces

z Qualquer classe pode implementar uma ou

mais interfaces

public class Pessoa : IMovimentavel

{

void MoverEsquerda() { ... }

void MoverDireita() { ... }

... }

(42)

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 }

(43)

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

(44)

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

(45)

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

(46)

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) { ... ...

} }

(47)

Desenvolvimento .Net

(48)

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

(49)
(50)
(51)

Perguntas & Respostas

(52)

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

(53)

Mais Informação...

z

Open CLI

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

z

Mono (.net @ Unix)

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

z

ECMA

(54)

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

Referências

Documentos relacionados

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

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

3 — São exceção ao disposto no número anterior, as reimportações referentes a anteriores importações que cum- priram o disposto no presente decreto -lei ou no Regulamento 4 —

Essa dissertação justifica-se por abordar um tema de relevância internacional, nacional e regional, por examinar os esforços da diplomacia brasileira na busca de maior

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

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

Dos resultados obtidos por ambos os conjuntos de dados, pode ser observado que, se há a diminuição da sobreposição (aumento de ), o número de detectores também diminui, assim como

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