2004 Lecturer: Gavrila Cristian Cuprins I. Notiuni de programare orientata obiect II. Organizarea claselor in pachete. Clase fundamentale III. Mostenirea claselor IV. Clase abstracte si interfete V. Polimorfismul VI. Lucrul cu fisiere VII. Tratarea exceptiilor VIII.Colectii de obiecte IX. Interfete grafice folosind AWT. Applet-uri X. Fire de executie Introducere : Cuprins 1. Limbaje de programare orientate obiect 2. Obiecte si clase de obiecte 3. Reprezentarea claselor de obiecte 4. Incapsularea 5. Relatii intre obiecte Introducere : Limbaje de programare Hardware echipamentele fizice necesare calculatorului pentru a executa un set de instructiuni Procesorul Memoria Componente si subansamble electronice Software instructiunile care controleaza partea hardware Sisteme de operare controleaza direct partea hardware, ofera diverse servicii aplicatiilor Aplicatii editoare de text, browsere internet, jocuri Introducere : Limbaje de programare Programele contin instructiuni detaliate pentru a controla partea hardware Programele sunt scrise intr-un limbaj de programare Exista o multime de limbaje de programare Alegerea unui limbaj de programare depinde de Cunostintele programatorului Uneltele disponibile pentru acel limbaj Caracteristicile hardware Tipul de problema pe care dorim sa o rezolvam Singurul limbaj inteles de calculator este cod masina (secventa de 0 si 1) Introducere : Limbaje de programare Clasificarea limbajelor de programare Limbaje de nivel scazut Asamblare Limbaje de nivel inalt Limbaje imperative C, Pascal, FORTRAN, COBOL Limbaje obientate obiect C++, Java, C#, Smalltalk Limbaje de nivel foarte inalt Limbaje functionale LISP Limbaje declarative Prolog Introducere : Limbaje de programare Orice program trebuie tradus in cod masina Asamblare translatarea unui program din limbaj de asamblare in cod masina Compilare translatarea unui program dintr-un limbaj de nivel inalt in cod masina Interpretare translatarea unui program dintr-un limbaj de nivel inalt in cod masina instructiune cu instructiune, pe masura executiei Linkeditare legarea unui program cod masina de alte programe pe care le foloseste Introducere : Limbaje de programare Alfabet multimea tuturor simbolurilor folosite intr-un limbaj a, b, c, ..., 1, 2, 3, , ;, . Lexic regulile de formare a cuvintelor unui limbaj Cuvinte cheie for, if, class Identificatori nume de variabile, functii, clase Vocabular multimea tuturor cuvintelor unui limbaj Sintaxa regulile de formare a propozitiilor unui limbaj if (conditie) then instructiuni1 else instructiuni2; Limbaj multimea tuturor propozitiilor ce pot fi formate Semantica semnificatia propozitiilor limbajului Limbajele de programarea au fost puternic influentate de partea hardware a calculatorului.
Incepand cu limbajele de asamblare, apoi cu FORTRAN, COBOL, ALGOL, C, etc, majoritatea limbajelor de programare privesc programul ca o insiruire de instructiuni, eventual grupate in functii si biblioteci, fortand programatorul sa gandeasca in termenii calculatorului.
Apare necesitatea unor limbaje de programare mai generale, a caror model de rezolvare a problemelor sa nu fie legat de partea hardware (arhitectura von Neumann). Introducere : Limbaje de programare Introducere : Limbaje de programare Programarea orientata obiect Impartirea problemei in componente obiecte care indeplinesc anumite functii Asamblarea aplicatiei din diferite componente Obiectele comunica prin trimiterea de mesaje Introducere : Ce este Java? Java este un limbaj de programare: Orientat obiect Portabil Independent de arhitectura sistemului Interpretat Dinamic Sigur Robust Performant Distribuit Introducere : Ce este Java? Versiuni Java: 1.0, 1.1, 1.2, 1.3, 1.4, 1.4.2 Versiunile incepand de la 1.2 se mai numesc Java 2 Distributii Java: Java 2 Standard Edition (J2SE) Java 2 Source Development Kit (J2SDK) Java 2 Runtime Environment (J2RE) Java 2 Enterprise Edition (J2EE) Java 2 Micro Edition (J2ME) Introducere: Cuprins 1. Limbaje de programare orientate obiect 2. Obiecte si clase de obiecte 3. Reprezentarea claselor de obiecte 4. Incapsularea 5. Relatii intre obiecte Obiecte (Def.) Obiect: orice entitate fizica sau abstracta care are anumite trasaturi si asupra carora se pot indrepta actiuni.
Orice obiect este definit prin doua lucruri: - date, atribute - comportament, metode
(Def.) Obiect: componenta a unui sistem software care are o stare definita prin atribute si un comportament definit prin metode.
Obiecte Pentru a descoperi continutul unui obiect este util sa punem doua intrebari: Ce stie obiectul (ce cunoaste) descoperim datele, atributele obiectului Ce stie sa faca obiectul descoperim comportamentul, metodele obiectului Clasele de obiecte Obiectele pot fi grupate in clase.
A recunoaste un obiect inseamna a-l clasifica (a descoperi din ce clasa face parte).
(Def.) Clasa de obiecte: defineste structura (arhitectura, planul) obiectelor ce pot fi create din acea clasa.
Obiectele sunt instante ale unor clase.
Nu exista obiecte fara clase. Date Localizarea datelor: Stiva aici se tin variabilele locale definite in interiorul unei metode; stiva este rapida dar presupune cunoasterea exacta la compilare a dimensiunii memoriei alocate si a timpului de viata al datelor Heap aici se tin toate obiectele; nu este atat de rapida ca stiva dar este mult mai flexibila Zona statica aici se tin toate datele care vor fi comune tuturor obiectelor folosind cuvantul cheie static; datele tinute aici vor avea o adresa fixa cunoscuta de toate obiectele Zona constantelor aici se tin date care nu isi mai pot schimba valoarea dupa initializare; se foloseste cuvantul cheie final Date Date de obiect (date de instanta) Sunt datele (atributele) normale La crearea unui nou obiect, se aloca memorie pentru toate atributele de obiect Fiecare obiect are o copie a tuturor atributelor clasei din care a fost creat Datele de obiect apartin unui obiect si sunt tinute in heap impreuna cu obiectele Datele de obiect au aceasi durata de viata cu a obiectelor de care apartin Un obiect exista in memorie cata vreme exista cel putin o referinta la el Cand nu mai exista nici o referinta la un obiect, acel obiect devine pregatit pentru stergere, dar nu va fi sters imediat Date Datele de clasa (date statice) Sunt atributele ce au cuvantul cheie static Sunt date care apartin clasei nu obiectelor Exista o singura copie a atributelor statice (de clasa) care este folosita de toate obiectele create din acea clasa Daca un obiect modifica un atribut de clasa, toate obiectele create din acea clasa vor vedea noua valoare a atributului Datele statice (de clasa) exista inainte de a fi creat orice obiect, ele se creaza la incarcarea claselor (la pornirea masinii virtuale Java) Datele de clasa sunt tinute in zona statica de memorie Date Datele de metoda Sunt variabile declarate in interiorul unor metoda Sunt tinute pe stiva Sunt sterse la iesirea din metoda sau din blocul cel mai aproiat Daca se creaza un obiect in interiorul unei metode, obiectul este tinut in heap, dar referinta la obiect este o variabila locala de metoda si este tinuta pe stiva, deci va fi stearsa le terminarea metodei
Datele constante Odata ce au fost initializate nu li se mai poate schimba valoarea Au cuvantul cheie final in declaratie Sun tinute in zona constantelor Metode Metode constructor Sunt metode speciale apelate atunci cand se creaza un obiect Metodele de tip constructor au exact acelasi nume cu cel al clasei de obiecte si nu au tip de returnare (nici macar void) Orice clasa are cel putin un constructor Daca nu declaram nici un constructor, compilatorul va genera un constructor default (numit null constructor) Daca declaram cel putin un constructor, compilatorul nu va mai genera null constructor Constructorii sunt folositi pentru initializarea datelor de obiect Pentru o clasa ce nu are nici un constructor public, nu se pot crea obiecte din afara clasei Metode Metode getter Sunt metode de tipul publicintgetNota() Unde nota este un atribut de tip intreg In mod normal atributele sunt private, iar pentru a avea acces in mod controlat la atributele unui obiect se folosesc metode getter In mod normal pentru toate atributele private care dorim sa poate fi citite din afara obiectului, cream metode getter Metode Metode setter Sunt metode de tipul publicvoidsetNota(intnota) Unde nota este un atribut de tip intreg In mod normal atributele sunt private, iar pentru a modifica in mod controlat atributele unui obiect se folosesc metode setter In mod normal pentru toate atributele private care dorim sa poate fi cscrise din afara obiectului, cream metode setter Metode Metode generale Sunt toate celelalte tipuri de metode Orice metoda primeste unele argumente si returneaza un rezultat
Metodele sunt in mod normal metode de instanta (apartin unor obiecte) Daca apare cuvantul cheie static in declaratia metodei, atunci metoda este de clasa (poate fi apelata fara a avea creat un obiect de acea clasa) Introducere: Cuprins 1. Limbaje de programare orientate obiect 2. Obiecte si clase de obiecte 3. Reprezentarea claselor de obiecte 4. Incapsularea 5. Relatii intre obiecte UML In faza de proiectare a unei aplicatii orientate obiecte, avem nevoie de niste conventii pentru desenarea claselor.
UML Unified Modeling Language: este limbajul vizual folosit pentru modelarea sistemelor informatice
Descrie sistemele sub forma unor diagrame.
Pentru programarea orientata obiect, cea mai importanta diagrama este diagrama de clase. UML : Diagrama de clase O clasa este reprezentata ca un dreptunghi cu trei zone care contin: Numele clasei Atributele clase Metodele clasei Animal nume : String; tip : String; varsta : int; getNume() : String; setNume(nume : String) : void; getTip() : String; Introducere: Cuprins 1. Limbaje de programare orientate obiect 2. Obiecte si clase de obiecte 3. Reprezentarea claselor de obiecte 4. Incapsularea 5. Relatii intre obiecte Incapsularea Incapsularea ne permite sa privim obiectul ca pe o cutie neagra.
Prin incapsulare putem restrictiona sau putem permite accesul altor obiecte asupra atributelor sau metodelor unui obiect.
Incapsularea In Java incapsularea se realizaza prin urmatoarele cuvinte cheie care se pot aplica atributelor sau metodelor: public in UML + : orice alt obiect are acces private in UML - : nici un alt obiect nu are acces protected in UML # : doar obiectele derivate au acces (default, package) in UML : doar obiectele din acelasi pachet (director) au acces
Introducere: Cuprins 1. Limbaje de programare orientate obiect 2. Obiecte si clase de obiecte 3. Reprezentarea claselor de obiecte 4. Incapsularea 5. Relatii intre obiecte Relatii intre obiecte Relatia de dependenta: Un obiect foloseste alt obiect (depinde de alt obiect) Este cea mai generala relatie intre obiecte Celalalt obiect nu apare ca atribut al primului ci e folosit doar in metode
Administrator Cusca Relatii intre obiecte Relatia de asociere: Un obiect stie despre alt obiect Nu exista relatie de incluziune intre obiecte Celalat obiect apare ca atribut al primului obiect Roluri si multiplicitate
Tara Presedinte Relatii intre obiecte Relatia de agregare: Un obiect contine alt obiect Al doilea obiect este un atribut al primului obiect
Masina Motor Relatii intre obiecte Relatia de mostenire: Un obiect este alt obiect Clasa de baza se mai numeste clasa parinte Clasa fiu mosteneste atributele si metodele clasei parinte Clasa fiu poate adauga atribute si metode noi (extinde clasa de baza)