30 0 114KB
MINISTERUL EDUCAŢIEI CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA UNIVERSITATEA TEHNICĂ A MOLDOVEI FACULTATEA CALCULATOARE, INFORMATICĂ ŞI MICROELECTRONICĂ DEPARTAMENTUL MICROELECTRONICĂ ȘI INGINERIE BIOMEDICALĂ
Raport Lucrarea de laborator nr. 1 La Disciplina “Programarea avansată”
A efectuat: Popovici Anastasia mrd. gr MN-000M A verificat: Kulev Mihail dr., conf. univ.
CHIŞINĂU 20__ Lucrarea de laborator nr. 1 Tema: Clase și obiecte. Constructorii și destructorul clasei Sarcina: Elaborarea unui program care determină pentru o clasă listă simplu lănţuită cu următoarele funcţii: – member(x,L) care determină apartenenţa elementului x listei L; – equal(L1,L2) care determină echivalenţa a două liste L1 şi L2; – print(L) care tipăreşte toate elementele listei L; – readlist(L,fin) care citeşte elementele din fişierul fin în lista L.
Partea teoretică și explicativă: La elaborarea lucrării de laborator respective au fost utilizate clasele, şi respectiv constructori, destructor, funcţii membre. O clasă este compusă din două părţi: declaraţia şi implementarea ei. Declaraţia clasei prezintă membrii clasei. Membrii clasei sînt variabile de instanţiere şi funcţii membri indicate prin prototipul lor (tipul returnat, numele funcţiei, lista de parametri). Implementarea funcţiilor membri are loc prin implementarea clasei [1]. Gradul de accesibilitate la elementele componente ale clasei este indicat prin cuvintele: private sau protected – elementele clasei sînt accesate numai prin intermediul funcţiilor membri sau prietene friend, public – toate elementele sînt disponibile în exteriorul clasei. Constructorii sunt functii apelate de compilator la crearea obiectelor, la alocarea de memorie, initializare si copiere de obiecte, în timp ce destructorii sunt apelati de compilator la iesirea din domeniul variabilei pentru eliberarea memoriei alocate. Constructorii poarta numele clasei careia ii apartin. Daca o clasa nu are nici un constructor declarat de programator, compilatorul genereaza implicit unul, care va fi public, fara parametri, cu lista de instructiuni vida. Destructorii poarta numele clasei, precedat de caracterul ~. Apelarea destructorilor are loc la incheierea timpului de viata, la distrugerea unui obiect alocat dinamic, la apelarea directa, prin specificarea numelui sau, prefixat de numele clasei [2]. Funcţiile membru primesc in mod implicit adresa obiectului pentru care este apelata. Exista posibilitatea ca anumite functii, care nu apartin unei clase sa poata accesa datele private ale acesteia, caz in care functiile respective se numesc “functii prietene”. Pentru a atasa unei clase o functie prieten introducem in interiorul definitiei sale prototipul functiei prieten, precedat de cuvantul cheie friend. O functie prieten nu poate accesa datele direct, asa cum poate o metoda a clasei respective, ci prin intermediul parametrului de tip obiect transmis [3]. Listingul programului: #include #include #include usig namespace std; class Element
{ ..... } Testarea și verificarea programului și rezultatele obtinute: 1. Meniul principal:
2. Adaugarea elementelor în listă:
3. Afişarea listelor:
4. Compararea listelor:
5. Identificarea dacă elementul aparţine listei:
6. Citirea elementelor din fişier în listă:
Analiza rezultatelor si concluzii: Realizând această lucrare de laborator ne-am creat obişnuinţe de lucru cu clasele: implementarea claselor, accesarea membrilor clasei care pot fi privaţi (accesati doar de catre functiile clasei) sau publici (folositi oriunde in program). Am înţeles principiile de creare şi distrugere a obiectelor, prin intermediul constructorilor şi destructorilor, de utilizare a funcţiilor membre care primesc in mod implicit adresa obiectului pentru care este apelata şi de utilizare a funcţiilor prietene care nu sunt membre ale clasei, dar au acces la membrii privati ai acesteia. Am utilizat clase prietene prin intermediul cărora funcţiile membre ale unei clase sunt prietene cu o altă clasă, realizând astfel interacţiunea între mai multe clase. Bibliografie: 1. 2. 3.