Presentation laddar. Vänta.

Presentation laddar. Vänta.

1. En infrastruktur för programutveckling

Liknande presentationer


En presentation över ämnet: "1. En infrastruktur för programutveckling"— Presentationens avskrift:

1 1. En infrastruktur för programutveckling
Programmering i C# 1. En infrastruktur för programutveckling

2 Ursprung Utvecklingsgrupp hos Microsoft
Anders Hejlsberg Generellt typsystem oberoende av språk Kompilering till mellanformat Självbeskrivande komponenter Heltäckande klassbibliotek Internetanpassat distribuerat system Kapitel 1

3 ECMA-standard Centrala delar i typsystem, mellanformat, exekveringsmiljö och klassbibliotek Common Language Infrastructure ECMA-334 Språket C# ECMA-335 Kapitel 1

4 Hello World i C# namespace Studentlitteratur.CSharp {
public class Minimal private string message; public Minimal(string message) this.message = message; } public void DeliverMessage() System.IO.Console.WriteLine(message); Kapitel 1

5 Hello World i C# forts. static void Main() {
Minimal obj = new Minimal(”Hello World!”); obj.DeliverMessage(); } Kapitel 1

6 Komponentorientering
Typsystemet rent objektorienterat Ett steg till: komponentorienterat Public-deklarerad klass blir komponent Stark typkontroll Skräpsamling Prestanda Sämre än C/C++ Bättre än Java… Kapitel 1

7 Common Language Infrastructure
Common Type System Typkategorier och deras egenskaper Common Language Specification Obligatoriska och valfria språkmekanismer Common Intermediate Language Mellanformatskoden och metainformationen Virtual Execution System Exekveringsmiljön Kapitel 1

8 Typsystemet (CTS/CLS) Exekveringsmiljön (VES)
Centrala begrepp Utvecklarens API är klass-biblioteket Kompilerat till CIL VB C++ C# Perl Python Klassbiblioteket Typsystemet (CTS/CLS) Exekveringsmiljön (VES) Operativsystemet Kapitel 1

9 1.1 Typkategorier Alla variabler är objekt
C# och .NET 1.1 Typkategorier Alla variabler är objekt Har beteende och tillstånd Alla typer finns i klassbiblioteket Inga typer i språket C# har ett antal synonymer till de vanligaste Motsvarar traditionella inbyggda typer Typerna har också CIL-namn Kapitel 1

10 Tre kategorier Klasser Structer Interface
Objekt hanteras med referensvariabel ”referenstyper” Structer Objekt har variabelnamn som representerar objektets tillstånd (värde) ”värdetyper” Interface Klass utan implementation Kapitel 1

11 Särskilda C#-kategorier
Särskild syntax för tre andra kategorier: Enum – uppräkningsbar typ (struct) Delegate – metodreferens (klass) Event – utökad delegate (metod) Obs endast syntaxmässigt annorlunda Kapitel 1

12 Exempel typkategorier
MyClass obj; obj = new MyClass(); MyStruct var; int x = 5; // en struct av typen Int32 int y = 10; y = x; // y och x är olika variabler med samma värde string s1 = ”Ett”; string s2 = ”Två”; s1 = s2; // s1 och s2 refererar till samma sträng Kapitel 1

13 1.2 Klassbiblioteket 294 standardiserade typer
Gemensam basklass heter Object (object) Indelat i namnrymder, roten heter System Indelat i underbibliotek, centrala heter BCL Underbibliotek utgör profiler BCL + Runtime Infrastructure = Kernel Levereras i DLL-filer innehållande CIL Kapitel 1

14 Undantag (exceptions)
Klass- biblioteket tillämpar undantag Var beredd hantera undantag! try { DangerousCall(); } catch (Exception e) Console.WriteLine(”Oväntat fel…”); Kapitel 1

15 1.3 Mellanformatet Kompilering ger fil innehållande CIL-kod samt metainformation: ett assembly Metainformationen kallas manifest En applikation består av en eller flera assemblies Assembly kan delas i flera filer: moduler En av dem innehåller då manifestet Kapitel 1

16 Autentisering Assemblies kan förses med krypterat hashvärde i manifestet krypteras med private key public key bifogas också manifestet VES kan göra motsvarande hash, dekryptera manifestets hash och jämföra Ger mycket säker verifiering av både innehåll och leverantör Kapitel 1

17 JIT-kompilering CIL-koden kompileras till maskinkod vid programstart
Full optimering för aktuell plattform En instans kan vara en process eller en tråd (definieras inte i VES) VES motsvarighet till process är AppDomain Isolerar exekverande program Kapitel 1

18 1.4 Skräpsamling Objekt som lämnas utan referenser vid exekvering raderas av VES skräpsamlare Ingen motsats till new i C# Algoritmen ospecificerad Därmed okänt när objekt raderas Destruktorer anropas vid ospecificerad tidpunkt någon gång mellan sista referensens försvinnande och programavslut Kapitel 1


Ladda ner ppt "1. En infrastruktur för programutveckling"

Liknande presentationer


Google-annonser