Limbajul c sharp



Yüklə 1,48 Mb.
səhifə1/14
tarix08.01.2019
ölçüsü1,48 Mb.
#92362
  1   2   3   4   5   6   7   8   9   ...   14

*********************

* Limbajul C sharp *

* ABC-doar *

*********************


*********************************

* autor RUSU MIRCEA AUREL VALER *

*********************************

*************************************

* MOTTO: *

* *


* "Festina lente" *

* *


* "Dans le doute,abtiens-toi" *

* *


*************************************

De ce C sharp:


Pentru ca este cel mai modern limbaj de programare.

C sharp exploateaza baza de date arhivata in platforma .Net,

oferind cele mai complexe solutii pentru orice problema de

programare.Modulele executabile sunt compilate in cod

intermediar si sunt portabile in orice mediu de programare.

C O N T I N U T

Generalitati . . . . . . . . . . . . . . . . . . . . . . 1

Compilatorul C sharp (optiuni) . . . . . . . . . . . . . 5

Limbajul C sharp . . . . . . . . . . . . . . . . . . . 13

Tipuri de data . . . . . . . . . . . . . . . . . . 13

Operatori . . . . . . . . . . . . . . . . . . . . . 21

Instructiuni . . . . . . . . . . . . . . . . . . . 23

Clase si obiecte . . . . . . . . . . . . . . . . . 25

Structuri . . . . . . . . . . . . . . . . . . . . . 35

Interfete . . . . . . . . . . . . . . . . . . . . . 38

Clasele de tip Delegates . . . . . . . . . . . . . 40

Indexatori (indexers) . . . . . . . . . . . . . . . 43

Generice . . . . . . . . . . . . . . . . . . . . . .44

Enumerari . . . . . . . . . . . . . . . . . . . . . 49

Iteratori . . . . . . . . . . . . . . . . . . . . . 51

Selectii LINQ . . . . . . . . . . . . . . . . . . . 55

Namespaces ( blocuri de memorie ) . . . . . . . . . 59

Nullable types . . . . . . . . . . . . . . . . . . .61

Unsafe code . . . . . . . . . . . . . . . . . . . . 63

Documentatia XML . . . . . . . . . . . . . . . . . 65

Structura si executia aplicatiilor . . . . . . . . . . .67

Application Domain . . . . . . . . . . . . . . . . .67

Atribute . . . . . . . . . . . . . . . . . . . . . 69

Containere de tip Collection . . . . . . . . . . . 72

Exceptii si erori . . . . . . . . . . . . . . . . . 76

Threads (procesarea paralela) . . . . . . . . . . . 79

Reflexie . . . . . . . . . . . . . . . . . . . . . .84

Securitatea Aplicatiilor . . . . . . . . . . . . . 87

Platforma .NET . . . . . . . . . . . . . . . . . . . . 91

Prezentare generala . . . . . . . . . . . . . . . 91

CLR (Common Language Runtime) . . . . . . . . . . 92

Class Library . . . . . . . . . . . . . . . . . . 93

System.Windows.Forms . . . . . . . . . . . . . . . 94

System.Data . . . . . . . . . . . . . . . . . . . 103

System.Timers . . . . . . . . . . . . . . . . . . 107

System.Runtime . . . . . . . . . . . . . . . . . . 108

System.Media . . . . . . . . . . . . . . . . . . . 109

System.IO . . . . . . . . . . . . . . . . . . . . 110

System.Diagnostics . . . . . . . . . . . . . . . . 112

Platforma Microsoft Visual C# 2008 . . . . . . . . . . 115

Windows Forms Application . . . . . . . . . . . . . 117

Exemplu OpenFile . . . . . . . . . . . . . . . . . 118

Exemplu Album Foto . . . . . . . . . . . . . . . . 121

Exemplu SoundPlayer . . . . . . . . . . . . . . . 124

Exemplu MediaPlayer . . . . . . . . . . . . . . . 126

Exemplu ChartFX . . . . . . . . . . . . . . . . . 128

Exemplu TextToHTML Converter . . . . . . . . . . . 129

