zaawansowane systemy programowania grafiki

background image

Zaawansowane Systemy

Programowania Grafiki

Wykład 2

background image

Platforma .NET

Platforma programistyczna

środowisko uruchomieniowe: Common Language

Runtime (CLR)

biblioteka klas: Base Class Library (BCL)

operacje na plikach, wyświetlanie grafiki, interakcja z

bazami danych, manipulacja XML, kryptografia, algorytmy

numeryczne, komunikacja sieciowa

Niezwiązana z konkretnym językiem

programowania

Automatyczne zarządzanie

kodem programu

pamięcią

zabezpieczeniami i wyjątkami

Najnowsza wersja: .NET Framework 4

background image

Common Language Runtime

środowisko uruchomieniowe platformy .NET

„maszyna wirtualna aplikacji”

kompiluje i wykonuje kod zapisany w języku

pośrednim (Common Intermediate Language)

wbudowane mechanizmy

zarządzania pamięcią i wątkami

obsługi wyjątków

zwalniania pamięci, tzw. „garbage collection”

kontroli bezpieczeństwa wykonywanych aplikacji

niezależna od maszyny i systemu operacyjnego

(w przeciwieństwie do Win32 API)

Windows, Unix, Macintosh

background image

CLR

Kompilacja

Uruchomieni
e

background image

Just-In-Time

Kompilacja w locie, bezpośrednio przed wykonaniem

danego fragmentu kodu

kod źródłowy → kod bajtowy (pośredni)

program jest rozpowszechniany w postaci kodu pośredniego

na maszynie uruchamiającej program:

kod bajtowy → kod maszynowy

Zalety

tradycyjna maszyna wirtualna interpretuje kod bajtowy, JIT

jest wydajniejszy

kompilacja może być zoptymalizowana pod system

docelowy

system może zbierać statystyki n.t. szybkości działania i

dodatkowo optymalizować kod

jeżeli jest taka potrzeba, to można skompilować kod

źródłowy do kodu maszynowego

background image

Common Language Infrastructure

Otwarta specyfikacja obejmująca:

Common Type System

Metadane (informacja o strukturze programu)

Common Language Specification

Virtual Execution System (VES)

Każdy język, który spełni standard ECMA-335

może generować kod rozumiany przez CLR

VB.NET, C#, J#, C++/CLI, JScript, Perl, Python,

Fortran, Cobol, #Smalltalk, Delphi.NET,

DotLisp, Ruby.NET

CLR jest implementacją standardu CLI

autorstwa Microsoft

background image

Virtual Execution System

Uruchamia (JIT), linkuje i ładuje pliki napisane

dla CLI

Udostępnia usługi takie jak:

Garbage collection

Code Access Secuirity

co mój kod może robić

kto może wołać mój kod

Wsparcie dla debugowania

Współpraca kodu zarządzanego i nie zarządzanego

background image

Język C# w 30 minut

Język

obiektowy

wywodzący się z C++ i Javy

brak bezpośredniego dostępu do pamięci

(safe/unsafe code)

automatyczne zarządzanie pamięcią, garbage

collection

brak zmiennych i funkcji globalnych

zmienne lokalne nie mogą się przesłaniać

bool jest typem ścisłym

C# nie wspiera wielodziedziczności

wspiera mechanizm refleksji

Typy parametryzowane: Generics (polimorfizm

parametryczny)

background image

Typy

Bezpośrednie: bool, char, sbyte, byte,

short, ushort, int, uint, long, ulong, float,

double, struct, enum, decimal

umieszczane na stosie

bezpośrednio zawierają dane

każda zmienna ma swoją kopię

Referencyjne: obiekty

umieszczane na stercie

zmienna zawiera referencję do danych

wiele zmiennych może odnosić się do jednego

obiektu – operacje na jednej zmiennej mogą mieć

wpływ na drugą

background image

Enumeracja

class

Przyklad

{

enum

DniTygodnia

{ Poniedzialek, Wtorek, Sroda };

DniTygodnia

dzien;

Przyklad()

{

dzien =

DniTygodnia

.Poniedzialek;

}

}

background image

Konwersja typów

C# wymaga zgodności typów

konieczność jawnej konwersji jeżeli może zajść
utrata informacji

klasa Convert

int

x =

Convert

.ToInt32(123.456);

Object

o;

//...

// if (!o) - źle

if

(o==

null

)

// dobrze

{

//...

}

background image

Tablice

jednowymiarowe

int[] tab = new int[10]; tab.Length;

int[] tab = {1, 2, 3, 4, 5};

wielowymiarowe

int[,] tab2d = new int[10,3];

tab.Length; tab.GetLength(1);

nieregularne

int[][] jagged = new int[10][];

jagged[0] = new int[5];

jagged[1] = new int[100];

background image

Instrukcje warunkowe

