A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento ASP.net. 1 Framework.net Common Language Runtime Assembly Garbage Collection Conceitos de C# Características da Linguagem Operadores e.

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento ASP.net. 1 Framework.net Common Language Runtime Assembly Garbage Collection Conceitos de C# Características da Linguagem Operadores e."— Transcrição da apresentação:

1 Desenvolvimento ASP.net

2 1 Framework.net Common Language Runtime Assembly Garbage Collection Conceitos de C# Características da Linguagem Operadores e estruturas

3 Framework.net

4 3 Visão.net

5 4 Framework.net Conjunto de tecnologias para o desenvolvimento e utilização de componentes para a criação de: Web Forms Web Services Aplicações Windows Suporta todos as fases da produção de Software Desenvolvimento Debugging Distribuição Manutenção

6 5 Objectivos da Microsoft: To provide a consistent object-oriented programming environment whether object code is stored and executed locally, executed locally but Internet-distributed, or executed remotely. To provide a code-execution environment that minimizes software deployment and versioning conflicts. To provide a code-execution environment that promotes safe execution of code, including code created by an unknown or semi-trusted third party. To provide a code-execution environment that eliminates the performance problems of scripted or interpreted environments. To make the developer experience consistent across widely varying types of applications, such as Windows-based applications and Web-based applications. To build all communication on industry standards to ensure that code based on the.NET Framework can integrate with any other code..NET Framework Conceptual OverviewNET Framework Conceptual Overview

7 6 Framework.net

8 7 Dois componentes principais: Common Language Runtime.Net Framework class Library

9 8 Common Language Runtime - CLR Ambiente de execução das aplicações desenvolvidas em.Net Fornece um conjunto de serviços, ao nível das fases de desenvolvimento, de distribuição e de execução, que melhoram o desempenho da aplicação. Gere o código em tempo de execução, fornecendo serviços como: Gestão de memória Gestão de threads Execução remota Segurança de tipos de dados e código Conceito de Managed Code Máquina Virtual

10 9.Net Framework

11 10 CLR - Arquitectura Class Loader MSIL to Native Compilers (JIT) Code Manager Garbage Collector (GC) Security EngineDebug Engine Type CheckerException Manager Thread SupportCOM Marshaler Base Class Library (.NET Framework) Support Gere a metadata e o carregamento das classes necessárias. Converte código MSIL para código nativo optimizado Controla a execução do código Gestão de memória Procedimentos de segurança baseados na identificação do utilizador e na localização do código Permite fazer debug da aplicação Impede conversões inadequadas e gere o acesso às variáveis Tratamento de erros Fornece classes e interfaces para utilização de threads Sequencia a distribuição dos componentes Faz a integração com a.NET Framework class library.

12 11 CLR - Características Common Type System Especifica um conjunto de tipos de dados Compilador Just-in-time (JIT) O JIT converte o código intermédio (MSIL) em código máquina nativo optimizado Gestão de memória – Garbage Collector Evita problemas de falta de memória disponível Tratamento de Excepções Permite um tratamento de erros mais elegante Gestão de Threads

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

14 13 Common Language Runtime managed code = MSIL + Metadata Microsoft intermediate language linguagem assembly abstracta, independente do CPU. Metadata descrição dos tipo de dados Just in time Compilation – JIT JIT usa as instruções da MSIL e Metadata para criar código máquina nativo em tempo de execução Verificação do código Managed code não é interpretado, é executado na linguagem máquina do computador

15 14 Just in time Compilation

16 15 Common Type System Define como os tipos são declarados, usados e geridos no runtime. Fornece um modelo orientado aos objectos para suportar a implementação de várias linguagens. Define regras que as linguagens devem seguir de modo a permitir que objectos em diferentes linguagens possam interagir Value / Reference Types Todos os objectos derivam de System.Object

17 16 Common Type System Classificação dos tipos

