Jezik C#

12/07/2009 11:02

Uvod u .NET Framework

     .NET (čitaj: dot net) je naziv za najnoviju Microsoftovu viziju budućnosti računrstva u kojoj se aplikacije izvršavaju distribuirano putem Interneta. Da bi to ostvarili, bilo je potrebno ispuniti neke uvjete.

    Kao prvo, distribuirano računarstvo je konceptualno poput objektno orijentiranog programiranja, što se najbolje vidi u sposobnosti da programski kod za određenu operaciju smještava u jedan blok, umjesto da ga se prepisuje gdje god je to potrebno. Upravo prelazak na distribuirani model donio je toliko potrebnu efikasnost u razvoju aplikacija.

    Drugo, smještanjem specijaliziranog koda na jedno mjesto i otvaranjem javno dostupnog sučelja, različiti su uređaji (telefoni, dlanovnici, stolna računara itd.) podržani istim programskim kodom. Odavde vuče korijene Microsoftova «pokreći svagdje» filozofija.

    I kao treće, kontrolom pristupa u realnom vremenu distribuiranim resursima, tvrtke(kompanije) poput Microsofta dobivaju mogućnost bolje kontrole izvršavanja aplikacija. Na taj način aplikacije prelaze iz razmišljanja «posjedujem objekt» u razmišljanje «podržavam servis». Zanimljivo je da je Microsoft prelaskom na .NET odustao od strogog patentiranja svojeg vlasništva (sve tehnologije koje zahvati nastoji prilagoditi Windows operativnom sistemu). Kako budućnost vidi u pružanju softverskih servisa putem distribuiranih aplikacija, .NET Framework je napravljen tako da aplikacije na drugim platformama mogu pristupiti tim servisima. Na primjer, .NET je izgrađen na standardiziranim tehnologijama poput XML-a i SOAP-a.

    U aspektu razvoja aplikacija, .NET se oslanja na .NET Framework. .NET Framework se sastoji od Common Language Runtime, .NET Framework standardne biblioteke klasa i specijaliziranih klasa poput onih koje podržavaju ASP.NET (sljedeća generacija ASP serverske tehnologije) te Windows Forms (za razvoj klasičnih desktop aplikacija).

Common Language Runtime (CLR) upravlja izvršavanjem koda kompiliranog za .NET platformu. CLR ima dvije zanimljive mogućnosti. Prva je ta da mu je specifikacija otvorena što omogućuje portiranje na newindows operativne sustave. Drugo, za pisanje aplikacija koje koriste standardne klase može se koristiti bilo koji programski jezik kojeg podržava CLR.

Jedan od jezika koji se savršeno uklapa u .NET Framework jest C#. Taj novi jezik, nasljednik C++, objavljen je zajedno s .NET Frameworkom, te je zato logično da bude primarni programski jezik za pisanje .NET aplikacija.

Usporedba s C++ i Javom

     U ovom ćemo se poglavlju osvrnuti na razlike između C# i njegova dva najbliža rođaka (C++ i Java). Ponegdje u tekstu navedene su reference na web sjedišta koja dublje obrađuju određenu problematiku te je vrlo korisno posjetiti ih.

[b]C# vs. Java[/b]

C# i Java su jezici najnovije generacije čiji su izravni prethodnici C++ i C. Svaki od njih sadrži napredna svojstva poput Garbage Collection (skupljanje smeća) čime se smanjuje potreba za intervencijama izravno u programskom kodu. Navedeni jezici su sintaktički gotovo isti.

     C# i Java izvorne datoteke kompiliraju se u prijelazni jezik: C# u Microsoft Intermediate Language (MSIL), a Java u Java bytecode. U svakom od ovih slučajeva prijelazni jezik se može izvoditi; bilo interpreterom, bilo just-in-time kompilacijom na odgovarajućem virtualnom stroju. Valja naglasiti da je u C# dodatna pozornost posvećena kompilaciji prijelaznog jezika u binarni kod.

     C# podržava primitivnije tipove podataka od onih u Javi , a omogućuje i stvaranje vlastitih tipova podataka. Na primjer, C# podržava pobrojenja (enumerations), tipski sigurni vrijednosni tipovi podataka koji mogu sadržavati samo konstante, te strukture koje su korisnički definirani tipovi podataka. (Java ne podržava pobrojenja ali ih može simulirati).

    Za razliku od Jave, C# ima mogućnost preopterećivanja različitih operatora. Poput Jave, C# ne koristi nasljeđivanje više klasa u korist nasljeđivanja jedne klase što je prošireno nasljeđivanjem više sučelja. Polimorfizam je podržan pomoću nasljeđenih metoda te preopterećenja ili skrivanja metoda bazne klase. C# koristi delegate. To su tipski sigurni pokazivači na metode, a osnovna ima je namjena implementacija upravljanja događajima.

    U Javi su višedimenzionalna polja implementirana preko jednodimenzionalnih (polja mogu biti članovi drugih polja). C# pak podržava i takva (zupčasta), ali i pravokutna polja.

