18.09.. Šta je radni okvir (.NET Framework) i organizacija sistemskih klasa i njihovih metoda
1. Uvod
Kada programiramo, često nam je potrebno da uradimo neke uobičajene stvari: da prikažemo tekst na ekranu, unesemo podatke sa tastature, radimo sa brojevima, izračunamo kvadratni koren, radimo sa datumom i vremenom ili obrađujemo datoteke.
Kada bismo za svaku od ovih stvari morali sami da napišemo sav potreban programski kod, razvoj programa bio bi mnogo složeniji.
Zato postoje razvojni okviri (framework) koji programerima pružaju veliki broj već napravljenih programskih komponenti.
Jedan od njih je .NET Framework.
2. Šta je .NET Framework?
.NET Framework je razvojni okvir kompanije Microsoft koji sadrži veliki broj gotovih programskih komponenti koje programeri mogu da koriste prilikom izrade aplikacija.
Možemo ga zamisliti kao veliku kutiju sa alatima.
Programer ne mora svaki alat da napravi sam. Ako mu je potreban određeni alat, može da pronađe odgovarajuću klasu i njenu metodu i da ih koristi u svom programu.
Na primer, za ispis teksta možemo koristiti:
Console.WriteLine("Zdravo!");
Metoda WriteLine() već postoji. Ne moramo sami da programiramo način na koji se tekst prikazuje na ekranu.
Dodatno objašnjenje – šta je framework
Reč framework možemo prevesti kao okvir.
U programiranju, framework predstavlja skup gotovih pravila, biblioteka, klasa i drugih komponenti koje olakšavaju razvoj aplikacija.
Možemo ga uporediti sa pravljenjem kuće. Ne pravimo sami cigle, prozore, vrata i šrafove, već koristimo već postojeće materijale i alate.
Slično tome, .NET Framework nam daje gotove programske komponente koje možemo koristiti u svojim programima.
3. Kako je organizovan .NET Framework?
.NET Framework sadrži veliki broj klasa. Da bi programer lakše pronašao ono što mu je potrebno, klase su organizovane u prostore imena (namespace).
Možemo napraviti jednostavno poređenje:
.NET Framework → Namespace → Class → Method
Odnosno:
.NET Framework → prostor imena → klasa → metoda
Ovo je jedna od najvažnijih stvari koju treba razumeti u ovoj lekciji.
4. Šta je namespace?
Namespace je prostor imena koji služi za organizovanje klasa.
Možemo ga posmatrati kao fasciklu u kojoj se nalaze povezane klase.
Na primer, osnovni namespace je:
System
U njemu se nalaze klase koje koristimo u mnogim programima, kao što su:
Console
Math
DateTime
Random
Dodatni primer organizacije namespace-ova
System ├── Console ├── Math ├── String ├── DateTime └── RandomNe treba učiti ove klase napamet. Važno je razumeti da namespace služi za organizovanje klasa.
5. Šta je klasa?
Klasa predstavlja opis ili model nekog objekta i sadrži njegove podatke i funkcionalnosti.
Za sada klasu možemo jednostavno posmatrati kao grupu povezanih podataka i funkcionalnosti.
Na primer:
Console
je klasa koja omogućava rad sa konzolom.
Druga klasa je:
Math
koja sadrži različite matematičke funkcionalnosti.
6. Šta je metoda?
Metoda je određena radnja koju možemo pozvati iz programa.
Jednostavno možemo zapamtiti:
klasa → metoda → radnja
Na primer:
Console.WriteLine("Zdravo!");
Ovde je:
Console → klasa
WriteLine() → metoda
Metoda WriteLine() izvršava radnju ispisa teksta.
7. Razumevanje izraza Console.WriteLine()
Pogledajmo pažljivo:
Console.WriteLine("Zdravo!");
Možemo ga rastaviti na:
Console → klasa
WriteLine() → metoda
Tačka . povezuje klasu i njen član.
Zato možemo reći:
„Pristupi klasi
Consolei pozovi njenu metoduWriteLine().“
Isti princip vidimo i kod:
Math.Sqrt(25)
Ovde je:
Math → klasa
Sqrt() → metoda
„Pristupi klasi
Mathi pozovi metoduSqrt().“
8. Klasa Console
Klasa Console koristi se za rad sa konzolom.
Najčešće metode koje ćemo koristiti su:
Console.Write()
Console.WriteLine()
Console.ReadLine()
Na primer:
Console.WriteLine("Zdravo!");
ispisuje tekst.
Za unos teksta koristimo:
string ime = Console.ReadLine();
Primer:
Console.Write("Unesite ime: ");
string ime = Console.ReadLine();
Console.WriteLine("Zdravo, " + ime);
Ako korisnik unese:
Petar
program prikazuje:
Zdravo, Petar
9. Klasa Math
Klasa Math sadrži matematičke funkcionalnosti.
Na primer, metoda:
Math.Sqrt(25)
računa kvadratni koren broja 25.
Primer:
double rezultat = Math.Sqrt(25);
Console.WriteLine(rezultat);
Rezultat je:
5
Za sada je dovoljno da razumemo princip:
Math → klasa
Sqrt() → metoda
Klasa
Mathsadrži veliki broj metoda. Na primer:Math.Pow(2, 3)računa stepen:
8Math.Abs(-15)daje apsolutnu vrednost:
15Math.Round(5.7)zaokružuje broj:
6Ove metode nećemo detaljno obrađivati na času. Važnije je razumeti kako pronalazimo i pozivamo metode neke klase.
10. Kako pronalazimo metode u Visual Studio-u?
Programer ne mora da pamti sve klase i njihove metode.
U razvojnom okruženju, kao što je Visual Studio, možemo koristiti pomoć koju pruža razvojno okruženje.
Ako napišemo:
Console.
Visual Studio može da prikaže listu članova klase, na primer:
Write()
WriteLine()
ReadLine()
ReadKey()
...
Na taj način možemo da istražujemo mogućnosti klase i pronađemo metodu koja nam je potrebna.
Cilj nije da zapamtimo sve metode.
Cilj je da naučimo da:
-
prepoznamo šta želimo da uradimo,
-
pronađemo odgovarajuću klasu,
-
pronađemo odgovarajuću metodu,
-
pravilno je pozovemo.
11. Kako čitamo naziv metode?
Nazivi metoda često ukazuju na njihovu namenu.
Na primer:
WriteLine() → ispisuje podatak
ReadLine() → čita podatak
Sqrt() → računa kvadratni koren
ReadAllText() → čita tekst iz datoteke WriteAllText() → upisuje tekst u datoteku Round() → zaokružuje broj Pow() → računa stepenOvi primeri služe samo za upoznavanje. Detaljniji rad sa njima dolazi kada budemo obrađivali odgovarajuće oblasti.
12. Šta znači using?
Na početku C# programa često možemo videti:
using System;
Ova naredba omogućava da koristimo klase iz namespace-a System bez pisanja njegovog punog imena.
Zato možemo napisati:
Console.WriteLine("Zdravo!");
umesto:
System.Console.WriteLine("Zdravo!");
Dodatni primer
Bez
using System;:class Program { static void Main() { System.Console.WriteLine("Zdravo!"); } }Sa
using System;:using System; class Program { static void Main() { Console.WriteLine("Zdravo!"); } }Oba načina su moguća.
13. Primer
Pogledajmo program koji koristi klasu Console i klasu Math:
using System;
class Program
{
static void Main()
{
Console.Write("Unesite broj: ");
double broj = double.Parse(Console.ReadLine());
double koren = Math.Sqrt(broj);
Console.WriteLine("Kvadratni koren je: " + koren);
}
}
U ovom programu koristimo:
System
↓
Console
├── Write()
└── ReadLine()
Math
└── Sqrt()
Najvažnije je da prepoznamo:
Console.Write() → klasa + metoda
Console.ReadLine() → klasa + metoda
Math.Sqrt() → klasa + metoda
14. Vežbe
Zadatak 1 - Napisati program koji ispisuje:
Moje ime je Marko.
Idem u treći razred srednje škole.
Učim C# programiranje.
Koristiti:
Console.WriteLine()
Zadatak 2 - Napisati program koji traži od korisnika da unese ime, a zatim ispisuje:
Zdravo, [ime]!
Koristiti:
Console.Write()
Console.ReadLine()
Console.WriteLine()
Zadatak 3 - Napisati program koji učitava broj i prikazuje njegov kvadratni koren.
Obavezno koristiti:
Math.Sqrt()
Dodatni zadaci za učenike koji završe ranije
Zadatak 4: Učitaj dva broja i prikaži njihov zbir, razliku, proizvod i količnik.
Zadatak 5: Učitaj poluprečnik kruga i izračunaj njegovu površinu koristeći
Math.PI.Zadatak 6: U programu pronađi pomoću IntelliSense-a još najmanje tri metode klase
Mathi napiši čemu služe.
15. Najvažnije što treba zapamtiti
.NET Framework nam daje veliki broj gotovih programskih komponenti koje možemo koristiti u svojim programima.
Klase su organizovane u namespace-ove, a klase sadrže različite metode.
Osnovna organizacija je:
.NET Framework → Namespace → Class → Method
Na primer:
System.Console.WriteLine("Zdravo!");
možemo rastaviti na:
System → namespace
Console → klasa
WriteLine() → metoda
Najvažniji cilj ove lekcije nije da zapamtimo veliki broj klasa i metoda.
Cilj je da razumemo organizaciju .NET-a i da naučimo da u razvojnom okruženju pronađemo klasu i metodu koja nam je potrebna.
Ne treba učiti kompletnu organizaciju .NET Framework-a napamet. Programeri koriste dokumentaciju i razvojno okruženje kako bi pronašli potrebne klase, metode i njihove parametre.
Pitanja za proveru znanja
-
Šta je .NET Framework?
-
Šta je namespace?
-
Šta je klasa?
-
Šta je metoda?
-
Kako su organizovani elementi .NET Framework-a?
-
Šta predstavlja
Consoleu izrazuConsole.WriteLine()? -
Šta predstavlja
WriteLine()? -
Čemu služi
Console.ReadLine()? -
Čemu služi
Math.Sqrt()? -
Čemu služi
using System;? -
Kako nam Visual Studio pomaže pri pronalaženju metoda?
-
Objasniti šta se dobija ako se koristi izraz:
System.Console.WriteLine("Zdravo!");