Exemplu Web Browser . . . . . . . . . . . . . . . 130

Exemplu cu baza de date . . . . . . . . . . . . . 131

Exemplu cu PerformanceCounter . . . . . . . . . . 133

Windows Presentation Foundation . . . . . . . . . . 134

Exemple Grafica 2D . . . . . . . . . . . . . . . . 135

Exemplu Diagrama . . . . . . . . . . . . . . . . . 138

Exemple Grafica 3D . . . . . . . . . . . . . . . . 139

Exemple Animatie . . . . . . . . . . . . . . . . . 145

Exemplu Grid . . . . . . . . . . . . . . . . . . . 149

Exemplu Data Binding . . . . . . . . . . . . . . . 150

Exemplu cu baza de date . . . . . . . . . . . . . 152

Exemplu pentru documente XPS . . . . . . . . . . . 153

WPF Browser Application . . . . . . . . . . . . . . 157

Exemplu pentru WPFBrowser . . . . . . . . . . . . 157

Aplicatii cu ferestre multiple . . . . . . . . . . . 159

Concluzii generale,recomandari . . . . . . . . . . . . 160

GENERALITATI
Limbajul C# (C sharp) este un Standard International,dezvoltat de

firma Microsoft si patentat impreuna cu firmele Intel si Hewlett-Packard,

cu scopul de a oferii programatorilor un limbaj de programare modern,

multi-functional,orientat spre obiect,capabil sa exploateze noile tipuri

de resurse software oferite de platforma .Net.

Principalii dezvoltatori ai acestui limbaj sunt Anders Hejlsberg,

Scott Wiltamuth si Peter Golde,iar standardul de limbaj este reglementat

prin documentul numit ECMA-334/June 2006.

Limbajul nu este o inventie pura,ci este construit clasic,cu aceleasi

principii de baza ca si limbajul C++,sau Java.Majoritatea solutiilor

tehnice,au fost create prin extinderea celor din limbajele C++ si Java,

cu scopul de a simplifica munca programatorilor obisnuiti cu aceste doua

limbaje.Cunoasterea acestor limbaje nu este obligatorie,dar este utila.

Limbajul C# poate fi utilizat eventaul si pentru a invata de la zero

alfabetul programarii,dar acest manual se adreseaza programatorilor deja

avansati si presupune ca stiti deja sa lucrati cu clase si obiecte,sau cu

o interfata vizuala,ca stiti sa comunicati cu sistemul de operare si sa

gestionati file si fisiere,resurse si structuri de memorie.Cu alte cuvinte

acest "abecedar" nu este axat pe problemele fundamentale de programare,

ci doar pe solutiile oferite de limbajul C sharp.Vor fi prezentate si

notiunile fundamentale de limbaj,doar pentru a prezenta particularitatile

limbajului C#,sau pentru a propune solutii simple.

Specialistii,au caracterizat limbajul C# cu urmatoarele calitati:

multiparadigma: imperativa,functionala,generica si orientata spre obiect

sau component.

Prin paradigma se intelege un anumit stil de programare sau un anumit

tip de solutie tehnica,pentru o problema software oarecare.Principalele

paradigme de programare sunt:

1.Programarea imperativa -se face prin procesarea unor instructiuni,prin

care se schimba o anumita stare a sistemului.Programul este o lista

de astfel de comenzi si instructiuni.

2.Programarea functionala -se face prin evaluarea unor functii matematice

si evita structurile de date fixe sau variabile.Intregul program

este controlat cu ajutorul functiilor (Exemplu: functia Main).

3.Programarea procedurala sau structurata - se face prin fragmentarea

operatiilor necesare in seturi.Pentru a obtine o anumita stare a

sistemului,trebuiesc urmate mai multe astfel de seturi de operatii.

Cu alte cuvinte este un tip de programare modulara.

4.Programarea in flux -numita si programare dictata de evenimente,se face

prin raspuns la o anumita schimbare de stare a sistemului,denumita

eveniment (click de mouse,apasarea unei taste...etc.).In mod curent

legatura dintre eveniment si functiile programului se face fie

prin mesaje simple,fie prin thread-uri (linii de executie).

