+ All Categories
Home > Documents > Cursuri ISP Letitia

Cursuri ISP Letitia

Date post: 21-Jul-2016
Category:
Upload: haiduc-gelu
View: 69 times
Download: 9 times
Share this document with a friend
Description:
Toate cursurile la isp an 2013-2014
834
Tiberiu Leţia: Ingineria Sistemelor de Programe Introducere 1 Ingineria Sistemelor de Programe Software Engineering
Transcript
  • 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[])


Recommended