Vežba 2: Klase i objekti - Pisanje prvog programa
C# je jednostavan objektno-orijentisan programski jezik opšte namene. Razvio ga je Microsoft tim koji je vodio Andres Hejlsberg.
C# je naprednija verzija C++ jezika. Fajlovi pisani u ovom jeziku imaju ekstenziju .cs
The .Net Framework
.Net Framework (čita se "dot net frejmvork") je platforma koja se se može koristiti pri pisanju Windows aplikacija, web aplikacija i web servisa. Aplikacije koje se prave su multiplatformske. Mogu se koristiti bilo koji od sledećih jezika: C#, C++, Visual Basic, Jscript, COBOL, a sem što svaki od tih jezika može da pristupa Framework-u, mogu i da međusobno komuniciraju.
.NET Framework nije operativni sistem. On je jedan sloj između Windows-a i vaše aplikacije. Kad vi napravite program, on koristi određenu verziju .NET Framework-a; i da bi vaš program radio na nekom drugom računaru, taj drugi računar mora da ima takođe istu verziju instaliranu kako bi vaša aplikacija radila.
Za razliku na primer od C programskog jezika, vaš kod se ne prevodi odmah u mašinski kod već CLR - Common Language Runtime vaš program prevodi u CIL - Common Intermediate Language koga formalno zovemo MSIL - Microsoft Intermediate Language ili, kako se često naziva samo IL - Intermediate Language. To je zapravo Microsoft-ov posrednički jezik niskog nivoa. JIT - Just-in-time compilation zatim prevodi IL - Intermediate Language u prirodni binarni kod.
.NET Framework se sastoji od ogromne biblioteke koda koji možemo da koristimo (u našem slučaju u C#-u).
Šta možemo da koristimo za pisanje programa u C#-u:
Možemo na primer, da koristimo integrisana razvojna okruženja (Integrated Development Environment - IDE) :
-
Visual Studio (VS) - nije besplatan, ali postoji besplatna alternativa:
-
Visual Studio Comunity - besplatmo se može preuzeti sa Microsoft-ovog websajta.
Mogu se koristiti jednostavni alati - tekst editori, kao što je Notepad, i da se kod kompajlira uz korišćenje kompajlera u komandnoj liniji, koji je takođe deo .NET Framework-a.
Mi ćemo koristiti Microsoft-ov alat Visual Studio Code, koji može da se takođe besplatno preuzme, ( https://www.microsoft.com/net/download/core ). U pitanju je editor, a ne kompleksno okruženje, koji ne zahteva previše resursa, i ima verzije za više operativnih sistema.
Iako je .NET Framework predviđen za Windows, postoji i alternativa - Mono: open-source verzija .NET Framework-a koja može da radi na više različitih operativnih sistema (Linux, Android, iOS, Solaris, UNIX, Windows ...). Možete pogledati na Go Mono.
Kako izgleda C# program:
C# program se sastoji od sledećh delova −
-
Namespace deklaracija
-
Klasa ( class )
-
Metode u klasi ( Class methods )
-
Atributi klase ( Class attributes )
-
Glavna metoda - Main
-
Izrazi i naredbe ( Statements and Expressions )
-
Komentari ( Comments )
Primer koda je u nastavku ( Hello world primer) :
using System;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
/* moj prvi program u C# */
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}Kada se ovaj kod kompajlira i izvrši, dobija se sledeći rezultat :
Hello World
Možete to pogledati i online : ( Live Demo )
Delovi programa su redom:
-
Prvi red: using System; - ključna reč using se koristi dase u program uključi prostor imena System. U programu se obično nalazi više linija koje počinju sa using.
-
Drugi red: deklaracija prostora imena - namespace. Svaki prostor imena (namespace) je skup klasa. U našem primeru, prostor imena HelloWorldApplication sadrži u sebi klasu HelloWorld.
-
Treći red: deklaracija klase ( class ), Klasa HelloWorld u sebi sadrži definicije podataka i metoda (funkcija) koje naš program koristi. Klase u sebi obično imaju više metoda. Metode su ono što opisuje ponašanje klase. U našem slučaju, klasa HelloWorld ima samo jednu metodu - Main.
-
Četvrti red: definiše se metoda Main, od koje naš program počinje ( entry point ). Ovaj metod počinje sa static, što znači da je statički i void - ne vraća vrednost. static - metoda koja je dostupna iz samog tipa, a ne iz pojedinačnih instanci klase (objekata). To znači da i ako imamo gomilu objekata neke klase, ako je negde nešto označeno sa static, onda je to samo jedno za sve - Samo je jedna metoda Main ! U zagradama to što piše značu da možemo imati niz argumenata, prvi kaže koliko ih je, a onda ide niz argumenata (a može da nema nijedan)
-
Sledeći red: /*...*/ se ignoriše od strane kompajlera - to je komentar.
-
Metoda Main radi sledeće: Console.WriteLine("Hello World");
WriteLine je metoda u klasi Console koja se nalazi u prostoru imena System. Na ekranu ćemo da dobijemo poruku "Hello, World!" .
-
Ako se koristi Visual Studio Comunity ili neki od IDE alata, postoji velika verovatnoća da je potreban poslednji red: Console.ReadKey(); To će dovesti do toga da program stane i sačeka da se pritisne bilo koje dugme, a ne da se samo izvrši i zatvori.
NAPOMENA:
-
C# je case sensitive - Razlikuju se velika i mala slova. npr. ne možete napisati main(). To nije isto kao Main().
-
Sve naredbe moraju da se završe sa tačka-zarezom (;).
-
Izvršavanje programa počinje sa metodom Main.
-
Ime fajla i ime klase u njemu ne moraju da budu isti - ali je poželjno bar na početku da tako radimo rado bolje jasnoće.
Znači, u našem malom programu imamo 3 bloka koda koji su ograđeni vitičastim zagradama { }. Prvi blok predstavlja samo imenski prostor čiji se naziv može menjati. Drugi blog predstavlja klasu, znači vaš program je u suštini klasa i u njoj se nalazi funkcija. Funkcije u C# programskom jeziku uvek zovemo metoda. Naziv metode Main() ne možemo menjati, ali njene atribute u ovom programu možemo totalno i izbrisati jer za izvršenje ovakvog prostog koda vam ne trebaju nikakvi ulazni argumenti.
Kompajliranje i izvršavanje našeg programa
Ako koristite Visual Studio Code za kompajliranje i izvršavanje C# programa:
-
Pokrenite Visual Studio Code.
-
Proverite na Help -> Welcome , u delu Customize -> Tools and languages, da li je instalirana ekstenzija za C#
-
File -> Open Folder - i kliknite na folder u kojem će da bude vaš projekat. Klik na Select Folder. Vaš projekat se čuva u posebnom folder-u, jer ćemo imati više fajlova u projektu. Preporuka je: svaka klasa u posebnom fajlu.
-
Otvorite terminal sa View -> Terminal ( u starijim verzijama je View -> Integrated terminal)
-
Da kreirate prvi konzolni projekat, kucajte
dotnet new console -
Ovim će se kreirati projekat, sa C# kodom u fajlu Program.cs i u njemu Hello Word primer.
-
Za pokretanje se koristi naredba
dotnet run
Kreiranje nove klase:
-
Da bi kreirali novu klasu, desni klik u Exploreru (tamo gde vidite Program.cs) kreirate novi fajl kojem ćete dati ime kao klasa koja vam treba i ekstenziju za C# (.cs) u istom folderu.
-
Vodite računa da u novoj klasi koristite isti namespace da biste u metodi Main (u Program.cs) mogli da kreirate objekte od vaše klase
-
U metodi Main napravite bar jedan objekat od vaše nove klase, pomoću ključne rečinew. -
Obavezno prvo treba da sačuvate promene koje ste napravili, a tek onda ponovo da pokrenete izvršavanje vašeg koda.
C# je objektno-orijentisan jezik. Program se sastoji od više različitih objekata koji deluju jedan na drugi pomoću nekih akcija. Akcije koje objekti mogu da vrše nazivamo metode. Za objekte iste vrste kažemo da su istog tipa, ili da pripadaju istoj klasi.
Primer br.2 sa časa vežbi:
Kreirati objekat klase Tacka, koji predstavlja tačku u Dekartovom koordinatnom početku. U glavnom programu napraviti dva objekta date klase: T1 i T2. Da bude malo zanimljivije, upotrebićemo dva konstruktora u klasi Tacka: jedan koji je bez parametara, sa kojim se kreira tačka u koordinatnom početku (0,0), a drugi konstruktor sa dva parametra, pomoću kojih se zadaju x- i y-koordinate. U klasi tačka napravićemo samo jednu metodu Prikaz() sa kojom se prikazuju koordinate tačke.
using System;
namespace Zadatak1
{
class Tacka
{
private double x;
private double y;
public Tacka()
{
x = 0;
y = 0;
}
public Tacka(double a, double b)
{
x = a;
y = b;
}
public void Prikaz()
{
Console.WriteLine("Koordinate tacke su " + x + " , " + y);
}
}
}
U glavnoj metodi Main pravimo dva objekta:
using System;
namespace Zadatak1
{
class Program
{
static void Main()
{
Tacka T1 = new Tacka();
Tacka T2 = new Tacka(3,5);
T1.Prikaz();
T2.Prikaz();
}
}
}
Šta se dobije na ekranu kada se izvrši prethodni kod?