5.Programarea orientata spre obiect -utilizeaza structuri complexe de date

denumite obiecte,pentru a izola seturi de date in fragmente mai

mici de memorie,denumite si namespaces.Interactiunea cu restul

datelor din program se face prin functii specializate,denumite

metode.


6.Programarea declarativa -prezinta logica unui process fara a descrie

insa si fluxul de executie (Exemplu: clasele abstracte).

-2-

7.Programarea automata -este conceputa ca un set de stari finite ce pot



fi controlate cu ajutorul unor variabile de control sau a unor tabele

de schimbare de stare.Cu alte cuvinte,programul este format din mai

multe module automate sau semi-automate.

EXEMPLE: Limbajul Basic este imperativ,Limbajul Pascal este structurat si

functional,Limbajul C este pur functional,Limbajul Java este procedural si

"event-driven" iar platforma Visual Studio este formata exclusiv din

limbaje orienate spre obiect.

Se spune despre C sharp ca este multiparadigma,tocmai pentru ca accepta

toate aceste stiluri de programare,pentru a crea solutii personalizate,in

functie de necesitatile de moment.Cu alte cuvinte,daca este nevoie de o

singura linie de comanda,nu trebuie creat un obiect,sau o fereastra de

control ci se poate implementa direct comanda respectiva.Se va putea

construi un modul executabil ce contine o singura comanda.

Exemplu: -deschide automat un site de Web.

Aplicatiile C sharp,consuma minimum de memorie necesara,dar economia de

memorie nu este scopul principal pentru acest limbaj.Mai degraba,pentru

a simplifica munca programatorului,compilatorul C sharp include si un

mecanism de tip "automatic garbage collection",asemanator cu cel din Java,

prin care vaiabilele si constantele inutile sunt eliberate automat din

memorie,in functie de vechimea lor in program.

Compilatorul verifica foarte strict tipurile de data,dimensiunea

ariilor de date si variabilele neinitializate sau desuete,pentru a limita

la maximum procesarea de date "defective",sau imposibil de gasit (procese

redundante).

Aplicatiile scrise in limbaj C#,sunt portabile pe numeroase sisteme de

operare si sunt compatibile cu orice alt program ce utilizeaza standardul

CLI (Common Language Infrastructure) specificat prin documentul ECMA-335.

Standardul CLI propune un set de reguli cunoscut sub numele de CLS (Common

Language Specification) cu scopul de a asigura interoperabilitatea dintre

mai multe limbaje de programare.Codurile care respecta aceste reguli de

limbaj,sunt arhivate in niste biblioteci speciale si poarta numele de

"framework" (suport).O astfel de biblioteca este comuna pentru mai multe

limbaje de programare.Concret,limbajul C# exploateaza biblioteca .Net

(mai exact Microsoft.Net).Aceeasi biblioteca este exploatata si de catre

platforma Visual Basic 2010 si intregul set de programe din platforma

Visual Studio 2010.Ca rezultat,programele editate in Visual C# vor putea

fi portabile si pentru Visual Basic 2010.Mai mult decat atat,utilizatorii

platformei Visual Studio 2010 vor putea construi aplicatii ce utilizeaza

module scrise in limbaje diferite.Fiecare astfel de modul,va fi un simplu

executabil ce poate fi apelat la fel ca si o functie din program.

