Framework .net - Dei-Isep

Propaganda
Desenvolvimento
ASP.net
Desenvolvimento ASP.net

Framework .net




Common Language Runtime
Assembly
Garbage Collection
Conceitos de C#


Características da Linguagem
Operadores e estruturas
1
Framework .net
Visão .net
3
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
4

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 Overview
5
Framework .net
6

Dois componentes principais:


Common Language Runtime
.Net Framework class Library
7
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
8
.Net Framework
9
CLR - Arquitectura
Faz a integração com a .NET Framework class library.
Base Class
Library
(.NET
Framework) Support
Sequencia
a distribuição
dos
componentes
Tratamento de erros
Procedimentos de segurança baseados na
Thread identificação
Support do utilizadorCOM
Marshalerdo
e na localização
código
Fornece
classes e interfaces para
Type
Checker
utilização
de threads
Exception Manager
Converte código MSIL para código nativo
optimizado
Impede
conversões inadequadas e gere o
Security Engine
acesso às variáveis
Debug Engine
Permite
aplicação
MSIL to Native
Codefazer debug daGarbage
Gestão de memória
Compilers (JIT)
Manager
Collector (GC)
Controla a execução do código
Class Loader
Gere a metadata e o carregamento das classes necessárias.
10
CLR - Características

Common Type System


Compilador Just-in-time (JIT)


Evita problemas de “falta de memória disponível”
Tratamento de Excepções


O JIT converte o código intermédio (MSIL) em código
máquina nativo optimizado
Gestão de memória – Garbage Collector


Especifica um conjunto de tipos de dados
Permite um tratamento de erros mais elegante
Gestão de Threads
11
Compilação e Execução
EXE/DLL
(MSIL and
metadata)
Compiler
Source
Code
Class Loader
Class
Libraries
(MSIL and
metadata)
JIT Compiler
with optional
verification
Trusted,
pre-JITed
code only
Managed
Native
Code
Call to an
uncompiled
method
Execution
Security Checks
Runtime Engine
12
Common Language Runtime

managed code = MSIL + Metadata

Microsoft intermediate language


Metadata


linguagem assembly abstracta, independente do CPU.
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


13
Just in time Compilation
14
Common Type System

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
15
Common Type System

Classificação dos tipos
16
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
17
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.
18
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.
19
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 a
“compact heap”
Actualiza as suas referências
20
Garbage Collection
[http://w2ks.dei.isep.ipp.pt/labdotnet//files/dotnetapprentice-aspx/GarbageCollection.swf]
21
C#
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]
23
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]
24
C#
using System;
public class HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello World! ");
}
}
25
C#

Namespace (package)



Classes organizadas em namespace
Agrupamento lógico de classes relacionadas
using keyword para aceder a classes noutro namespace
using <namespace hierarchy>.<class name>;
namespace <namespacename>
{
class Customer
{ ... }
}
using System.Web.UI.WebControls;
26
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}
27
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
28
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 com @
//Using String Literals
string escapedPath = @"\\FileShare\Directory\file.txt";
29
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)
{ ... }
}
30
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();
31
C# vs Java

reference types
myClass a = new myClass(); myClass b =
a;
32
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
}
}
33
C#

foreach
 O ciclo foreach que permite iterar nos itens de uma classe
“container” (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); }
}
34
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
35
Herança

Apenas existe herança simples
public class MyClassBase {
...
public void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public new void Func() { base.Func(); ... }
}
36
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);
37
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);
}
38
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();
39
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 {...}
40
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);
}
}
41
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;
}
}
42
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
43
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());
44
C#

Unboxing

int i = 123; // A value type
object box = i; // Boxing
int j = (int)box; // Unboxing


45
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
46
Download