* The preview only shows a few pages of manuals at random. You can get the complete content by filling out the form below.
Description
Clase externe
Pentru a putea reutiliza variabilele, structurile de date si metodele din clase putem crea propriile biblioteci de clase. Aceste clase sunt clase externe. Clasele externe pot face codul mai vizibil, mai transparent pentru depanare, pe langa economia de timp datorat reutilizarii codului. Crearea claselor externe : Fie un proiect (simplu) care citeste 2 numere si afiseaza suma respectiv catul numerelor. Citirea valorilor se va face cu o metoda in clasa curenta iar cele doua operatii matematice vor fi scrise ca si metode ale unei clase externe. Incepem un proiect nou tip consola. In Main declaram cele 2 variabile a si b si apelam metoda pentru citirea valorilor lui a si b. Atentie ! Ca valorile citite de metoda sa se reflecte in variabilele declarate in main trebuie sa transmitem adresa (pointer) adica referinta. Acest lucrtu se realizaeaza in C# folosind directive ref.
citeste(ref a, ref b);
static void Main(string[] args) { int a=0, b=0;//variabilele trebuiesc initializate chiar daca le vom citi ulterios de la tastatura citeste(ref a, ref b); Console.ReadKey(); }
In continuare adaugam metoda pentru citirea valorilor public static void citeste(ref int x, ref int y)// si aici am folosit ref { Console.Write("Numarul a este "); x = int.Parse(Console.ReadLine()); Console.Write("Numarul b este "); y = int.Parse(Console.ReadLine()); }
Observati ca in C# metoda (functia) poate fi declarata/scrisa si dupa main. La parametrii metodei am folosit din nou directive ref
Urmeaza sa creem o clasa externa in care sa scriem cele 2 metode pentru adunare si impartire. Pentru acesta vom da click dreapta in dreapta ecranului pe fereastra Class View pe numele clasei noastre. Din meniul derulant vom selecta Add-Class.
In fereastra care se deschide alegem tipul de proiect/clasa (consola) si dam un nume clasei externe: Operatii. Dupa ce dam click pe optiunea Add->Class ,Visual Studio va crea scheletul clasei noi si vom putea edita codul aferent noii clase.
Codul adaugat va fi : namespace Externtest { class Operatii { public void aduna(int x, int y)//metoda aduna { Console.WriteLine("Suma este {0}",x+y); } public void imparte (int x, int y)//metoda imparte { if (y != 0)//verificam si acest aspect { Console.WriteLine("Catul este {0}", (float)x / (float)y); } else Console.WriteLine("Divizor cu zero, nu sepoate face impartirea"); }
} }
In continuare adaugam in programul principal liniile necesare declararii si instantierii clasei Operatii, respectiv apelam metodele definite in aceasta clasa. Partea main va arata astfel: static void Main(string[] args) { int a=0, b=0; Operatii operatii = new Operatii();//am folosit ca si nume obiect operatii cu o mic. Se putea folosi orice nume sugestiv pentru instanta clasei citeste(ref a, ref b); operatii.aduna(a, b);// scrierea deja clasica obiect.metoda operatii.imparte(a, b); Console.ReadKey(); }
Importul unei clase deja scrise in alt proiect O clasa deja scrisa se poate importa si in alte proiecte Vom scrie o alta aplicatie care sa foloseasca metodele clasei recent definite. Inainte insa de a salva clasa Operatii editam un pic clasa si anume stergem namespace Externtest si accoladele corespunzatoare. Salvam proiectul initial (e bine sa tinem minte calea proiectului). Pornim un proiect nou . Codul initial va fi asta static void Main(string[] args) { int a = 10, b = 8; Console.ReadKey(); }
Adica pur si simplu declaram si initailizam 2 variabile pe care le vom servi ca si parametrii metodelor din clasa externa. Importul clasei externe: In meniul Project se selecteaza Add existing item
In fereastra de navigare care se deschide localizam fisierul .cs anterior creat (Operatii.cs) si adaugam proiectului.
In acest moment metodele clasei Operatii sunt vizibile si din proiectul current. Astfel, Dupa instantierea clasei Operatii putem scrie codul pentru apelul metodelor. static void Main(string[] args) { int a = 10, b = 8; Operatii instanta = new Operatii();//instanta este obiectul de tip Operatii instanta.aduna(a, b);//apelul metodei aduna instanta.imparte(a, b); Console.ReadKey(); }
Pentru un access mai facil la clasele prorii se recomanda sa salvam intr-un folder dedicat clasele noastre pe care le vom utiliza in proiectele viitoare. Exercitiu. Scrieti un program de calculator care solicita introducerea unui numar intreg. Acest numar este transmis spre prelucrare urmatoarelor clase externe: 1 numar prim / neprim va determina daca numarul este prim sau nu, se va afisa un mesaj corespunzator 2 numar par impar va determina daca numarul este par sau impar, se va afisa un mesaj corespunzator 3 divizori, va afisa toti divizorii numarului (ex 27 are divizorii 1,3,9) 4 numar patratic (este patratul unui numar adica se poate extrage radical exact din numar) ex 9 este patratul lui 3. Se va afisa un mesaj Numarul x este patratul lui y sau Numarul x nu este patratic Creati cate o clasa externa pentru fiecare prelucrare!!!