cursuri isp letitia
DESCRIPTION
Toate cursurile la isp an 2013-2014TRANSCRIPT
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 1
Ingineria Sistemelor de
Programe
Software Engineering
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 2
Competene:
conceperea aplicaiilor software n general i pentru controlul proceselor n special
proiectarea aplicaiilor folosind UML i programarea obiectual (Java)
implementarea proiectelor UML
Cunotine:
programare obiectual, concurent etc.
diagrame UML
Evaluare:
N = 0.33*P + 0.33*E + +0.33*L
P ? ; N = 0.66*E + +0.33*L
P5, E5, L5
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 3
Introducere n ingineria software-ului
I. Programarea obiectual (Java)
II. Proiectarea aplicaiilor de control utiliznd UML
III. Exemple de proiectare a aplicaiilor de control a proceselor
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 4
II. Proiectarea aplicaiilor de control utiliznd UML
1. Diagrame ale claselor i obiectelor 2. Implementarea n Java a diagramelor claselor i obiectelor 3. Specificarea aplicaiilor de control 4. Diagrame contextuale
5. Diagrame use-cases
6. Diagrame secveniale 7. Diagrame de stare
8. Diagrame ale activitilor
III. Exemple de proiectare a aplicaiilor de control a proceselor
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 5
1. Introducere n ISP
Definiie: Ingineria sistemelor de programe conine:
proiectarea, documentarea i ntreinerea software-ului utiliznd tehnologii i practici din tiina calculatoarelor
gestionarea proiectelor
proiectarea interfeelor i
gestionarea componentelor digitale.
Se baza n trecut pe:
programare i
analiza sistemelor Legtura cu aplicaiilor de control era slab
Ingineria implic o disciplin a dezvoltrii programelor. Ea este opus artei.
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 6
Obiectivele ISP
Realizarea sistemelor software are n vedere:
conceperea,
dezvoltarea (implementarea) i
verificarea. Realizarea aplicaiilor de control implic n plus determinarea i descrierea comportamentului sistemului condus, precum i legtura dintre sistemul de control i el.
Pentru obinerea rezultatelor software trateaz problemele:
identificrii (problemei, sau aplicaiei)
definirii (aplicaiei)
realizrii i
verificrii ndeplinirii cerinelor i caracteristicilor cerute
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 7
Caracteristicile software-ului includ:
funcionalitate
fiabilitate
ntreinere (maintainability)
disponibilitate
testabilitate
facilitate de utilizare
portabilitate
conexiunea cu procesele controlate i
alte atribute
ISP este necesar pentru produse i situaii unde se cere o mare fiabilitate cum ar fi controlul i monitorizarea instalaiilor complexe.
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 8
Pentru partea software se utilizeaz tehnologiile:
compilatoare - compilers
depozitarea codului code repository
procesoare de cuvinte word processors
Pentru sistemul condus:
modelare
simulare
Practici:
programarea n echip
revizuirea codului i a algoritmilor de control
gestionarea zilnic a edinelor de lucru
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 9
Comparaie ntre Procesul ingineresc i Metoda tiinific
Procesul ingineresc
1. Definete o necesitate ce vrea s fac utilizatorul cu produsul
2. Cercetare de baz caut dac mai sunt produse similare i analizeaz ce fac ele
3. Stabilete criteriile de proiectare 4. Pregtete un proiect preliminar 5. Construiete un prototip i l testeaz 6. Analizeaz produsul i l reproiecteaz dac este necesar 7. Prezint rezultatele
Metoda tiinific 1. Pune o ntrebare
2. Cercetare de baz dac mai sunt abordri ale unei teme similare 3. Formuleaz ipoteze, identific variabilele i diferenele 4. Proiecteaz un experiment i stabilete procedurile de testare 5. Testeaz ipotezele prin efectuarea experimentelor
6. Analizeaz rezultatele i trage concluziile
7. Prezint rezultatele
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 10
Metodologia de programare tranziie de la aptitudinile programrii de baz, la procesarea riguroas i dezvoltarea software-ului
Procesele ingineriei software conin:
modele ale ciclurilor de viat
modelarea proceselor
analiza cerinelor
tehnici de specificare
tehnici de garantare a calitii
verificarea i validare
testarea
planificarea i gestionarea proiectelor
Cum se aplic acestea la controlul proceselor tehnice?
-
Tiberiu Leia: Ingineria Sistemelor de Programe Introducere 11
*
****
***END***
****
*
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 1
Programarea n limbajul
Java
1. Introducere
1. Apariia i evoluia limbajului Java 2. Versiuni
3. Extensii
4. Caracteristici
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 2
1. Apariia i evoluia limbajului Java
Java este un limbaj de programare de nivel nalt:
cu scop general
concurent
bazat pe clase i
orientat pe obiecte
Pe baza acestuia au fost dezvoltate un mai multe tehnologii care au fcut din Java unul dintre cele mai utilizate limbaje la ora actual. Prin Java au fost introduse multe idei noi n domeniul World Wide Web-
ului.
Java este un limbaj de nivel relativ nalt n care detaliile mainii nu sunt disponibile direct.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 3
Java are multe elemente comune cu alte limbaje de programare orientate pe
obiecte, dar s-au adus mbuntiri acestora pentru a crea un limbaj de programare mai uor de nsuit i de utilizat.
Limbajul care se afl la originea lui s-a numit iniial Oak (stejar) i a fost conceput (n anul 1990 de ctre o echip condus de James Gosling n firma Sun Microsystems) pentru aplicaii i sisteme nglobate. Mediul actual de JDK (1.5.x) este rezultatul contribuiei unui numr foarte mare de specialiti n mai multe etape.
Prima dat limbajul Oak a fost utilizat ntr-un proiect numit Green care consta din proiectarea unui sistem de control pentru locuine. Acesta trebuia s controleze televizoarele, instalaia de iluminat, telefoanele, etc. Datorit coincidenei numelui (Oak) cu cel al unui alt produs software, acesta a fost schimbat n denumirea actual.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 4
n 1993, dup ce World Wide Web (cu acronimul WWW) a fost transformat ntr-un mediu grafic, s-a constatat c Java este un limbaj potrivit pentru aplicaii de Web. Astfel s-a ajuns ca la construirea unui browser (component software pentru cutare n Internet, numit mai trziu HotJava) care demonstra puterea limbajului.
Firma Sun Microsystems a anunat oficial Java ca limbaj n anul 1995. n anul 1996 au fost publicate pentru prima dat specificaiile limbajului Java (engl.: Java Language Specifications).
Java este un limbaj care pune la dispoziie o structur uor de folosit, modelat pe baza a dou dintre cele mai populare limbaje de programare, C si C++.
Limbajul Java este apropiat de limbajele Visual Basic, Pascal i Delphi.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 5
Proiectanii limbajului JAVA au eliminat multe dintre dezavantajele din limbajele C si C++, dar au pstrat avantajele acestora cum ar fi proiectarea orientat pe obiecte.
Interfaa JAVA API a limbajului este mai prietenoas i mai comod de utilizat dect componentele similare din limbajul C++. Bibliotecile de clase
Java ocup un volum mai mic dect cele similare din C sau C++.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 6
2. Versiuni ale limbajului Java
Dei firma Sun MicroSystems a nceput lucrul la limbajul Java n 1990, doar n 1995 a aprut prima versiune comercial. Limbajul Java poate fi utilizat pe sisteme de operare ca: Windows 95,
Windows 98, Windows 2000, Windows NT, Windows XP, Sun Solaris,
Macintosh i diverse siteme Unix. Pentru dezvoltarea programelor exist mediile Java Developer's (sau Development) Kit (cu acronimul JDK, adic kitul dezvoltatorului Java, sau kitul de dezvoltare Java) sau SDK (acronim de la Software Developers Kit):
JDK 1.0.2 - din 1996
JDK 1.1 din 1997
JDK 1.2 din 1998
JDK 1.3 din 2000
JDK 1.5 din 2006
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 7
JDK 1.6
JDK 1.7
Un astfel de kit este "free" i se gsete n site-ul lui Sun JavaSoft ORACLE: http://www.oracle.com/technetwork/java/index.html.
Java Developer's Kit conine utilitare software necesare pentru crearea i dezvoltarea aplicaiilor:
javac - compilatorul Java
java interpretorul aplicaiilor Java
jdb - depanatorul Java
javadoc - programul de documentare Java
appletviewer - utilitar pentru vizualizarea applet-urilor Java
javap - dezasamblor pentru clase Java etc.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 8
Exist medii de dezvoltare integrate (comerciale) pentru realizarea programelor Java cum ar fi:
Symantec Visual Cafe sau un compilator Just-In-Time
Borland JBuilder, (3.0, 3.5, 4.0 i BC++5.0/Java)
SuperCede
Rog Wave JFactory
Natural Intelligence Roaster
SunSoft Java WorkShop
Kalimantan - Kalimantan
WebGain Visual Cafe (3.0, 4.0 i 4.1)
Metrowerks Code Warrior Pro 4 i 5
IBM Visual Agew for Java 3.0 i 3.5
Sun Forte 2.0 Community Edition
Eclipse 3.0, 3.1. 3.2. etc. (free)
NetBeans IDE 6.9.1 (free)
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 9
3. Extensii standard
Java API conine biblioteci de coduri compilate care pot fi utilizate n programe. API este acronimul de la Application Programing Interface
adic interfaa de programare a aplicaiilor.
Firma Sun Microsystems a grupat mediile corespunztoare platformei Java 2 n trei tehnologii:
J2ME (Java 2 Micro Edition) J2SE (Java 2 Standard Edition) J2EE (Java 2 Enterprise Edition).
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 10
Fiecare dintre ele este nzestrat cu utilitarele necesare pentru dezvoltarea produselor:
JVM (Java Virtual Machines) care se potrivete la toate aplicaiile Biblioteca API care este specializat pentru fiecare categorie de aplicaii n
parte
Utilitare pentru dezvoltare i dispozitive pentru configurare Un profil care este o specificare a setului minim de API-uri util pentru
diferite tipuri de dispozitive (cum ar fi telefoane cu ecran, dispozitive de
control pentru automobile, asistent digital etc.)
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 11
Tehnologia J2ME se adreseaz unei arii vaste de aplicaii. Tehnologia CDC (acronim de la Connected Device Configuration)
standardizeaz o JVM portabil, destinat utilizrii la dispozitive electronice nglobate care sunt caracterizate de existena unor resurse mai modeste cum ar fi:
Procesoare cu 32 de bii Memorie 2Megabii sau mai mult (RAM + ROM) Conectare la un tip anume de reea Interfa cu utilizatorul avnd diferite grade de complexitate.
Sunt cunoscute i utilizate urmtoarele extensii: Enterprise API, Commerce API, Management API, Server API, Media API, Security API,
Java Beans API, Embedded API.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 12
Enterprise API Aceasta este extensia limbajului Java pentru ntreprinderi i const dintr-un mecanism formal pentru conectarea sistemelor informaionale. Enterprise API are urmtoarele subseturi:
JDBC (acronim de la Java Database Connectivity) conexiunea limbajului Java cu bazele de date,
IDL (acronim de la Interface Definition Language) limbaj pentru definirea interfeelor,
RMI (acronim de la Remote Method Invocation) invocarea (apelarea) metodelor de la distan.
JDBC definete o interfa structurat pentru baze de date SQL (acronim de la Structured Query Language). Aceasta se bazeaz pe un protocol pentru manevrarea datelor. JDBC API ofer procedee consistente pentru accesarea i manevrarea datelor din bazele de date.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 13
IDL ofer un mod pentru conectarea programelor client la reeaua de calculatoare folosind un protocol industrial standard pentru comunicaii client/server. Are componentele:
cadru de dezvoltare pentru client care permite proiectarea miniaplicaiilor sau a aplicaiilor independente,
cadru de dezvoltare pentru serveri (destinai aplicaiilor Java pentru reea),
utilitare de dezvoltare care genereaz automat coduri stub pentru interfee RMI.
RMI definete interfee pentru apelarea metodelor (funciilor) obiectelor distribuite.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 14
Commerce API Ofer soluii pentru dezvoltarea tranzaciilor comerciale pentru Web. Aceasta are componente pentru:
infrastructur permind construirea unui cadru arhitectural pentru interaciunile elementelor constitutive ale sistemului informaional,
baze de date de informare (engl.: information database) coninnd metode de plat i metode de expediere facilitnd operaiile de criptare i schimb de informaii pentru furnizorii de servicii comerciale,
casete de plat (engl.: payment cassetes) care sunt nite module software implementnd protocoale financiare specifice permind astfel introducerea modului de plat electronic.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 15
Management API Ofer soluii pentru sisteme integrate de gestiune. Are n acest scop
interfee, clase i miniaplicaii. Utiliznd Management API se obine o abordare unitar pentru rezolvarea problemelor complexe, dezvoltarea sau ntreinerea resurselor i crearea unor servicii pentru o reea eterogen.
Management API include urmtoarele componente:
Admin View Module (AVM) modulul de vizualizare administrativ este o extensie la Java Abstract Window Toolkit (AWT) care ofer faciliti pentru crearea aplicaiilor integrate de gestiune,
Base object interfaces interfeele obiectelor de baz definesc tipurile obiectelor nucleului folosit pentru resurse distribuite i servicii pentru un sistem de gestiune,
Management container interfaces - interfeele containerelor de gestiune definesc un mod pentru gruparea mpreun a obiectelor n scopul unei mai bune organizri facilitnd abordarea orientat pe grupuri pentru controlul gestionrii resurselor n sisteme complexe,
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 16
Management notification interfaces interfeele de semnalare pentru gestiune definesc un fundament central pentru gestionarea evenimentelor,
Manages date interfaces interfeele pentru date gestionate ofer un mod pentru conectarea atributelor obiectelor gestionate, cu o baz de date relaional folosind JDBC, asigurnd o legtur transparent ntre resursele gestionate i bazele de date externe,
Management protocol interfaces interfeele pentru protocoale de gestiune sunt folosite de Java Security API i Java RMI pentru securitatea obiectelor distribuite,
Simple Network Management Protocol (SNMP) interfaces interfeele protocolului pentru gestiunea reelei ofer soluii pentru rezolvarea problemelor de comunicare ntre diferite tipuri de reele,
Applet integration intefaces interfeele pentru integrarea miniaplicaiilor specific modurile de introducere a ale acestora n aplicaiile de gestiune.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 17
Server API
Compania JavaSoft ofer prin acest pachet alternative pentru rezolvarea aplicaiilor care folosesc server-i. Astfel crete funcionalitatea aplicaiilor oferind un suport pentru:
administrare
controlul accesului i
tratarea dinamic a resurselor. Se realizeaz astfel un cadru pentru extinderea server-ilor i servlet-urilor. Un servlet este un obiect Java care extinde funcionalitatea unui server de informare. Servlet API ofer extinderile necesare pentru crearea servlet-urilor i pentru integrarea lor cu serverii de informare. Un servlet API este echipat astfel nct s poat trata complet relaiile dintre servlet i clieni. Se creeaz astfel posibilitatea ca programele s fie simple i stabile.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 18
Media API
Iniial Java API admitea introducerea n aplicaii i miniaplicaii numai de imagini stocate n fiiere gif sau jpg. Sunetele care puteau fi redate (numai) n miniaplicaii trebuiau s provin din fiiere cu extensia au. Media API este proiectat s fie mai deschis i mai extensibil. Sunt adugate urmtoarele subseturi:
Media Framework API trateaz funcionalitatea temporizrilor de nivel cobort cerut de unele aplicaii. Sunt oferite i mecanisme de sincronizare performante. Prin utilizarea acestor faciliti se poate sincroniza banda de sunet a unui film cu imaginile corespunztoare. Acest subset servete la crearea fluxurilor, comprimrilor i surselor de date live (n direct).
2D Graphics extinde funcionalitatea claselor AWT oferind un suport puternic pentru primitivele graficii 2D i pentru o mare varietate de dispozitive de ieire (ex., pentru imprimante). n acest subset sunt definite
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 19
ntr-un mod uniform modele grafice care creeaz funcii grafice ntr-o singur structur.
Animation API folosete grafica 2D ca baz pentru implementarea obiectelor grafice animate 2D sau sprites (spiridui). Sunt folosite mecanisme de temporizare i sincronizare.
3D Graphics API ofer extensii cu performan ridicat pentru grafica 3D. Subsetul ofer un suport pentru limbajul VRML (acronim de la Virtual Reality Modeling Language). Acest limbaj de modelare a realitii virtuale permite afiarea unor pagini Web 3D interactive.
Video API servete pentru descrierea micrilor n Java. Este oferit un suport pentru gestionarea i prelucrarea imaginilor Video fie ca flux, fie ca scenariu memorat (stocat) pe un mediu.
Audio API este similar cu subsetul precedent, dar servete pentru audio. Subsetul conine clase audio 3D i clase care faciliteaz eantionri i sintetizri audio.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 20
MIDI API (acronim de la Musical Instrument Digital Interface) reunete temporizarea evenimentelor muzicale din Java cu standardul MIDI. Se
definete un protocol bazat pe timp pentru comunicarea (semnalarea) i stocarea evenimentelor cum ar fi cele care reprezint evenimente muzicale.
Share API definete un mod n care au loc n reea comunicaii multiparty. Se ofer un suport pentru sincronizri i gestionarea sesiunilor.
Telephony API creeaz faciliti pentru interaciuni cu telefoanele. Printre funciile subpachetul se regsesc cele necesare la crearea teleconferinelor i identificarea apelatorului (engl.: caller ID).
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 21
Security API
Ajut la remedierea restriciilor miniaplicaiilor de a citi sau scrie din, respectiv n fiiere locale. n plus, exist clase pentru rezolvarea problemelor introducerii semnturii digitale i a autentificrii. Criptografia cuprinde algoritmi i tehnici pentru aranjarea datelor astfel nct s fie de nerecunoscut de ctre altcineva, diferit de destinatar.
Semntura digital este o tehnic de identificare electronic care are aceleai scopuri ca i cea manual.
Autentificarea este un proces de verificare a unei aciuni pe baza unui control al securitii.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 22
Java Beans API
Acesta este un pachet introdus cu scopul reutilizrii componentelor software. Sunt introduse mecanisme pentru calcul distribuit fr s se suprancarce cu un nucleu pentru realizarea lui. Sunt oferite soluii pentru invocarea metodelor de la distan. JavaBeans include un suport pentru specificarea proprietilor temporale.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 23
Embedded API
Conine un set minimal pentru realizarea funcionalitii Java destinat utilizrii n sisteme nglobate. Sistemele nglobate sunt instalaii sau echipamente care conin sisteme de calcul. Ca exemple se pot da mainile de splat, automobilele, mainile unelte, echipamentele medicale, echipamentele militare etc. care conin microprocesoare. Multe sisteme nglobate nu au nevoie de ieiri grafice, prin urmare nu este nevoie de pachetul java.awt care conine clase pentru interfee grafice. Embedded API conine un limbaj, un utilitar i clase pentru realizarea operaiilor intrare/ieire.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 24
4. Caracteristicile limbajului Java
Simplu Au fost eliminate multe dintre trsturile existente n alte limbaje de nivel (exemplu C) nalt care nu sunt neaprat necesare cum ar fi pointerii, structuri, suprascrierea operatorilor, abloane, fiiere antet, motenirea multipl etc. A fost eliminat noiunea de adres explicit a unui obiect.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 25
Orientat pe obiecte Se bazeaz pe programarea orientat pe obiecte. Se utilizeaz clase pentru organizarea codului n module logice. n momentul execuiei se creeaz obiecte cu aceste clase. Clasele pot fi dezvoltate folosind motenirea simpl i agregarea. Programele Java sunt modulare i flexibile. JAVA este un limbaj complet orientat pe obiecte (OOP).
Un alt aspect pozitiv al acestui limbaj este acela c elimin pointerii (fapt care duce la simplificarea modului de programare, precum i la mbuntirea securitii programelor) i administreaz automat memoria.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 26
Tastat static
Toate claseele utilizate n program trebuie introduse n cod nainte de
utilizare. Ca urmare a tastrii programului se obine codul surs.
Compilat i interpretat
Programele Java sunt att compilate ct i interpretate. Dup terminarea scrierii unui program Java, codul surs va fi compilat ntr-un format de nivel intermediar (mediu), numit cod de octei (engl.: bytecode). Acest cod de octei poate fi apoi rulat, fiind interpretat de mediul de execuie Java. Codul de octei nu are nici o instruciune specific platformei. n timpul compilrii se verific multe erori posibile care rmn nedetectate n alte limbaje.
Codul de octei este diferit de codul main. Codul main este reprezentat printr-o succesiune de bii 0 i 1. Codurile de octei sunt seturi de instruciuni care seamn mult cu codul scris ntr-un limbaj de asamblare.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 27
Calculatorul poate executa direct codul maina, ns codurile de octei trebuie interpretate nainte de a fi rulate.
Codul main poate fi folosit numai pe platforma pentru care a fost compilat.
Spre deosebire de acesta, codul de octei poate fi folosit pe orice platform care folosete mediul de execuie Java corespunztor. Aceasta posibilitate asigur neutralitatea limbajului Java din punct de vedere al arhitecturii hardware. Independena fa de maina pe care este executat programul constituie marele avantaj al limbajului Java fa de alte limbaje i i confer o portabilitate maxim.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 28
Interpretorul
Interpretorul Java este un program care preia fiiere cu coduri de octei. El transform codul de octei ntr-un set de instruciuni (n cod main) pe care calculatorul le poate nelege.
Procedeul folosit pentru crearea codului de octei const din compilarea codului surs pentru un calculator virtual (inexistent). Acest calculator imaginar este numit Maina Virtual Java (engl.: Java Virtual Machine, cu acronimul JVM) i exist doar n memoria calculatorului.
Operaia Editare Compilare Interpretare (i execuie)
Utilitarul Editor de
texte
Compilator Java Interpretor Java
Rezultatul Fiier surs Fiier executabil (cod de octei)
Execuie program Java
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 29
Compilatoarele Just-In-Time produc la cere instruciuni n cod main (adic rezultatul este un cod executabil). Nivelurile de interaciune ale unui program JAVA sunt:
Aplicaia utilizatorului Obiectele i clasele Java API
Maina virtual Java Sistemul de operare: Unix, Windows, etc.
Neutru din punct de vedere arhitectural
Programele Java sunt portabile, adic pot fi executate pe platforme diferite sub diverse sisteme de operare. Neutralitatea din punctul de vedere al
arhitecturii este asigurat prin implementarea unui interpretor Java pentru fiecare arhitectur.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 30
Portabil
Noiunea de portabilitate este legat de cea precedent. n Java toate datele primitive (ntregi, virgul mobil etc.) sunt de dimensiuni diferite n funcie de maina i sistemul de operare pe care este executat programul. n plus, aplicaiile Java sunt portabile deoarece compilatorul a fost scris n Java, iar mediul de execuie respect standardul POSIX acordul C.
Multifir
Programele Java pot avea mai multe fire de execuie.
Cu administrarea automat a memoriei Programele Java se bazeaz pe obiecte care sunt create prin instaierea claselor. Eliberarea spaiului ocupat de acestea cnd nu mai este nevoie de ele se face automat. n acest scop exist colectorul de reziduuri (engl.: garbage collector) care elimin spaiul alocat obiectelor care nu mai sunt necesare.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 31
Dinamic
Deoarece nu exist faza de legare dup compilare, problema rezolvrii adreselor n Java este amnat pn n momentul execuiei. Abia atunci interpretorul Java realizeaz legarea numelor din clase i plaseaz obiectele n memorie. Prin urmare, n Java nu se calculeaz desfurarea (aeazarea) obiectelor n memorie dect n momentul execuiei. n cazul adugrii unei noi metode ntr-o clas, nu trebuie recompilate toate clasele care utilizeaz aceast clas, ci numai acelea care utilizeaz metoda respectiv.
Obiectele se creeaz i se distrug n timpul execuiei programului.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 32
Robust
Interpretorul Java verific toate accesrile realizate n cadrul programului (indiferent dac sunt accesate obiecte interne sau externe, software sau hardware). Dac apar erori sau situaii anormale se semnaleaz aceste excepii evitndu-se blocarea execuiei programului. Java nu permite manevrarea direct a pointer-ilor. Aceasta face imposibil suprascrierea memoriei cu date corupte. De asemenea, Java utilizeaz n timpul execuiei colectorul de reziduuri n loc de eliberarea explicit a memoriei (ca n C) evitndu-se astfel multe necazuri.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 33
Distribuit
Limbajul Java a fost conceput pentru a rezolva problemele legate de
conexiunea n reea. Programele Java pot utiliza clase (ca URL de exemplu) pentru accesarea unor servere sau alte obiecte de la distan. n Java se pot scrie aplicaii independente (engl.: stand alone applications) i miniaplicaii (sau applet-uri) care s fie incluse n pagini HTML n servere de Web i executate pe mainile utilizatorilor. Limbajul Java include un set de biblioteci de reea care utilizeaz protocolul TCP/IP (pentru conexiunea n reea) i protocoale pentru transmiteri de informaii ca HTTP i FTP.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 34
Sigur
Sistemul Java efectueaz controale i impune restricii privind accesrile unor componente eliminnd astfel posibilitatea de rspndire a viruilor sau producerea unor daune de ctre utilizatori ru intenionai. Neavnd pointeri se poate controla bine codul care exist n mediul Java. Pentru aceasta s-a introdus conceptul de verificare a byte-code-ului. Se asigur c:
referinele nu-i depesc limitele
nu se realizeaz transferuri ilegale de obiecte
nu se depete superior sau inferior stiva (pentru operanzi)
toi parametrii transmii funciilor sunt de tipul corespunztor.
n Java clasele sunt unitile de execuie de baz, iar securitatea este implementat la cest nivel. Clasele din sistemul local sunt prelucrate separat de cele din alte sisteme. Aceasta previne ca s fie suprascris codul local de ctre alte sisteme cu coduri care nu sunt de ncredere.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 35
Pentru creterea siguranei, miniaplicaiile (ncrcate din Web) sunt monitorizate fiind mpiedicate s scrie n fiiere ale utilizatorului sau s apeleze metode native. Conexiunea printr-un soclu de reea folosind protocolul TCP/IP nu poate fi dect de la calculatorul propriu la serverul din
care a fost ncrcat miniaplicaia.
Exist Security Manager!
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 36
Extensibil
Programele Java accept metode native, adic funcii scrise n alte limbaje de programare (asamblare, C etc). Acestea sunt legate dinamic n timpul
execuiei obinndu-se astfel performane mai bune.
Concluzie: Limbajul JAVA a fost proiectat pentru:
folosirea n medii de reea (distribuite);
asigurarea unei performane ridicate;
reutilizarea codului;
asigurarea securitii restricii de securitate implementate n structura de baz a limbajului.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 37
Compararea cu limbajul C
Spre deosebire de limbajul C, n Java nu exist:
pointeri
fiiere antet separate
funcii independente
motenire multipl.
Cu toate aceste diferene, Java seamn destul de mult cu limbajul C++. La ntrebarea dac s se utilizeze Java sau C++, se pot afirma urmtoarele:
Att Java ct i C++ servesc la implementarea unor probleme similare.
Exist clase att pentru Java ct i pentru C++ n scopul implementrii unor aplicaii similare.
Implementrile unor aplicaii n Java nu duc la ridicarea vitezei de execuie fa de implementrile n C sau C++, ba chiar pot duce la reducerea acesteia din cauza controlului accesului.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 38
Adausul de siguran pe care l aduce Java se face cu preul scderii vitezei de execuie a programelor.
Pentru ridicarea vitezei de execuie a aplicaiilor concepute n Java se pot utiliza metode native (scrise n limbaje de asamblare, sau chiar C) pentru
anumite seciuni critice din punctul de vedere al timpului.
Timpul necesar crerii unei aplicaii n Java este mai sczut dect n cazul implementrii n C i C++ .
Un program scris n Java este mult mai uor de neles dect unul similar scris n C sau C++. Aceasta face ca actualizarea i ntreinerea unor programe scrise n Java s fie mai simpl.
Eliminarea necesitii distrugerii explicite a obiectelor ca i a eliminrii cerinei de eliberare a spaiilor de memorie alocate, face ca programele scrise n Java s fie mai uor de conceput i s fie de calitate superioar celor din C.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 39
Fiind independente de platform, programele Java se pot distribui mai uor dect cele similare scrise n C. Applet-urile pot fi actualizate mai uor dintr-un server de Web.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 40
Domeniile de utilizare ale aplicaiilor Java
Cele mai semnificative aplicaii ale limbajului Java sunt n:
aplicaii de control
sisteme nglobate (ncorporate) - aplicaii nglobate
sisteme distribuite n general
sisteme de control distribuit
conexiuni cu sistemele de baze de date
construirea de interfee grafice
aplicaii care necesit animaie, simulri etc.
aplicaii n pagini web
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea n limbajul Java - Introducere 41
*
****
***END***
****
*
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 1
Java Language
Programming
Basic Programming Elements
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 2
Content
1. Stand alone applications and mini-applications
2. Name and identifiers
3. Java program structure
4. Data types
5. Operators
6. Flow execution control
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 3
1. Stand alone applications and mini-applications
Mini- applications = applets
stand alone application)
= program that can be used independently.
They have main() method
public static void main (String[] args)
launching the execution (run program) Java interpreter java numeProgram
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 4
Applet
A Java program that extends Applet class.
This class doesnt contain main method the program cannot be launched using Java interpreter.
They are used in Web pages (via HTML file).
Web server
browser (ex. Internet Explorer, Mozilla Firefox).
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 5
2. Names and Identifiers
An identifier is a sequence of unlimited length of letters and digits where
the first is compulsory a letter.
They are string of characters representing names given to variable, classes or
methods.
They should differ from keywords (including null, false and true).
Names are used for referring entities like packages, class types, interfaces,
type members, parameters, local variables etc.
The names can be:
simple - ex.: xxx
composed sequences of identifiers separated by ".". ex.: xxx.yyy.zzz
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 6
abstract do import public try
boolean double instanceof return void
break else int short volatile
byte extends interface static while
case final long super
catch finally native switch
char float new synchronized
class for null this
const goto package throw
continue if private throws
default implements protected transient
Keywords
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 7
Ex.:
java.awt.BorderLayout
java.lang.System.out.println()
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 8
3. Java Program Structure
Lexical entities:
comments
keywords
identifiers
literals
separators signs ({, }, [, ], ;, . and ,) used to separate lexical entities
operators
Variables
Constants
Expressions
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 9
Instructions lexical units that describe what the program has to perform the instructions are separated by ;.
Code block { instructions; }.
packages
subpackages
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 10
Source files
Code source filename.java
Compiler javac filename.class
Package declaration:
package NumePachet;
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 11
Program example: /** Program name
* Comments
*/
public class NumeClasaPrincipala
{
/**
* Metoda principala a aplicatiei *
* Se pot transmite parametrii prin tabelul de
argumente */
public static void main (String[] args)
{
// Aici se adauga codul programului
System.out.println("Salut! Merge programul!");
}//terminare metoda main
}
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 12
Compilation javac
Running
java NumeClasaprincipala
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 13
4. Data Types
Type variabileName;
Variable types in Java:
reference - classes, interfaces, arrays (or null) and
primitive data.
Where are they used?
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 14
Primitive data types
Type Significance Dimension Minim Maxim
byte Integer 8 bii -128 +127
short Integer cu semn 16 bii -32768 32767
int Integer cu semn 32 bii -2147483648 2147483648
long Integer cu semn 64 bii -263 263-1
char Integer fr semn 16 bii Characters Characters
float Float point
Virgul mobil n simpl precizie
32 bii -3.40282347*1038 3.40282347*1038
double Virgul mobil n dubl precizie
64 bii -1.7976931348623157
0*10308
1.79769313486231
570*10308
boolean Val. boolean 32 bii false true
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 15
Data can be:
1. numerical - integers: byte, short, int, long, char; 2. numerical - real: float, double. 3. boolean - logical 4. character - char.
In Java are used for characters the standard Unicode (Wide Character) with
38.885 characters.
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 16
String data1;
String data2=sir de caractere; String data3=new String("alt sir");
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 17
Data types declarations:
byte varByte; // variabila de 8 biti
short varShort; // variabila de 16 biti
int varInt; // variabila de 32 biti
long varLong; // variabila de 64 biti
long varLong=1L; //atribuire
long varLong=2l;
float varFloat; // variabila de 32 biti
double varDouble; // variabila de 64 biti
char caracter; // variabila de un caracter
char caracter = c; //declara variabila caracter
si ii atribuie //valoarea c
boolean val=true;
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 18
Arrays:
int Matrice1[]; //
float Matrice2[][]; //
Matrice2 mat=new float[3][4];
int[] matrice3=new int[5];
mat i matrice3 sunt date de tip referin (reference type).
String[] str= {"unu", "doi", "trei"};
int[] tab= {1, 3, 5, 2, 34};
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 19
5. Operators
1. Assign operator - "=".
add (+=)
subtract (-=)
multiplication (*=)
divide (/=)
modulo (%=)
AND (&=)
OR (|=)
EXCLUSIVE OR (^=)
int x=y=z=25;
a = 3; // atribuie variabilei a valoarea 3
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 20
a - = 5; // atribuie variabilei a rezultatul operaiei a 5. (scdere i atribuire)
a * = 2; // atribuie variabilei a rezultatul operaiei a * 2. (nmulire i atribuire)
a / = 5; // atribuie variabilei a rezultatul operaiei a / 5
2. Binary arithmetic operators:
add (+) ex.: a+b
subtract (-) ex.: a-b
multiply (*) ex.: a*b
divide (/) ex.: a/b
modulo (%) ex.: a%b
3. Unary arithmetic operators:
decrement (-) ex.: a--
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 21
increment (+) ex.: a++
minus sign (-)
plus sign (+)
int x=3, y, z;
y=++x; // x este incrementat inainte de atribuire
z=y--; //intai se face atribuirea si apoi decrementarea
z=-y; //atribuie valoarea lui y cu semn schimbat
x=~y; //atribuie valoarea lui y cu complementare pe biti
float f1=3.15, f2;
f2=f1++;
f3=++f1;
f1=5.15, f2=3.15 i f3=5.15.
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 22
Order:
int < long < float < double
4. Relational operators:
equal (==)
different (!=)
greater (>)
smaller (=)
smaller or equal (
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 23
5. Logical operators:
- conditional and AND (&&) or OR (||)
- boolean - NOT (!) - AND (&) - OR (|) - XOR (^)
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 24
6. Bit operators
Operator Operation Example
= Atribuire a = b
> Mai mare dect a > b
< Mai mic dect a < b
= b
== Egal cu a == b
!= Nu este egal cu a != b
! Negaie logic !a
~ Negaie logic pe bii ~a
?: Operatori condiional a ? expr1 : expr2
&& I (conditional AND) a && b
|| SAU (conditional OR) a || b
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 25
++ Incrementare a++ or ++a
-- Decrementare a-- or --a
+ Adunare a + b
- Scdere a - b or -b
* Multiplicare a * b
/ mprire a / b
% Modulo a % b
& I pe bii (bitwise AND) a & b
| SAU pe bii (bitwise OR) a | b
^ SAU EXCLUSIV pe bii (XOR) a ^ b
Deplasare dreapta a >> b
>>> Deplasare dreapta cu umplere cu
zero
a >>> b
+= Atribuie rezultatul adunrii a += b
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 26
-= Atribuie rezultatul scderii a -= b
*= Atribuie rezultatul nmulirii a *= b
/= Atribuie rezultatul mpririi a /= b
&= Atribuie rezultatul lui I pe bii a &= b
|= Atribuie rezultatul lui SAU pe bii a |= b
^= Atribuie rezultatul lui SAU
EXCLUSIV pe bii a ^= b
%= Atribuie rezultatul lui modulo a %= b
= b
>>>= Atribuie rezultatul deplasrii la dreapta cu umplere cu zero
a >>>= b
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 27
7. Concatenation operator for string of characters +.
String s1=qwe;
String s2=M;
String s3;
s3=s1+s2;
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 28
6. Instructions for the control of execution
if,
for,
while,
do while, switch,
break and
continue.
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 29
if instructions 1) if (expresie_conditie) instructiune;
2) if (expresie) {
instructiuni;
}
3) if (expresie) instructiune else instructiune;
4) if (expresie) {
instructiuni;
}
else
{
instructiuni;
}
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 30
5) test ? rezultat_adevarat : rezultat_false;
z = (x < y) ? x : y;
if ((a==true) || (b==false)) { ....}
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 31
switch switch (test) {
case valoareUnu : rezultatUnu;
break:
case valoareDoi : rezultatDoi;
break;
case valoareTrei : rezultatTrei;
break;
..
default : rezultatImplicit;
}
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 32
for loop
for (initialization; test; increment) instruction;
or
for (initialization; test; increment) {
instructions;
}
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 33
for (int i=0; i
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 34
while and do while while (condition) {
corpulBuclei;
}
do {
corpulBuclei;
} while (condition);
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 35
Example:
int contor=0;
while (contor < 10)
{
System.out.println(In bucla: contor= + contor);
contor++;
}
int i=1;
do {
System.out.println(In bucla: i= + i);
i++;
} while (i
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 36
Instructions: break and continue
label_1: while () {
if () break label_1; continue;
. }//end while
-
Tiberiu Leia: Software Engineering Java Programming Language Programming Basic Elements 37
*
****
***END***
****
*
-
Tiberiu Leia: Software Engineering Object Oriented Programming 1
3. Object Oriented Programming 1 (programarea orientat pe obiecte)
1. Justification
2. Objects
3. Classes
4. Fields
5. Methods
6. Constructors
7. Domains and visibility
8. Object creation and destruction
9. Inheritance
10. Aggregation
-
Tiberiu Leia: Software Engineering Object Oriented Programming 2
1. Justification
Object Oriented Programming (OOP) is an evolution of structured
programming.
Advantages:
development of software project is more easier
code reusing
divide the team work
program debugging
program maintenance, etc.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 3
Characteristics:
Everything is an object or a class
A program is a bunch of objects telling each other what to do by sending messages. Classes are accepted too.
Each object has its own memory made up of other objects
Every object has a type (class)
All objects of a particular type can receive the same messages.
An object has an interface=the request you can make of an object
the methods it implements.
The objects can be manipulated using their references.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 4
2. Objects
An object is a block of data and operations. The executions of operations
depend on the objects states.
The object has variables (attributes) instantiated and methods to
manipulate them, composing an atomic unit.
Usually only the services are visible. The implementations are concealed
partially or totally. Data and methods are encapsulated.
method = a way to do something = a service provided for other objects
Each object has a memory area. It is allocated at the object creation
(instantiation). The variables storied in the object memory area are named
instance variables. (variabile de instan)
-
Tiberiu Leia: Software Engineering Object Oriented Programming 5
Object
Method
Data
Message Answer
Fig. 3.1. Object structure
Encapsulation = the procedure to
pack the objects data and methods together. (ncapsulare)
An object has a visible part and a
hidden part. The encapsulation
conceals the object implementation
and forbid the access to data and
methods that are not public.
Operation solicitations are method calls = send messages
-
Tiberiu Leia: Software Engineering Object Oriented Programming 6
The messages contain:
different primitive data types simple data;
other objects = reference type data
registrations
The object chooses the method that fulfils the requested service.
polymorphism = methods accept interchangeable objects as parameters
methods implement the object behaviors
object creation a name is given to a region of storage
A method is a name for an action.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 7
3. Classes
class = a template for object creation (or instantiation). The objects
have specified properties.
Class = a structure that defines data and methods
A class is a classifier which describes a set of objects that share the same
features
constraints
semantics (meaning).
Class defines the object internal structure (attributes or properties) and describes its functionality (behavior) by methods
A class is a definition of properties common to a group of objects.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 8
class members
ClassName = identifier
Package
PackageName.ClassName
ClassName
Data fields
setData
methods
Message
Answer
General structure of a class
getData
Methods
Constructors
Method main
-
Tiberiu Leia: Software Engineering Object Oriented Programming 9
Features of a class are attributes and operations.
Attributes of a class are represented by instances of property that are owned
by the class. Some of these attributes may represent the navigable ends of
binary associations.
Objects of a class must contain values for each attribute that is a member of
that class.
A property is a structural feature which could represent an attribute of a
classifier or an attribute of association.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 10
Any non-abstract class can be instantiated.
When a class is instantiated
- the property represents a value or collection of values associated with an instance of one or more types.
The set of classifiers is called the context for the property.
In the case of an attribute the context is the owning classifier.
In the case of an association end the context is the set of types at the other
end or ends of the association.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 11
Inheritance (motenire)
superclass subclass subclassing Ex. class X extends Y
class SubClass extends SuperClass
C++ multiple inheritance
Java simple inheritance only one class can be inherited
immediate inherited
class hierarchies
SuperClass
+Attribute1+Attribute2
+Operation1()+Operation2()
SubClass
+Attribute3+Attribute4
+Operation1()+Operation3()+Operation4()
-
Tiberiu Leia: Software Engineering Object Oriented Programming 12
Object
attributes
methods
Class1
attributes
methods
Class2
attributes
methods
Class3
attributes
methods
All the hierarchies have Object
class as an ancestor direct or indirect inheritance
UML representation
of class extension
relation inheritance
Attribute - data that characterize a
class. Attributes are obtained by
abstraction of information
(processed by a point of view).
-
Tiberiu Leia: Software Engineering Object Oriented Programming 13
Creation of an object instantiation of a class
(instaniere)
Cannot be an object without the corresponding class
Not all the classes have to be instantiated.
How can be used the classes that are not instantiated?
-
Tiberiu Leia: Software Engineering Object Oriented Programming 14
Class definition
[modifiersList] class ClassName [extends SuperclassName]
[implements interfaceList]
{
ClassBody
}
[] optional.
modifierList keywords: public, abstract, final, etc.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 15
Class Members
Member domain
Type memberName; //declaration
{
//memberName domain
}
Access modifiers: public, protected and private.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 16
4. Fields
Class variables and instance variables (variabile de clas)
A variable is an item for data named by an identifier.
Class variables = static variables
They have static modifier.
Example:
static int i=5;//class variable
static Type variableName;
Reference manner:
ClassName.variableName
objectReference.variableName It is not accepted by all compilers for static variables!
-
Tiberiu Leia: Software Engineering Object Oriented Programming 17
Instance Variables (variabile de instan)
Example:
int i=5;//instance variable
Reference manner:
objectReference.variableName
-
Tiberiu Leia: Software Engineering Object Oriented Programming 18
Attribute declaration
Attributes are primitive data or reference data (constructed from class or
arrays).
[modifiersList] DataType variableDeclarationList;
modifierList contains:
access modifiers (public, protected or private)
final
static
transient and
volatile.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 19
DataType contains:
primitive data types
any class type
any interface reference type
any array (it is a class type).(tablou - vector)
variableDeclarationList
public int x=10, y, z; //instance variable
-
Tiberiu Leia: Software Engineering Object Oriented Programming 20
5. Methods method = function service or behavior
Method declaration
implementation = { //sequence of instructions }
A method has: definition and body
The method definition has:
return type of the variable may be void
name
list of arguments - may be empty. method signature = returnType+name+parameterList
-
Tiberiu Leia: Software Engineering Object Oriented Programming 21
Method declaration:
[modifierList] ReturnType methodName([argumentList]) [throws
exceptionList]
{
methodBody;
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 22
modifierList:
public Accessible for anybody
protected accessible by same package classes and subclasses outside the package
private accessible from the same class
abstract
static
final cannot be modified
synchronized for threads native native methods (C, C++, FORTRAN or assembly language).
-
Tiberiu Leia: Software Engineering Object Oriented Programming 23
The list of method arguments
variables declarations scope
In a class can be two or more methods with the same name. They have to
differ by:
number of parameters or their type
-
Tiberiu Leia: Software Engineering Object Oriented Programming 24
Example:
public class ClassName {
static void met1() {
System.out.prinln("Method1");
}
static void met2() {
System.out.println("Method 2");
}
public static void main(String args[]) {
met1();met2();
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 25
Method overwriting
Method signature
Overwriting a method in a subclass the method from the superclass is concealed in the subclass by the
new implementation
SuperClass
+Attribute1+Attribute2
+met1()+met2()
SubClass
+Attribute3+Attribute4
+met2()+met3()
public class SuperClass {
//attributes .
static void met1() {
System.out.prinln("Method1");
}
static void met2() {
System.out.println("Method 2");
}
}
public class SubClass extends SuperClass {
//attributes .
static void met2() {
System.out.prinln("Method2- SubClass");
}
static void met3() {
System.out.println("Method 3");
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 26
objectReference.methodName(); //instance method call
ClassName.methodName();/class method call
int a[]=new int[3]; // object creation
...........................
public void met(int arg[]) {
arg[0]=1;
arg[1]=2;
arg[2]=3;
return; // when return, the arrays elements are changed
}
.................
met(a); // method call
What does a[] contain after the return from the call?
-
Tiberiu Leia: Software Engineering Object Oriented Programming 27
Class methods with static modifier
and instance methods without static modifier
How can they be called?
ClassName.staticMethod()
objectReference.instanceMethod()
-
Tiberiu Leia: Software Engineering Object Oriented Programming 28
Math Class
(sin, cos, tan, random etc.)
float y=Math.sin(x);
-
Tiberiu Leia: Software Engineering Object Oriented Programming 29
6. Constructors
A class can have one or more constructors.
A constructor is a kind of specialized method that is called at the object
creation. It initializes some object data or creates some new reference data.
In a class can be more constructors with different numbers of arguments
or different types of arguments.
default constructor it has no arguments
-
Tiberiu Leia: Software Engineering Object Oriented Programming 30
Constructor declaration
The name must be the same of the class name. It cannot return any value
(including void).
[modifierList] ClassName([parameterList]) [throws exceptionList]
modifierList: private, protected, public, abstract, static, final, native,
synchronized.
The constructors body can contain as a first line:
this(parameterList)
or
super(parameterList)
-
Tiberiu Leia: Software Engineering Object Oriented Programming 31
Constructor signature
If a class has not any declaration of a constructor, the default constructor is used.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 32
public class Name extend SuperClassName{
public Name(int nr) { // constructor
super();
}
//Calling constructor from constructor
public Name(int nr, char c) { // constructor
this(nr); // call of the first constructor (SuperClassName)
}
public void methodName {//method
//method body
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 33
Class Extension
The constructor overwriting.
Initialization:
Primitive type: boolean char byte short int long float double
Implicit value false null 0 0 0 0L 0.0F 0.0d
-
Tiberiu Leia: Software Engineering Object Oriented Programming 34
Initializers (iniializatori)
String[] tablou=new String[] {
nume1, nume2, nume3 };
What does perform the following instruction?
System.out.println(tablou[0]);
-
Tiberiu Leia: Software Engineering Object Oriented Programming 35
7. Domains and visibility (domeniu i vizibilitate)
Variables and methods domains (scope) and visibility depend on the
place where they were defined.
C language allows global data and global functions. It is not the case of
Java.
Domain = scope
A variable scope is the region of a program where the variable can be
referred to by its simple name.
Scope visibility
Visibility determines whether the variable can be used from outside of the
class within it is declared. Visibility is set with an access modifier.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 36
In some part of a program, a variable can be shadowed by other
declarations. There, the variable name is used by another declaration.
Unlike other language, some Java compilers do not accept the
construction:
{
int a=1;
{
int a=2;
a= ;// confusion which a?
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 37
8. Object Creation and Destruction (crearea i distrugerrea obiectelor)
Creation
An object (instance) is created dynamically using a class or an array type.
Creation with new operator:
String str = new String();
ClassName objectReference = new ClassName();
-
Tiberiu Leia: Software Engineering Object Oriented Programming 38
Initialization order when a class is instantiated using a superclass: 1. initialization of static attributes from the superclass 2. initialization of static attributes of the subclass 3. initialization of instance attributes from the superclass 4. constructor call of the superclass 5. initialization of instance attributes of the subclass 6. call of the subclass constructor
-
Tiberiu Leia: Software Engineering Object Oriented Programming 39
Example:
System.out.println(str);
System
System.out is an instance of PrintStream.
method println()
-
Tiberiu Leia: Software Engineering Object Oriented Programming 40
Operatorul instanceof
boolean b= referinta instanceof NumeClasa;
b takes true if referinta is an instance of the class NumeClasa.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 41
Distruction
String s=new String(); //
............................
s=null; //the object is no anymore referred by s
System.gc(); // call the execution immediately of the garbage collector
-
Tiberiu Leia: Software Engineering Object Oriented Programming 42
Execution of an application
public void static main(String[] args) { ... }
The class that implements the method main() is not automatically
instantiated.
How can be used non static variable declared outside main method?
What kind of variables can be used in static methods?
-
Tiberiu Leia: Software Engineering Object Oriented Programming 43
Object Class
Constructor:
public Object()
It is in the package java.lang.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 44
Object Class methods:
public native Object clone() throws CloneNotSupportedException
public boolean equals(Object obj)
protected void finalize() throws Throwable
public final native Class getClass()
public final native void notify()
public final native void notifyAll()
public String toString()
public final void wait() throws InterruptedException
public final void wait(long timeout) throws InterruptedException
public final void wait(long timeout, int nanos) throws InterruptedException
-
Tiberiu Leia: Software Engineering Object Oriented Programming 45
Example of Program: Complex Numbers /* Clasa pentru crearea si utilizarea numerelor complexe z=a+ib */ public class Complex { //Date pentru stocarea informatiilor (starea) numarului complex: double a,b; //Cum sunt initializate? //Constructori: //Constructor implicit suprascris public Complex() { a=0; b=0; } //Constructori cu parametrii public Complex(double x, double y) { a=x; b=y; }
-
Tiberiu Leia: Software Engineering Object Oriented Programming 46
public Complex(Complex c) { a=c.a; b=c.b; } //Metoda statica ce aduna doua numere complexe si returneaza rezultatul public static Complex add2(Complex z1,Complex z2) { Complex z=new Complex(); z.a=z1.a+z2.a; z.b=z1.b+z2.b; return z; }
-
Tiberiu Leia: Software Engineering Object Oriented Programming 47
//Metode de instanta public void putAdd(Complex c) {//aduna parametrul la numarul curent si memoreaza rezultatul a=a+c.a; b=b+c.b; return; } public Complex getAdd(Complex c) { Complex z=new Complex(); //variabila temporara z.a=a+c.a; z.b=b+c.b; return z; } //Subtract methods Completati cu metodele corespunzatoare! //Multiply methods Completati cu metodele corespunzatoare!
-
Tiberiu Leia: Software Engineering Object Oriented Programming 48
//Divide methods Completati cu metodele corespunzatoare! //Metoda de conversie a numarului complex intr-un String (a,ib) // Completati cu metoda corespunzatoare! public String toString() //Suprascrie metoda din clasa Object { String s=new String(); s="("+a+",i"+b+")"; return s; } }
-
Tiberiu Leia: Software Engineering Object Oriented Programming 49
/* Clasa de testare a utilizarii numerelor complexe */ public class TestComplexe { public static void main(String[] args) { //Instantiaza doua numere complexe Complex c1=new Complex(2.1,3.2); Complex c2=new Complex(3.3,4.4); c1.putAdd(c2); Complex c3=c1.getAdd(c2); //Afiseaza rezultatele calculelor System.out.println("c1="+c1+"; c2="+c2+"; c3="+c3); } }
-
Tiberiu Leia: Software Engineering Object Oriented Programming 50
Problems:
1) Fill the Complex class with others methods.
2) Transform the program in one that works with complex numbers of the
type float.
Suggestions:
float x=(float) 3.4;
double y=(double) x;
float z=(float) y;
-
Tiberiu Leia: Software Engineering Object Oriented Programming 51
Class Diagram
A Class diagram shows the existence of classes and relationships in a logical view of a system.
TestComplexe
+main(String[]): void
Complex
+a: double = 0+b: double = 0
+add2(Complex, Complex): Complex+putAdd(Complex): void+getAdd(Complex): Complex+toString(): String
ClassName
+attribute1+attribute2: data_type+attribute3: data_type = i_value
+operation1()+operation(arg_list): result_type
-
Tiberiu Leia: Software Engineering Object Oriented Programming 52
TestComplexe
+main(String[]): void
Complex
+a: double = 0+b: double = 0
+add2(Complex, Complex): Complex+putAdd(Complex): void+getAdd(Complex): Complex+toString(): String
System
+out: PrintStream
+print(String): void+println(String): void
Class TestComplexe uses class System.
System should be included (import) into
application.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 53
9. Inheritance + modifiers
The procedures used to construct classes from other classes are extension,
composition or aggregation.
Inheritance is a procedure to transmit the behavior and attributes of
a class to another one.
The class that inherits has the behavior and the attributes of the inherited
class.
Inherited class = superclass,
The class that inherits is subclass.
subclassing . class hierarchy.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 54
Object
attributes
methods
Class1
attributes
methods
Class2
attributes
methods
Class3
attributes
methods
All the hierarchy have the
Object class on their top All the classes extend directly or
indirectly Object class.
UML representation
of the extension
relation
inheritance
-
Tiberiu Leia: Software Engineering Object Oriented Programming 55
The member of a class declared private are not inherited by their
subclasses.
The members of a class declared protected or public are inherited by the
classes included into packages that dont contain the superclass.
If a class inherits an abstract method, it has to implement it, or the class
must be declared abstract.
- abstract method = method without implementation
-
Tiberiu Leia: Software Engineering Object Oriented Programming 56
Example class Class1 { int p1=1; public void met1() { System.out.println("Metoda met1()"); } } class Clasa2 extends Class1 { //Extindere int p2=2; public void met2() { System.out.println("Metoda met2()"); } }
Class1
+p1: int = 1
+met1(): void
Class2
+p2: int = 2
+met2(): void
MainClass
+main(String[]): void
-
Tiberiu Leia: Software Engineering Object Oriented Programming 57
public class MainClass { public static void main (String[] args) { Clasa1 ob1=new Clasa1();//Aggregation Clasa2 ob2=new Clasa2();//Agreggation System.out.println("Object ob1 has p1= "+ob1.p1);
System.out.println("Object ob2 has p1="+ob2.p1+"; p2="+ob2.p2);
ob1.met1(); ob2.met1(); ob2.met2(); } }
-
Tiberiu Leia: Software Engineering Object Oriented Programming 58
10. Aggregation (agregare) A program can be also developed by aggregation or composition.
Aggregation = a whole is made of (physically composed of) its parts.
unidirectional association. There are two kinds of aggregations.
a) Composition = Strong aggregation (compoziie) The instance of ClassA is responsible of creation of the instance of
ClassB. If the instance of ClassA is deleted, the instance of ClassB is deleted
too.
An object of type ClasaA (representing the whole) is direct responsible for
creating its parts of type ClasaB. BIDIRECTIONAL NAVIGABILITY?
ClasaA
attributes
methods
ClasaB
attributes
methods
1 n
Strong aggregation (composite
aggregation)
-
Tiberiu Leia: Software Engineering Object Oriented Programming 59
An object of type ClasaA are in association relation with n objects of type
ClasaB. n = * ; or n=1
Some typical examples of multiplicity bounds:
0 Collection must be empty
1 Exactly one instance
5 Exactly 5 instances
* Zero or more instances
0..1 No instances or one instance
1..1 Exactly one instance
0..* Zero or more instances
1..* At least one instance
m..n At least m but no more than n instances
The solid diamond denotes composition. The strong form of aggregation is
characterized by the fact that components cannot exist without the
aggregate. They have the same life span.
-
Tiberiu Leia: Software Engineering Object Oriented Programming 60
Implementation:
Variant 1)
class ClasaA {
ClasaB cb=new ClasaB();
...........................
}
Variant 2)
class ClasaA {
ClasaB cb;
ClasaA() {
cb=new ClasaB();
.....................
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 61
Variant 3)
class ClasaA {
ClasaB cb;
ClasaA(Type x) {
cb=new ClasaB(x);
.....................
}
}
How can be implemented for n?
How can be implemented BIDIRECTIONAL NAVIGABILITY and how
can be tested the bidirectional navigation?
-
Tiberiu Leia: Software Engineering Object Oriented Programming 62
Light aggregation (Shared aggregation)
ClassA uses ClassB
ClassA not necessarily contains
an instance of ClassB.
If an object of ClassA is not
necessarily the owner of an
instance of ClassB, then the last
can be included in different
instances of ClassA.
The instance of ClassA and the
instance of ClassB dont have necessarily the same life span (time).
ClassA ClassB1 +1..*
Target Source
Light Aggregation
-
Tiberiu Leia: Software Engineering Object Oriented Programming 63
public class ClassB {
ClassA parent;
int valB;
String name;
public ClassB(ClassA ref, String nm) {
parent=ref;
name=new String(nm);
}
public void metB() {
System.out.println("metB: this is "+name+" that has valB= "+valB);
System.out.println("metB: parent is "+parent.name+" that has valA=
"+parent.valA);
}
}
public class ClassA {
String name;
ClassB child;
int valA;
public ClassA(String nm){
child=new ClassB(this,"ObjectB");
name=nm;
}
public void metA(){
System.out.println("metA: "+name+": valA="+valA);
System.out.println("metA: child= "+child.name+":
valB="+child.valB);
}
}
public class MainClass {
public static void main(String[] args) {
ClassA obA=new ClassA("ObjectA");
obA.metA(); obA.child.metB();
obA.valA=2;
obA.child.valB=2;
obA.metA(); obA.child.metB();
obA.child.valB=3;
obA.child.parent.valA=5;
obA.metA(); obA.child.metB();
}
}
MainClass
+obA: ClassA
+main(): void
ClassA
+obB: ClassB+valA: int
+metA(): void
ClassB
+valB: int
+metB(): void
REZULTS: (CONSOLE OUTPUT)
metB: parent is ObjectA that has valA= 0
metA: ObjectA: valA=2
metA: child= ObjectB: valB=2
metB: this is ObjectB that has valB= 2
metB: parent is ObjectA that has valA= 2
metA: ObjectA: valA=5
metA: child= ObjectB: valB=3
metB: this is ObjectB that has valB= 3
metB: parent is ObjectA that has valA= 5
-
Tiberiu Leia: Software Engineering Object Oriented Programming 64
public class ClassB {
ClassA parent;
int valB;
String name;
public ClassB(ClassA ref, String nm) {
parent=ref;
name=new String(nm);
}
public void metB() {
System.out.println("metB: this is "+name+" that has valB= "+valB);
System.out.println("metB: parent is "+parent.name+" that has valA= "+parent.valA);
}
}
MainClass
+obA: ClassA
+main(): void
ClassA
+obB: ClassB+valA: int
+metA(): void
ClassB
+valB: int
+metB(): void
-
Tiberiu Leia: Software Engineering Object Oriented Programming 65
public class ClassA {
String name;
ClassB child;
int valA;
public ClassA(String nm){
child=new ClassB(this,"ObjectB");
name=nm;
}
public void metA(){
System.out.println("metA: "+name+": valA="+valA);
System.out.println("metA: child= "+child.name+":
valB="+child.valB);
}
}
MainClass
+obA: ClassA
+main(): void
ClassA
+obB: ClassB+valA: int
+metA(): void
ClassB
+valB: int
+metB(): void
-
Tiberiu Leia: Software Engineering Object Oriented Programming 66
public class MainClass {
public static void main(String[] args) {
ClassA obA=new ClassA("ObjectA");
obA.metA(); obA.child.metB();
obA.valA=2;
obA.child.valB=2;
obA.metA(); obA.child.metB();
obA.child.valB=3;
obA.child.parent.valA=5;
obA.metA(); obA.child.metB();
}
}
MainClass
+obA: ClassA
+main(): void
ClassA
+obB: ClassB+valA: int
+metA(): void
ClassB
+valB: int
+metB(): void
-
Tiberiu Leia: Software Engineering Object Oriented Programming 67
Light (Indirect) aggregation
UNIDIRECTIONAL NAVIGABILITY
An object of type ClasaA (representing the whole) is not necessarily direct
responsible of creating its part of type ClasaB. The objects dont have the same life span.
An object type ClasaA is in relation with n objects of type ClasaB.
n = * ; or n=1
ClasaA
attributes
methods
ClasaB
attributes
methods
1 n
Indirect Aggregation
-
Tiberiu Leia: Software Engineering Object Oriented Programming 68
Implementation:
How can be implemented for n?
class ClasaC {
......................
static ClasaB metoda(Type par) {
......................................
ClasaB b=new ClasaB(par);
......................................
return b;
}
}
class ClasaA {
ClasaB cb;
...................
ClasaA(Type par) {
cb=ClasaC.metoda(par);
..............................
}
...................
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 69
ClassO
attributes
methods
Class1
attributes
methods
Class2
attributes
methods
Class3
attributes
methods
Class1 i Class2 aggregate ClassO Class3 aggregates Class2
How can this be implemented in Java?
Homework: build an example
UML representation
of aggregation
relation
-
Tiberiu Leia: Software Engineering Object Oriented Programming 70
Example: /* Program*/
public class Class1 {
public static void main(String args[]) {
Class1 ob1=new Class1();// Self instantiation
Class2 ob2=new Class2(); //Instantiation of another class
System.out.println("Intrare main()");
ob1.met1();
ob2.met2();
}
public void met1() {
System.out.println("Mesaj: metoda1");
}
}
class Class2 {
public void met2() {
System.out.println("Mesaj: metoda2");
}
}
-
Tiberiu Leia: Software Engineering Object Oriented Programming 71
Homework: Draw the diagram that describes the relations between
classes of the previous program!
-
Tiberiu Leia: Software Engineering Object Oriented Programming 72
*
****
***END***
****
*
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 1
Object Oriented Programming 2 1. Abstract class
2. Interfaces
3. Polymorphism
4. Nested classes
5. Nested classes in methods
6. Casting objects and primitive data
7. Comparison of objects.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 2
Class ====== Abstract class ======= Interfaces
Reducing of information in implementation
Abstract classes can be used for:
extension inheritance nested classes
polymorphism
call of implemented methods
data
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 3
1. Abstract Classes
public abstract class NumeClasaAbstracta {
// corpul clasei
abstract void numeMetoda(Type x, Type y);//nu are implementarea aici
// Pot fi introduse si metode cu implementari
}
Abstract classes may have constructors.
Abstract classes cannot be instantiated.
Circle
+center: Point+radious: float
SteeringWheel
+rotate()
Wheel
+rotate()
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 4
2. Interfaces
An interface is a collection of method names (declaration) without
implementation and fields. They have only the
methods signature. An interface is a contract between a class and the
outside world.
The objects created with a class that implements an
interface have the behavior given by the methods
declared in interface.
An interface defines a communication protocol
between objects.
Interfaces dont belong to class hierarchies.
dynamic binding postpone the taking of decisions of object membership.
Inter
+met1()+met2()
ClassX
+met1()+met2()+met3()
ClassY
+met1()+met2()+met4()
Inter2
ClassA
+met1()+met2()
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 5
Interface reasons: To obtain objects with similar
features (static variables, methods with the same
signatures).
The interfaces can be used to refer defined
methods without taking into account their
localization.
It is used for the collaboration with objects
constructed with different classes.
Ex.: A method that sends object through a
communication channel the method knows the classes used to construct the objects only during
the runtime.
Dynamic binding (legare dinamic) Methods, that that have as parameters new object types, do not need recompilations of the entire program.
Interfaces can be used to refer different types of objects.
Inter2
Inter1
+met1()+met2()
Inter3
+met1()+met2()+met3()+met4()
ClassX
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 6
Interfeele maximizeaz utilizarea legrii dinamice permind obiectelor s fie accesate independent de detaliile lor de implementare. De exemplu, se pot utiliza n metode parametrii formali care sunt definii ca tipuri de interfee. Interfeele susin motenirea selectiv prin faptul c pot fi preluate din clase subseturi de trsturi ale altor clase, deoarece clasele pot implementa mai multe interfee.
O interfa poate avea ca membrii: clase, interfee, cmpuri i metode. Acetia sunt fie declarai n interfa, fie sunt motenii. Ca i la clase, o interfa poate avea mai multe cmpuri cu acelai nume motenite din interfee diferite, dar referirea lor ca nume simple este semnalat ca eroare de compilator. Variabilele declarate ntr-o interfa sunt disponibile ca i constante n clasele care o implementeaz. Ele sunt implicit static i final.
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 7
Interfeele nu sunt afectate de schimbrile din unele clase particulare sau de modificri ale ierarhiei de clase.
O clas care nu este abstract trebuie s implementeze toate metodele interfeei care nu sunt implementate n superclasa ei (dac aceasta este abstract). Interfeele pot fi definite n fiiere surs (cu extensia java) ca i clasele normale. La compilare se obine fiiere cu extensia class. Nu se poate instania o interfa, dar se pot crea metode care returneaz obiecte ce provin din clase care implementeaz interfaa. Interfeele sunt doar implementate, specificare care se face ca n exemplul de mai jos:
public class NumeClasa implements NumeInterfata {
.................
}
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 8
Clasa NumeClasa va avea obligatoriu toate metodele descrise n interfaa NumeInterfata.
Dup ce o clas implementeaz o interfa (completnd secvenele de cod care reprezint metodele acesteia), subclasele ei le motenesc pe toate fr a mai fi necesar suprascrierea (sau implementarea) lor.
n subclas nu mai este nevoie s se menioneze c implementeaz interfaa implementat de superclas.
n Java se permite implementarea (multipl) mai multor interfee de ctre o clas. Se poate da o list de interfee.
Interfeele nu fac parte din ierarhia de clase!
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 9
Ex.: methodName(InterfaceType objRef)
public class NumeClasa implements NumeInterfata {
.................
}
Java accepts that a class implements a list
of interfaces.
public class NumeClasa implements Inter1 Inter2 Inter3 {
.................
}
I1 I2 I3
ClassX
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 10
Eg. of implementation:
public interface NumeInterfata {
..............
public void numeMetoda();
public void altaMetoda();
}
class NumeClasa implements NumeInterfata { ..... }
It is accepted:
NumeInterfata obiectExecutabil=new NumeClasa(); //???
-
Tiberiu Leia: Ingineria sistemelor de programe Programarea orientat pe obiecte II 11
Exemplu /** Testarea referintelor pentru extinderi si conversii */
public class Class1
{
public static void main (String args[])