[b]C# vs. C++[/b]

Iako posjeduje neke elemente nasljeđene od Visual Basica i Jave, najbliži rođak C#-a je C++.

    Najvažnija razlika između ta dva jezika je to što C# ne sadrži poziv datoteke zaglavlja, što znači da je sav kod «umetnut» u datoteku.

   Kao što smo već spomenuli, .NET izvršni sustav(sistem) u kojem se izvodi C# kod upravlja memorijom te preuzima brigu o zadaćama poput skupljanja smeća (Garbage Collection). Zbog toga je potreba za pokazivačima u C#-u puno manja nego u C++. Pokazivači se mogu doduše koristiti i u C#-u, ali samo u pisanju nesigurnog koda. Preporučuju se ondje gdje su karakteristike performansi od krucijalne važnosti.

    Razumijevanje tipova podataka u C# je znatno kompleksnije od razumijevanja C++ tipova podataka. Svi tipovi podataka u C#-u izvedeni su iz 'object' tipa. Također postoje i razlike u načinu kako se određeni tipovi podataka mogu koristiti. Polja u C#-u su limitirana te stoga nije moguće dodavati elemente nakon što je polje popunjeno.

    C# naredbe vrlo su slične C++ naredbama. Spomenut ću samo jednu razliku: naredba switch je promijenjena tako da je zabranjeno nastavljanje slučaja.

Kao što je već spomenuto, C# ne koristi nasljeđivanje više klasa. Ostale razlike kod upotreba klasa su: dodana je podrška svojstvima klasa što je preuzeto iz Visual Basica, a metode se pozivaju pomoću operatora . (tačka) umjesto operatora :: (dvije dvotačke).

 

Prvi C# program

    Da bi programirali u C#-u i koristili .NET Framework klase morate na računar instalirati .NET Framework SDK ili Visual Studio .NET.

Kroz ovo poglavlje upoznat ću vas sa strukturom najjednostavnijeg C# programa, što će biti popraćeno linkovima na detaljnija objašnjenja pojedinih dijelova.

Prvi C# program: 'Hello World'

Počnimo na najprirodniji način, proučavanjem koda Hello World programa.

using System;

 

public class HelloWorld 

{

 

  public static void Main() 

  {

     // ovaj je komentar kroz jednu liniju 

 

     /* ovo je komentar 

    kroz 

    više linija */ 

 

    Console.WriteLine ("Hello World");

  }

}

    Prva stvar koja se uočava jest da C# pravi razliku između velikih i malih slova. To znači da će kompajler prijaviti pogrešku ako umjesto 'Console' napišete 'console'. Druga stvar je da svaka linija završava znakom tačka zarez (;) ili vitičstim zagradama koje označavaju početak i kraj bloka naredbi.

     C# je objektno orijenti'System.Console'ran jezik, što znači da C# programi moraju biti smješteni u klase Linija 2 deklarira klasu pod imenom HelloWorld.

     Linija 1 nam govori da program koristi 'System' imenički prostor. Svrha te deklaracije je da uštedi vrijeme potrebno za tipkanje. Objekt 'Console' koji je korišten u liniji 10 zapravo pripada 'System' imeničkom prostoru te mu puno ime glasi. U kodu možemo izostaviti dio 'System' zato što u liniji 1 deklariramo da program koristi 'System' imenički prostor. Prilikom pokretanja, program će izvoditi metodu Main deklariranu u liniji 4. Uočimo da ime metode nije 'main' nego 'Main'.

    Linije od 6 do 9 su ignorirane od strane kompajlera, zato jer sadrže komentare programskog koda. Linija 6 predstavlja jednolinijski komentar, u kojem se do kraja linije ignorira sve što piše nakon dvije kose crtice. Linije 7-9 predstavljaju višelinijski komentar. Njime se ignorira sve što je između početnog i završnog znaka. Naredba u liniji 10 poziva metodu 'WriteLine' klase 'Console' u 'System' imeničkom prostoru. Jasno je što ona radi – ispisuje određeni string na konzolu. ( u Windowsima je to DOS Prompt).

     Da bi program mogli pokrenuti, najprije ga moramo spremiti u datoteku. Za razliku od Jave, ime klase i ime datoteke u koju spremamo program ne moraju biti iste. Ime ekstenzije datoteke može biti po volji, premda je najprirodnije da koristite ekstenziju '.cs'.

Pretpostavimo da smo datoteku spremili kao 'HelloWorld.cs'. Da bi program kompilirali iz komandne linije, trebamo upisati naredbu :

csc HelloWorld.cs

(za korisnike Visual Studija .NET: kompajlirate pritiskom tipki Ctrl+Shift+B)

ta naredba generira izvršnu datoteku HelloWorld.exe, koja se pokreće upisivanjem HelloWorld.

(za korisnike Visual Studija .NET: pokrenite program pritiskom na Ctrl+F5)

Ako je sve u redu program će na ekranu ispisati: Hello World!