TLG Andrei26 Posted November 17, 2017 Share Posted November 17, 2017 - Clasa este entitatea de baza a unui limbaj orientat pe obiecte. In Java este obligatorie definirea a cel putin unei clase. Nu este insa obligatorie crearea unei instante (unui obiect) a aceleasi clase, caz in care se vor utiliza date si metode statice. - O declaratie de clasa in limbajul Java are urmatoarea sintaxa generala: [<ModificatoriClasa>] class <Identificator> [<ListaTipuriReferinta] [extends <NumeClasa>] [implements <ListaInterfete>]{ [<DeclaratiiCorpClasa>] } Unde: <ModificatoriClasa> pot fi: public, abstract, final (cel mult o aparitie si, de preferat, in aceasta ordine); <Identificator> reprezinta numele clasei; <ListaTipuriReferinta> este o lista de tipuri de referinta, numita si tipuri generice, de forma: <TipReferinta1>, <TipReferinta2>, ..., <TipReferintaN> si este cuprinsa intre simbolurile "<" si ">"; <NumeClasa> reprezinta numele altei clase (denumita CLASA DE BAZA sau SUPERCLASA); <ListaInterfete> este o lista de nume de interfete de forma: <NumeInterfata1> , <NumeInterfata2>, ... , <NumeInterfataN>; <DeclaratiiCorpClasa> este o lista de declaratii de forma: <DeclaratiiMembruClasa>, care, la randul ei poate fi <DeclaratieAtribut> sau <DeclaratieMembru>; <InitializatorStatic>; <DeclaratiiConstructor>; - Daca o clasa este declarata intr-un pachet numit Pachet, atunci numele complet al clasei este Pachet.<Identificator> Exemplu pentru crearea si importarea pachetelor, consideram doua fisiere-sursa: 1. package pachet.exemplu; public class ClasaUnu{ public ClasaUnu(){ System.out.println("Suntem in ClasaUnu"); } } 2. package pachet.exemplu; public class ClasaDoi{ public ClasaDoi(){ System.out.println("Suntem in ClasaDoi"); } } Dupa compilarea acestor fisiere-sursa, vom crea un alt fisier-sursa care va importa clasele definite in pachetul pachet.exemplu. Acesta poate fi plasat oriunde in sistemul de fisiere. Continutul fisierului este: import pachet.exemplu.*; public class TestPachet{ public static void main(String[] args){ ClasaUnu cu = new ClasaUnu(); ClasaDoi cad = new ClasaDoi(); } } La executie se vor putea accesa clasele definite in pachetul pachet.exemplu si rezultatul va fi: Suntem in ClasaUnu Suntem in ClasaDoi - Un constructor al unei clase este o metoda care are numele respectivei clase. Constructorii nu returneaza nimic si nu au tip (nici maca void). Constructorii sunt apelati automat in momentul crearii unui obiect din clasa respectiva si sunt utilizati pentru initializarea datelor membre. - Daca pentru o clasa nu declaram nici un constructor , atunci la compilare se creeaza automat un constructor implicit care este public, nu are nici un parametru si executia sa nu are nici un efect. A nu se confunda constructorul implicit (cel generat automat) cu cel fara nici un parametru (scris de programator). Daca declaram un constructor, atunci nu se mai genereaza constructorul implicit. - Destructorul este metoda care se apeleaza automat la distrugerea unui obiect. Destructorii sunt extrem de utilizati in limbajul C++, mai ales pentru eliberarea resurselor ocupate de respectivul obiect. In java, lucrurile stau astfel datorita colectorului de gunoaie, care are drept sarcina eliberarea automata a memoriei la care aplicatia nu mai are nici o referinta. Prin suprascrierea metodei finalize() din clasa Object, programatorul poate specifica o multime de actiuni, care vor fi executate odata cu distrugerea obiectului. - Exemplu: Fie clasa Cerc: class Cerc{ //Date membre int raza, x, y; //Constructor fara parametri Cerc(){ raza = 1; x = 20; y = 20; } //Constructor cu parametri Cerc(int r, int a, int b){ raza = r; x = a; y = b; } //Metoda publica public void setRaza(int r) { raza = r; } } //Terminarea clasei Cerc Aceasta contine trei date membre de tip int - raza,x si y -, doi contructori, unul cu parametri si unul fara, si o metoda publica setRaza(); 1 Link to comment Share on other sites More sharing options...
TLG CracKen Posted November 17, 2017 Share Posted November 17, 2017 În afara faptului că nu înteleg nimic, dar merită +1 pentru că ai scris atât și ai stat mult să te gândești la chestia asta. 2 Link to comment Share on other sites More sharing options...
South HawKing Posted November 18, 2017 Share Posted November 18, 2017 Imi place, dar probabil multi nu inteleg, daca poti si ai timp explica fiecare linie in parte. Daca aveti nelamuriri puteti sa-l contactati pe @GF Andrei26 sau pe cineva cu gradul de programator. Link to comment Share on other sites More sharing options...
Recommended Posts