VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase, kao i modifikatora pristupa atributima klase. Prvi deo: U prvom delu vežbe potrebno je definisati klasu Tacka, koja sadrzi koordinate date tačke x i y tipa private double, podrazumevani konstruktor, konstruktor koji postavlja vrednosti koordinata preko argumenata, kao i svojstva za pristup i definisanje koordinata tacke (set i get). U glavnom programu formirati dve tačke i odštampati njihove koordinate. Nakon startovanja MS Visual Studia 2008, potrebno je otvoriti novi projekat tipa konzolna aplikacija pod imenom Vezba5, na način koj je detaljno opisan u vežbi 1. Nakon toga potrebno je dodati u projekat klasu Tacka, izborom opcije Add Class iz Project menija, kao na slici 1. Nakon toga otvara se dialog prozor u kome je potrebno specificirati tip stavke koja se dodaje (Class), kao i njen naziv (Tacka), slika 2. Project menu->add Class Slika 1. Dodavanje nove klase u projekat
Izbor tipa stavke, Class Definisanje naziva klase Slika 2. Definisanje tipa stavke i naziva klase Nakon toga otvara se tab (Tacka.cs) u kome se vrši definicija klase, dok se pored njega nalazi tab (Program.cs) u kome se definiše glavni program, slika 3. Ovde se definiše glavni program Ovde se vrši definicija klase Slika 3. Definicija klase i glavnog programa
namespace Vezba5 class Tacka private double x; private double y; Izvorni kod kojim se definiše klasa Tacka public Tacka() x = 0; y = 0; public Tacka(int a, int b) x = a; y = b; public double X get return x; set x = X; public double Y get return y; set y = Y; namespace Vezba5 class Program static void Main(string[] args) Tacka T1 = new Tacka(); Tacka T2 = new Tacka(5, 5); Izvorni kod glavnog programa Console.WriteLine("Koordinate tacke T1 su [" + T1.X + "," + T1.Y + "]"); Console.WriteLine("Koordinate tacke T2 su [" + T2.X + "," + T2.Y + "]");
Napisati sadržaj ekrana po izvršenju programa: Kako je omoguden pristup koordinatama tačke iz glavnog programa? Kako vrsimo preklapanje konstruktora i čemu preklapanje konstruktora služi? Zašto je uveden koncept modifikatora pristupa u objektno orjentisano programiranje? Koje objekte formiramo u glavnom programu i u kojim linijama koda?
Drugi deo: Definisati klasu Tacka, koja sadrzi koordinate date tačke x i y tipa private double, podrazumevani konstruktor, konstruktor koji postavlja vrednosti koordinata preko argumenata, kao i svojstva za pristup i definisanje koordinata tacke (set i get), kao i metodu Distanca, koja izračunava razdaljinu date tačke u odnosu na druge zadate tačke. U glavnom programu formirati dve tačke, odštampati njihove koordinate i izračunati i odštampati rastojanje između njih. namespace Vezba5 class Tacka private double x; private double y; public Tacka() x = 0; y = 0; public Tacka(int a, int b) x = a; y = b; public double X get return x; set x = X; public double Y get return y; set y = Y; public double Distanca(Tacka T2) double dis = Math.Sqrt(Math.Pow((this.x + T2.x), 2) + Math.Pow((this.y + T2.y), 2)); return dis;
namespace Vezba5 class Program static void Main(string[] args) Tacka T1 = new Tacka(); Tacka T2 = new Tacka(5, 5); Console.WriteLine("Koordinate tacke T1 su [" + T1.X + "," + T1.Y + "]"); Console.WriteLine("Koordinate tacke T2 su [" + T2.X + "," + T2.Y + "]"); double distanca = T1.Distanca(T2); Console.WriteLine("Razdaljina izmedju T1 i T2 je " + distanca); Napisati sadržaj ekrana po izvršenju programa: Koje metode sadrži klasa Tačka? Koje matematičke funkcije obavljaju metode Math.Sqrt i Math.Pow?
Na šta se donose vrednosti this.x i this.y u funkciji public double Distanca(Tacka T2)? U čemu je razlika između modifikatora pristupa: public, protected internal, protected, internal i private? Treci deo: Deklarisati klasu Student sa dva privatna atributa: godina tipa int i ime tipa string. Obezbediti mogudmost formiranja studenata sa zadatim atributima ili sa podrazumevanim atributima. Obezbediti mogudnost pristupa do ovih atributa preko funkcija VratiGodinu( ) i VratiIme( ). U glavnom programu formirati niz koji se sastoji od dva objekta tipa student (Milos, 3. Godina i Zoran, 1. godina), a zatim štampati sva imena studenata i godine studija. namespace Vezba6 class Student private int godina; private string ime; public Student() godina = 0; ime = null; public Student(int God, string Ime) godina = God; ime = Ime; public int VratiGodinu() return this.godina; public string VratiIme() return this.ime;
namespace Vezba6 class Program static void Main(string[] args) Student[] A = new Student[] new Student(3, "Milos"), new Student(1, "Zoran") ; for (int i = 0; i < A.Length; i++) Console.WriteLine("Godina " + A[i].VratiGodinu() + " Ime " + A[i].VratiIme()); Zašto su neophodne metode VratiIme( ) i VratiGodinu( )? Šta se sve dešava prilikom izvršenja: Student[] A = new Student[] new Student(3, "Milos"), new Student(1, "Zoran") ; Četvrti deo: Formirati klasu Krug, koja definiše kružnicu u ravni preko zadatog poluprečnika. Obezbediti mogudnost formiranja kružnica sa zadatim poluprečnikom ili sa podrazumevanim poluprečnikom, svojstva za pristup i postavljanje poluprečnika i metodu koja određuje površinu kružnice. Testirati klasu Krug zadavanjem niza krugova od n elemenata i određivanjem koji od njih ima najvedu površinu.
Izvorni kod programa: Peti deo: Formirati klasu Таčka koja predstavlja tačku u prostoru zadatu preko x, y i z koordinata. Obezbediti mogudnost formiranja tačaka sa zadatim koordinatama ili sa podrazumevanim koordinatama (0,0,0) pomodu konstruktora. Obezbediti svojstva koja: postavljaju koordinate tačke na zadatu vrednost i pristupaju koordinatama zadate tačke. Obezbediti metodu koja izračunava rastojanje između dve tačke. Testirati klasu Tačka zadavanjem tri proizvoljne tačke u prostoru i izračunavanjem rastojanja između one dve koje su najbliže koordinatnom početku. Izvorni kod programa: U Nišu POTVRĐUJE