if (wyrażenie) { instrukcje; } else
{ instrukcje; }

switch/case

switch

(ch)

{

case

'a'

:

break

;

case

'b'

:

break

;

default

:

break

;

}

background image

Pętle

while (wyrażenie) { instrukcje; }

for (wyrażenie) { instrukcje; }

do {instrukcje;} while (wyrażenie)

foreach(typ zmienna in kolekcja) {instrukcje;}

background image

Instrukcje skoku

goto

break

continue

background image

Klasy

modyfikator static – typ/metoda statyczna

modyfikator partial class – klasa rozbita na
wiele plików

klasa może rozbita na wiele plików, np.:
public partial class MojaKlasa { .... }

background image

Modyfikatory dostępu

public – typ lub pole dostępny dla innego

kodu w tym samym lub innym assembly

private – typ lub pole dostępne tylko dla kodu

w tej klasie (domyślne dla pól klasy)

protected – typ lub pole dostępne dla kodu w

tej klasie lub klasie potomnej

internal – typ lub pole dostępne dla kodu

tylko w tym assembly (domyślne dla klas)

protected internal = protected OR internal

background image

Dziedziczenie

Można dziedziczyć tylko po jednej klasie ale
po wielu interfejsach

background image

Funkcje wirtualne

modyfikatory

virtual – jawna deklaracja funkcji wirtualnej

override – jawna deklaracja przeciążenia funkcji
wirtualnej

background image

Klasy i metody abstrakcyjne

modyfikator abstract

background image

Właściwości (Properties)

background image

Obsługa wyjątków

OutOfMemoryException
NullReferenceException
InvalidCastException
ArrayTypeMismatchException
IndexOutOfRangeException  
ArithmeticException
DivideByZeroException
OverFlowException 

background image

Delegaty

modyfikator delegate

typ danych definiujący
referencję do funkcji

podobne do wskaźników do
funkcji w C/C++

multicast

użycie delegata:

deklaracja

utworzenie

wywołanie

background image

Zdarzenia

Obserwowany

rozsyła zdarzenia do

obserwatorów:

Deklaracja delegata i zdarzenia

Deklaracja metody rozsyłającej

W odpowiednim momencie wywołanie metody
rozsyłającej

Obserwator

rejestruje się do obserwowanego:

Deklaracja metody reagującej na zdarzenie

powiązanie metody reagującej ze zdarzeniem
obserwowanego

background image

using

System;

namespace

MojaPrzestrzen

{

public

class

Obserwowany

{

private

string

tekst;

// deklaracja delegata i zdarzenia

public

delegate

void

Handler

(

object

source,

string

tekst);

public

event

Handler

Zdarzenie;

protected

void

Rozeslij(

string

tekst)

{

if

(Zdarzenie !=

null

)

Zdarzenie(

this

, tekst);

}

public

string

Tekst

{

set

{

this

.tekst =

value

; Rozeslij(

value

); }

get

{

return

tekst; }

}
}

public

class

Obserwator

{

public

void

Reaguj(

object

source,

string

t)

{
System.

Console

.WriteLine(

"Nowy tekst: "

+t);

}
}

public

class

Test

{

public

static

void

Main()

{

Obserwowany

a =

new

Obserwowany

();

a.Tekst =

"Hej"

;

Obserwator

b =

new

Obserwator

();

a.Zdarzenie +=

new

Obserwowany

.

Handler

(b.Reaguj);

a.Tekst =

"123"

;

}
}
}

background image

Przeciążanie operatorów

background image

Preprocesor

#if

#else

#elif

#endif

#define

#undef

#warning

#error

#line

#region

#endregion

background image

Dokumentacja XML

Dokumentacja w kodzie
<remarks>, <summary>, <example>, <exception>,
<param>, <permission>, <returns>, <seealso>,
<include>

background image

Ikony


Document Outline


Wyszukiwarka

Podobne podstrony:
AL2 system i programowanie pl
prezentacje zaawans, systemy liczbowe LO
DS066 XC95108 In System Programmable CPLD
R. 6-2 Struktura OBD-przyklad 1, Uczelniane, Semestr 2, Zaawansowane Systemy Baz Danych, WYKŁ [OZaik
In System Programming T89C51RD2 Bootloader
Botanika systematyczna program ćwiczeń 2014, biologia, Biologia I rok, Botanika systematyczna
DS063 XC95108 5V In System Programmable CPLD Family
Modelowanie brylowe zespolow i elementow maszyn w programach grafiki inzynierskiej cz 1
MS Access 97 PL Zaawansowane techniki programowania
Jezyk Cg Programowanie grafiki w czasie rzeczywistym cgpgrt
Programowanie grafiki Java 3D i Python
Cwiczenie nr 14 Zaawansowane mozliwosci program
OpenGL Podstawy programowania grafiki 3D opglwp
System programowego oddziaływania

więcej podobnych podstron