18 17 Framework Class Library.NET Framework Class Library O namespace System é o namespace raiz dos tipos principais Organização numa hierarquia de nomes System.Collections.ArrayList representa o tipo ArrayList que pertence ao namespace System.Collections

19 18 Class Library- Exemplos System.Collections Contains interfaces and classes that define various collections of objects, such as lists, queues, bit arrays, hashtables and dictionaries. System.Data Contains classes that constitute most of the ADO.NET architecture. System.IO Contains types that allow synchronous and asynchronous reading and writing on data streams and files. System.Net.Mail Contains classes used to send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery. System.Web.UI Provides classes and interfaces that allow you to create controls and pages that will appear in your Web applications as user interface on a Web page.

20 19 Assembly Contêm código e metadata para o CLR Constitui-se como unidade básica de distribuição Podem ser do tipo EXE e DLL Simplifica a instalação de aplicações e gestão de versões.

21 20 Algoritmo Garbage Collection Espera que todas as threads terminem Verifica quais os objectos que estão referenciados. A memória ocupada pelos objectos não referenciados é libertada. Desloca os objectos válidos para acompact heap Actualiza as suas referências

22 21 Garbage Collection [http://w2ks.dei.isep.ipp.pt/labdotnet//files/dotnetapprentice-aspx/GarbageCollection.swf]

23 C#

24 23 C# vs Java Both Java and C# have their roots in C++ and share features with that language. Both languages compile to an intermediate code rather than pure machine code. Java compiles to what is known as Java Virtual Machine (JVM) bytecode, while C# compiles to Common Intermediate Language, CIL. Java bytecode is executed by an application called the Java virtual machine (JVM). Similarly, compiled C# programs are executed by the Common Language Runtime, or CLR. [The C# Programming Language for Java Developers]The C# Programming Language for Java Developers

25 24 C# vs Java Exception handling in C# is very similar to Java, with some minor differences. C# handles run-time errors (also called exceptions) with the try...catch construct, just as in Java. The System.Exception class is the base class for all C# exception classes. Like Java, C# is strongly type checked. The compiler detects where types are used in a way that may cause errors at run time. Like Java, C# provides automatic garbage collection, freeing the programmer from keeping track of allocated resources. Both Java and C# support single inheritance and multiple interface implementations. [The C# Programming Language for Java Developers]The C# Programming Language for Java Developers

26 25 C# using System; public class HelloWorld { public static void Main() { Console.WriteLine("Hello World! "); }

27 26 C# Namespace (package) Classes organizadas em namespace Agrupamento lógico de classes relacionadas using keyword para aceder a classes noutro namespace using. ; namespace { class Customer {... } } using System.Web.UI.WebControls ;

28 27 C# Data Types C# tem todos os tipos de dados primitivos do Java Todos os tipos de dados primitivos em C# são objectos no System namespace System.Double (ou double) System.Int32 (ou int) int.Parse(...) Enums public enum Color {Green, Orange, Red, Blue}

29 28 Tipos de dados object string sbyte, short, int, long byte, ushort, uint, ulong char float, double, decimal bool Estes tipos são alias para os tipos definidos na framework Por exemplo, int == System.Int32

30 29 C# vs Java String Em C# podem comparar-se strings com os operadores == e != Para a concatenação de strings deve ser usada a classe StringBuilder do System.Text Character escape //Using String Literals string escapedPath

31 30 Métodos Sintaxe semelhante ao C/C++ Podem ser públicos ou privados Suporta overloading public class MyHelloWorld {... public void SayHello() {... } private void SetTitle(String Title) {... } }

32 31 C# Value and Reference Types value types – para os tipos primitivos como char, int, float int x=5; reference types – para classes e tipos de dados complexos. Variáveis deste tipo não contêm uma instância do tipo mas apenas uma referência para uma instância. myClass a = new myClass();

33 32 C# vs Java reference types myClass a = new myClass(); myClass b = a;

34 33 C# Passagem de parâmetros Por valor Por referência Com Ref e Out os argumento são passados por referência, possibilitando que a variável passada possa ser alterada no método. Ref obriga a inicializar a variável. Out não obriga a inicializar a variável class RefExample { static void Method(ref int i) { i = 44; } static void Main() { int val = 0; Method(ref val); // val is now 44 }

35 34 C# foreach O ciclo foreach que permite iterar nos itens de uma classecontainer (ex. Arrays) que implemente a interface IEnumerable public static void Main() { int[] arr1= new int[] {1,2,3,4,5,6}; foreach ( int i in arr1) { Console.WriteLine("Value is {0}", i); } }

36 35 C# Classes Modificadores de acesso public – visível para todos protected – visível apenas para as classes derivadas private – visível apenas dentro da classe internal – visível dentro do mesmo Assembly sealed Uma classe com o modificador sealed não pode ser herdada, a sua funcionalidade não pode ser alterada por outras classes derivadas. Final em Java

37 36 Herança Apenas existe herança simples public class MyClassBase {... public void Func() {... } } public class MyClassDeriv : MyClassBase {... public new void Func() { base.Func();... } }

38 37 C# Array int[] MyArray; // declares the array reference MyArray = new int[5]; //creates a 5 element integer array MyArray = new int[5] {1, 2, 3, 4, 5}; int[] TaxRates = {0, 20, 23, 40, 50}; int[][] multiArray = new int[2][]; Arrays são implementados como instâncias da classe System.Array System.Array.sort(MyArray);

39 38 C# Herança e classes derivadas Herança e implementação de Interface são definidas pelo mesmo operador : (extends e implements em Java) public class CountClass {... public virtual int StepUp() { return ++count; } } class Count100Class : CountClass { // Constructor public Count100Class(int x) : base(x) { } public override int StepUp() { return ((base.count) + 100); }

40 39 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();

41 40 C# vs Java Interfaces São um contracto definindo um conjunto de funcionalidades que devem ser implementadas Não têm implementação dos métodos, apenas definem assinaturas public interface IAritmetica { float add(float op1, float op2); float sub(float op1, float op2); } public class Aritmetica: IAritmetica {...}

42 41 C# vs Java Overriding de métodos Um método para poder ser overriding na classe derivada tem de ser declarado com o modificador virtual Na classe derivada o método é declarado com o modificador override public class CountClass {... public virtual int StepUp() { return ++count; } } class Count100Class : CountClass { Count100Class(int x) : base(x) { } public override int StepUp() { return ((base.count) + 100); }

43 42 C# Propriedades Também chamadas de smart fields Uma nova sintaxe abreviada para os métodos públicos Get e Set (accessors) de acesso a atributos privados da classe class MyClass { private int x; public void SetX(int i) { x = i; } public int GetX() { return x; } }

44 43 C# Definição de uma Propriedade class MyClass { private int _x; public int X { get { return _x; } set { _x = value; } }} Utilizaçao: MyClass objvar=new MyClass(); objvar.X=10; // chamada do set e passa 10 para value int y=objvar.X; // chamada do get, devolve _x

45 44 C# Boxing and Unboxing O processo de conversão de um tipo valor para um tipo referência é chamado boxing. O processo inverso é dito unboxing. Permite que tipos valores sejam tratados como objectos int i = 123; object o = i; Console.WriteLine(o.ToString());

46 45 C# Unboxing int i = 123; // A value type object box = i; // Boxing int j = (int)box; // Unboxing

47 46 C# Partial Class Uma classe ou interface pode ser definida em dois ou mais ficheiros de código. Todas as partes são combinadas quando a aplicação é compilada. Útil em grandes projectos. ASP.NET 2.0 usa classes parciais para separar código de desnvolvimento do código gerado automáticamente pela Framework public partial class Employee


Carregar ppt "Desenvolvimento ASP.net. 1 Framework.net Common Language Runtime Assembly Garbage Collection Conceitos de C# Características da Linguagem Operadores e."

Apresentações semelhantes


Anúncios Google