Numele de C sharp (C#) provine de la semnul "diez" din muzica si

indica faptul ca este vorba despre o incrementare a limbajului C.A fost

propusa initial denumirea de C++++,pentru a simboliza faptul ca este o

incrementare a limbajului C++,dar din motive comerciale s-a ales notatia

C#.Platforma .Net contine si alte limbaje denumite asemanator: J#,A#,Gtk#,

Cocoa# sau Qt#,toate cu scopul de a simboliza o incrementare a limbajului

de baza.Totusi,C# nu este un C++ cu functii auxiliare ci este un program

complet nou,cu alta biblioteca de functii si alta conceptie de organizare.

Nici compilarea si constructia aplicatiilor nu este similara.C sharp

construieste direct executabile,pentru sistemul de operare instalat.

-3-

Mai exact,compilatorul C# lucreaza in doua etape.In prima etapa codul



nativ este convertit la un limbaj intermediar: CIL (Common Intermediate

Language).In cea de a doua etapa,codul intermediar este transformat in

cod masina,in functie de sistemul de operare instalat.Acest mecanism este

asemanator cu cel al compilatorului Java.Principalul avantaj este dat de

faptul ca acelasi fragment de cod nativ,poate fi transformat in executabil

pentru Windows,Linux sau alt sistem de operare.Daca se creaza un sistem de

operare nou,nu va trebui rescris decat compilatorul.Toate aplicatiile

vechi vor putea fi utilizate pentru noul sistem de operare.Mai mult decat

atat,toate limbajele care exploateaza platforma .Net,utilizeaza acelasi

cod intermediar.Ca rezultat,aplicatiile pot utiliza module scrise in

limbaje de programare diferite.

Platforma .Net revolutioneaza si modul de arhivare a resurselor si

a bibliotecilor de coduri.Vechiul sistem utiliza celebrele biblioteci cu

alocare dinamica (DLL).Sistemul a fost exceptional la inceput,dar numarul

extrem de mare de file DLL noi,sau de versiuni incompatibile,a facut ca

gestionarea acestui tip de resurse sa fie tot mai dificila.In numeroase

cazuri,programele instalau versiuni diferite ale unei file DLL,versiuni

incompatibile cu restul programelor ce exploatatu aceasi fila DLL,avand

ca rezultat defectarea acestor programe.In plus,numeroasele file DLL,

puteau introduce o serie de conflicte de identificator,de supraincarcari

ale functiilor si claselor...etc.

Pentru a solutiona aceste inconveniente,platforma .Net a introdus un

nou tip de unitate logica pentru arhivarea resurselor,denumit "asamblare"

(assemblies).Aceste unitati pot fi de doua tipuri: aplicatii cu extensia

.exe (numite frecvent si executabile) si componente cu extensia .dll.

Primele sunt programe complete,executabile direct,iar ultimele sunt doar

obiecte,ce pot fi asamblate pentru a crea aplicatii noi.Din acest motiv,

in cazul limbajului C# se prefera expresia de "limbaj orientat spre

component" in locul celei de "limbaj orienat spre obiect".Deosebirile nu

sunt foarte mari,dar exista.Pentru robustetea suportului,limbajul C# nu

accepta mostenirea multipla.Fiecare obiect trebuie sa fie derivat din o

singura clasa ancestoare.Pentru a personaliza obiectul se pot utiliza

insa un numar nelimitat de interfete.

O astfel de unitate,denumita "asamblare" este mai complexa decat o

simpla arhiva pentru codul sursa si contine:1.-O serie de metadate in care

sunt arhivate informatii despre unitate,modul de acces si o lista de file

dependente (se mai numeste si "manifest") 2.-O serie de metadate in care

sunt descrise tipurile de data utilizate 3.-Codul intermediar propriu zis

(Codul MSIL) 4.-Resursele necesare.

Asamblarile pot fi de doua tipuri: private si partajate.Cele private

pot fi utilizate doar de catre aplicatia care le-a instalat,iar cele

partajate,pot fi utilizate in retea,de catre doi sau mai multi utilizatori

simultan.In majoritatea situatiilor,se vor prefera cele private,deoarece

sunt usor de realizat,sunt portabile,pot fi instalate in acelasi director

cu aplicatia,nu se preteaza la interactiuni cu structuri asemanatoare.

Cele partajate,se creaza mai dificil,cu instrumente specializate si

trebuie sa primeasca un cod criptografic unic,pentru a evita orice fel

de conflicte de identificator.In schimb,cele partajate pot fi utilizate

pentru a construi aplicatii noi,sau pot fi apelate din retea de la

locatii diferite.

-4-

O astfel de asamblare poate fi o fila unica,sau poate fi formata din



mai multe file,caz in care exista o fila centrala ce contine manifestul,

metadatele si link-urile spre restul filelor.

Cu alte cuvinte,platforma .Net reprezinta o noua etapa de dezvoltare

pentru relatia dintre aplicatie si resurse.Dupa cum anunta si numele,

suportul .Net este destinat mai ales pentru a crea aplicatii portabile,

de tip Web Forms sau pentru a facilita schimbul de date in retea,fie

cu ajutorul unor baze de date,fie cu alt tip de structuri de memorie.Dar

posibilitatile nu se rezuma la aplicatii de tip Web.Limbajul C# si

platforma .Net se pot combina pentru a obtine orice tip posibil de resursa

software.Initial a purtat numele de NGWS(Next Generation Windows Services)

pentru a sublinia faptul ca este vorba despre o tehnologie noua.Suportul

.Net are la baza urmatoarele standarde Internet: HTTP,XML,SOAP si UDDI.

Dintre trasaturile caracteristice limbajului C#,merita mentionat:

1. Nu exista functii sau variabile globale.Toate datele trebuie sa fie

declarate in interiorul unor clase.Membrii statici ai unei clase publice

pot substitui cu succes functiile si variabilele globale.

2. Tipul de data boolean este strict.Conditiile de tip while sau if vor

evalua strict date de tip boolean (True sau False),spre deosebire de

limbajul C++ unde sunt acceptate si valori de tip INT,ce pot fi convertite

la valori booleene (0 si 1).

3. C# nu lucreaza cu pointeri spre adrese de memorie,ci doar cu referinte

spre obiecte reale.Daca se utilizeaza pointeri,blocurile de cod vor fi

marcate ca nesigure (unsafe) si nu vor putea fi executate decat dupa ce

se solicita permisiunea utilizatorului.

4. Memoria nu poate fi eliberata explicit.Toate operatiile de eliberare

a memoriei se fac automat,prin "Garbage collection".

5. Pe linga try...catch,C# poate contine si bucle de tip try...finaly,

pentru a gestiona functiile de tratare a exceptiilor.

6. C# nu accepta mostenirea multipla,dar accepta oricate interfete.

7. Limbajul C# este foarte strict in ce priveste tipul de data.Nu se fac

nici un fel de conversii automate (cu exceptia extinderii tipului INT).

8. Limbajul C# unifica toate tipurile de data intr-un sistem comun denumit

CTS (Common Type System).Ca rezultat,toate tipurile de data,inclusiv cele

primitive (exemplu INT) sunt subclase ale clasei radacina: System.object.

Astfel mostenesc metodele clasei de baza (Exemplu: toate tipurile de data

vor avea si metoda: ToString()).

Dintre principalele facilitati noi,oferite de combinatia C# si .Net,

merita remarcate urmatoarele: independenta fata de platforma software,

interoperabilitatea cu alte limbaje,multi-threading,conectarea la serverul

SQL 2005,suportul pentru formate de 64 de biti,genericele,metodele anonime

si clasele partiale,iteratorii si delegatii (delegates).

Pentru a edita programele C#,exista doua solutii:

1.-editati codul cu orice editor de text,salvati fila cu extensia .cs si

apoi compilati fila cu utilitarul csc.exe,pentru a crea un executabil.

2.-utilizati una dintre versiunile de Visual C#.

Ambele metode au avantaje si dezavantaje.Prima metoda,se poate aplica

si in absenta unei conexiuni la Internet,ofera programe mici,simple si

robuste in care trebuie sa controlati fiecare linie de cod.Cea de a doua

metoda,este mult mai eleganta si comoda,permite construirea unor aplicatii

complexe si beneficiati de un numar foarte mare de instrumente automate.

-5-

COMPILATORUL C Sharp


Pentru a incepe sa invatati limbajul C# sunt necesare urmatoarele

etape:


1.Descarcati din reteaua Internet o versiune de platforma .Net,preferabil

3.5 sau mai noua si instalati suportul SDK in calculatorul d-voasta(daca

nu este deja instalat).

2.Optional,descarcati din reteaua Internet si documentele fundamentale

pentru standardul de limbaj: ECMA-334 si ECMA 335,eventual si ECMA TR/89.

3.Optional puteti descarca tutoriale,carti si articole de specialitate.

4.Daca doriti sa lucrati exclusiv intr-o platforma vizuala,descarcati si

instalati Visual C# 2008 (sau o versiune mai recenta).

Documentatia tehnica pentru platforma .Net nu se gaseste sub forma de

fila independenta si trebuie accesata in reteaua Internet (MSDN Library).

Dupa instalare,suportul (Framework) se va regasi in directorul:

C:\Windows\Microsoft.Net\Framework

cu un nume oarecare: v3.5 sau v3.0 sau v2.0.50727 etc.

Daca doriti sa simplificati accesul,redenumti directorul in v3 si

apoi copiati continutul direct pe unitatea C.In interiorul acestui

director se gaseste fila csc.exe in care este inclus compilatorul C#.

Pentru a va familiariza putin cu sistemul de lucru,puteti incepe sa

construiti primele module executabile.Codul sursa se poate edita cu

orice editor de text (de exemplu Notepad) si se salveaa in file cu

extensia .cs (practic se poate utiliza orice extensie,dar extensia cs

va fi inteleasa de orice alt programator).

EXEMPLU: deschideti Notepad si editati urmatorul cod:

using System

class WelcomeCSS

{

static void Main()



{

System.Diagnostics.Process.Start("notepad.exe");

}

}

Salvati fila cu numele StartNotepad.cs.



Pentru a compila fila intr-o asamblare (un executabil) deschideti din

Start utilitarul CommandPrompt si navigati la adresa la care este arhivat

directorul ce contine compilatorul.

Exemplu: CD C:\v3

apoi introduceti comanda de compilare:

csc.exe StartNotepad.cs

Daca nu exista si o versiune valida de Visual C# vor apare eventual niste

mesaje de avertizare de tip (warning CS1668).Puteti neglija aceste

mesaje (sau instalati si Visual C#).

In mod normal,in directorul curent a aparut un executabil Windows cu

numele "StartNotepad.exe".Puteti utiliza acest modul pentru a lansa

programul Notepad.In mod similar,puteti lansa in executie orice alt

program sau fila.De exemplu,daca doriti sa lansati direct ziarul preferat

nu trebuie de cat sa introduceti adresa corecta http:

EXEMPLU:

System.Diagnostics.Process.Start("http:\\gsp.ro\");

-6-

Un alt program minimal poate deschide si actualiza o fila de tip text.



Exemplu: -Salvati in directorul C o fila goala denumita test.txt,apoi

editati urmatorul cod:

using System;

using System.IO;

class WelcomeCSS {

static void Main() {

string lines = "Prima linie.\r\n A doua linie.\r\n Ultima linie.";

System.IO.StreamWriter file = new System.Io.StreamWriter("c:\\test.txt");

file.WriteLine(lines);

file.Close();

Console.WriteLine("Textul a fost editat in fila test.txt");

Console.ReadLine();

}

}

Salvati fila cu numele Test1.cs,apoi compilati cu o comanda:



csc.exe Test1.cs

Executati un dublu click pe executabilul Test1.exe si apoi verificati

daca textul a fost editat in fila de control (test.txt).

Observati ca structura programului este asemanatoare cu C++.

Bibliotecile se importa cu "using" in loc de "import".Intregul program

trebuie sa fie inclus intr-o clasa,iar fluxul de executie trebuie

controlat cu ajutorul unei functii principale,denumita functia Main().

Pentru a intelege mai bune functiile apelate,deschideti MSDN Library si

apoi explorati biblioteca System si respectiv System.IO.

Daca exista date si functii cu care lucrati frecvent,este comod si

practic sa arhivati aceste functii intr-o biblioteca DLL proprie,pe

care o puteti apoi apela din programe diferite.Pentru acest scop,trebuie

sa construiti o asamblare de tip arhiva (DLL) cu acces privat.

EXEMPLU: pentru o operatie de adunare,editati modulul:

using System;



Yüklə 1,48 Mb.

Dostları ilə paylaş:
  1   2   3   4   5   6   7   8   9   ...   14




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2022
rəhbərliyinə müraciət

    Ana səhifə