Sunteți pe pagina 1din 51

Sisteme in Timp Real

Semestrul I 2013 2014

Curs 2 Introducere in OOP

11.10.2013

Curs 2 STR

Cuprinsul cursului 2

Descrierea structurii unui sistem utilizand limbajul U !

Obiecte

Descrierea comportamentului unui sistem utilizand U ! Partea I" O pri#ire de ansamblu asupra obiectelor si a bene$iciilor utilizarii abordarii orientate spre obiecte pentru proiectarea si dez#oltarea aplicatiilor so$t%are& Comparatie intre OOP si abordarea procedurala& Identi$icarea a#antajelor abordarii OOP& Partea a 2'a" OOP este in mod $undamental di$erita de dez#oltarea procedurala& Se poate pro(rama in )a#a $ara sa intele(em obiectele* deoarece putem scrie cod procedural in orice limbaj& Insa* pentru a utiliza la ma+im bene$iciile OOP* trebuie sa $olosim conceptele asociate obiectelor pentru scrierea de cod& ,ceasta sectiune introduce conceptele re$eritoare la obiecte si le e+empli$ica cu ajutorul codului )a#a& Partea a 3'a" ,ceasta sectiune prezinta si e+plica cele trei principii ale OOP" incapsulare* mostenire* si polimor$ism&

11.10.2013

Curs 2 STR

1& Structura

Cum descriem structura unui sistem utilizand U !

obiecte

11.10.2013

Curs 2 STR

Obiecte

obiectul reprezinta unul dintre elementele de baza ale unui model U ! un obiect poate reprezenta un sistem* un subsistem* sau o clasa so$t%are speciala intr'un limbaj de pro(ramare Definitii

Un obiect reprezinta ce#a din lumea reala sau un concept* care are autonomie Un obiect este o entitate $ormata din date si operatiile care actioneaza asupra acestor date Un obiect este un lucru care are o inter$ata care asi(ura protectia incapsularii structurii sale interne
11.10.2013 Curs 2 STR 4

Obiecte

.iecare obiect are"

Responsabilitati

Ce $ace obiectul- De ce e+ista obiectul,cestea sunt datele interne ale obiectului /pot a#ea o #aloarea $i+a sau #ariabila0 ,cestea sunt actiunile pe care le poate e+ecuta obiectul pentru a'si indeplini responsabilitatile

Atribute

Comportament

11.10.2013

Curs 2 STR

1+emplu ' radio

Responsabilitati

Permite utilizatorului sa asculte un post de radio pe o anumita $rec#enta !un(imea de unda .rec#enta 2olum Sc3imba $rec#enta emoreaza 4 recall o $rec#enta odi$ica #olumul Opreste 4 porneste
Curs 2 STR 6

Atribute

Comportamente

11.10.2013

1+emplu aparat $oto di(ital

Responsabilitati

.ace $oto(ra$ii in $ormat di(ital emoria disponibila 5ezolutia ima(inii 6i#elul bateriei Selectarea rezolutiei .ocalizare .ace poza Incarca $oto(ra$ii
Curs 2 STR 7

Atribute

Comportamente

11.10.2013

1+emplu cuptor cu microunde

Responsabilitati

&&&& &&&& &&& &&& &&& &&&& &&& &&&


Curs 2 STR 8

Atribute

Comportamente

11.10.2013

Obiectele pot $i &&&

So$t%are t3in(s Occup7 memor7 at some point in time

.or e+ample* Customer5ecord* 1C8Sample* 9indo%* .ont

1lectronic t3in(s Occup7 p37sical space at some point in time

.or e+ample* :3ermometer* !CDDispla7*

otionSensor* DC otor

ec3anical t3in(s Occup7 p37sical space at some point in time

.or e+ample* 9in(Sur$ace* 8ear* Door* ;7draulicPress

C3emical t3in(s Occup7 p37sical space at some point in time

.or e+ample* <atter7* 8as i+ture* ;alot3ane

S7stem t3in(s Occup7 p37sical space at some point in time


Curs 2 STR 9

11.10.2013

Identitatea obiectelor

:oate obiectele sunt unice c3iar daca atributele lor sunt de acelasi tip e&(& in aceasta camera sunt mai multe tele$oane mobile* unele dintre ele $iind identice

C3iar daca sunt identice* ele sunt unice

:ele$onul lui i3ai

:ele$onul lui 8i(i

:ele$onul lui ,lin

11.10.2013

Curs 2 STR

10

Perspecti#e asupra obiectelor

In (eneral sunt doua perspecti#e asupra obiectelor"

Perspecti#a publica

Ce se #ede din a$ara obiectului

Perspecti#a pri#ata

Interiorul obiectului* accesul este controlat si ascuns $ata de lumea e+terioara

11.10.2013

Curs 2 STR

11

2& Comportament

Cum descriem comportamentul unui sistem utilizand U !

2ezi lab 2 =

11.10.2013

Curs 2 STR

12

1+emplu Count Do%n

11.10.2013

Curs 2 STR

13

1+emplu CountDo%n

Sursa )a#a import ja#a&util&:imer> import ja#a&util&:imer:as?> public class CountDo%n @ public static #oid main/$inal Strin( ar(sAB0 @ $inal :imer timer C ne% :imer/0> timer&sc3edule,t.i+ed5ate/ne% :imer:as?/0 @ int i C 10> public #oid run/0 @ S7stem&out&println/i''0> i$ /i D 00 timer&cancel/0> E 44 end run E* 0* 1F10000> 44 end Sc3eduler E 44 end main E 44 end class

11.10.2013

odel 5ational 53apsod7 ' U !

Curs 2 STR

14

Partea 1 Introducere" Pro(ramarea orientata spre obiecte

11.10.2013

Curs 2 STR

15

Ce inseamna OO?

Un nou mod de a (andiUn nou tip de inter$ata utilizatorO noua metodolo(ie de dez#oltare a inter$etelorUn nou limbaj de pro(ramare,plicatii %eb'based-

11.10.2013

Curs 2 STR

16

Programare orientata spre obiecte

OOP inseamna a dez#olta so$t%are pe baza obiectelor

in OOP* atat datele cat si lo(ica de pro(ramare /cod 4 $unctii0 sunt incapsulate in obiect Date si cod incapsulate /combinate0 intr'un obiect Datele si operatiile care manipuleaza datele /codul0 sunt separate Datele sunt separate lo(ica de pro(ramare /cod 4 $unctii0

Pro(ramarea procedurala sau structurala se concentreaza asupra $unctiilor


OO se $ocalizeaza pe combinarea $unctiilor si datelor&

11.10.2013

Curs 2 STR

17

Ce nu este OT (Object Technology)

Un alt limbaj de pro(ramare"

O: reprezinta un nou mod de (andire re$eritor la dez#oltarea aplicatiilor so$t%are patrunde in intre(ul ciclu de #iata al dez#oltarii aplicatiei nu taie in mod automat costurile* construieste sisteme mai bune* usureaza intretinerea* creste #iteza de dez#oltare a aplicatiei necesita e+perienta OO este cunoscuta apro+& de la s$irsitul anilor IJ0

Un G(lont de ar(intH"

Un G$las3 in t3e panH"

11.10.2013

Curs 2 STR

18

!olutia limbajelor "e programare "e scop general


Co" masina (anii #$% & #'%) Dependent de ar3itectura on 3ard%are 6u $ace distinctie intre instructiuni e+ecutabile si date Co" in limbaj "e asamblare (anii #'% ( #)%) Cod relocabil cod $ara adresa $i+a dar 3ard%are speci$ic <ranc3 or lin? instructions led to spa(3etti code 1+ecutable instructions and data still Pro(rammable in modules %it3 lin?'load to create e+ecutable %3ole A *&a generatie (anii #+% pana in ,--%) Compilatoarele translateaza cod scris in limbaje de ni#el inalt /e&(& .ortran* P!1* CO<O!* 5PC* C* etc0 in limbaj de asamblare Sursa este dependenta de plat$orma* codul e+ecutabil este 3ard%are speci$ic Separarea codului de date Subpro(rame 4 subrutine 4 $unctii 4 metode .imbaje interpretate(,-/% pana in ,--%) )ust'in'time translation $rom source to e+ecutable code 11.10.2013 <,SIC* !ISP* ,P!* ,P!* Curs etc 2 STR

19

!olutia stilurilor "e programare

Cea de'a 3'a (eneratie de limbaje de pro(ramare asi(ura practici de scriere a codului care $ac posibila imbunatatirea calitatii* $iabilitatii* readabilit7 si intretinerii codului

11.10.2013

Procedural" 1+ecutie sec#entiala 1+ecutie conditionala* bucle* (o sau rami$icatie care sc3imba $lu+ul de control al pro(ramului ,pelul subrutinelor si return din subrutine Structurala" Descompune $unctionalitatea in subpro(rame apelabile Inlocuieste (o to cu blocuri de cod nested Utilizare e+tensi#a a apelurilor si return'urilor din subrutine Pro(ramare modulara" 8rupeaza subrutinele cu $unctionalitate inrudita in module Orientare spre obiecte Sc3imbare de paradi(ma catre obiecte reutilizabile care contin date si comportament Orientare catre ser#icii Sc3imbare de paradi(ma catre obiecte reutilizabile care contin Curs 2 STR 20 date si comportament

.imbaje "e programare orientate spre obiecte (e0emple)

Simula si Simula JK /anii IJ00 Precursorul OO Smalltal? /anii IK0 ' IL00 !imbaje OO pure deri#ate partial din Simula Introduc meta$ora transmiterii mesajelor* ierar3ii de clase edii de dez#oltare inte(rata distincte si codare #izuala CMM /anii IN0s ' IL00 Un 3ibrid intre (ramatica limbajului C (rammar cu constructii obiectuale adau(ate limbajului Di$icil de (estionat" de cele mai multe ori utilizat ca si C Di$icil de implementat un compilator e$icient

)a#a /din anii IL0 pana in prezent0 !imbaj OO neutru din punct de #edere ar3itectural /Sun icros7stems0 Similar cu CMM* dar $oarte mult simpli$icat , e#oluat catre o plat$orma 11.10.2013 Curs 2 STR dominanta de pro(ramare

21

De ce programare orientata spre obiecte

Pro(ramnarea OO asi(ura" Un mod natural de (andire

Despre domeniul problemei* nu despre procese si proceduri Se adapteaza modi$icarii cerintelor ,dopta cu impact minim te3nolo(ie noua* mai buna* mai ie$tina 8estioneaza e+tensibilitatea sistemului 6u doar cop7 4 paste 4 edit Utilizeaza codul e+istent si construieste deasupra lui

,bilitatea de suporta sc3imbari"


5eutilizarea codului

11.10.2013

Se obtine cod care poate $i intretinut si actualizat


Curs 2 STR 22

Despre "ate si functii

,bordarea procedurala"

Datele si $unctiile sunt (estionate separat 6u poate $i impusa o modalitate uzuala de a accesa datele Datele si $unctiile sunt combinate in obiecte

,bordarea OO"

.unctiile de#in GcomportamentulH obiectelor

Utilizarea unui obiect necesita doar cunoasterea numelui $unctiilor ,scunderea datelor si metodelor /$unctiilor0 in interiorul obiectelor se numeste incapsulation

11.10.2013

Curs 2 STR

23

Date si functii1 abor"area proce"urala

11.10.2013

Curs 2 STR

24

Date si functii1 abor"area OO

11.10.2013

Curs 2 STR

25

2o"elare si co"1 e0emplu

Cerinta"

Sa se modeleze retra(erea de bani dintr'un cont de economii Identi$ica locul in care sunt memorate datele !isteaza pasii al(oritmici necesari Identi$ica obiectele implicate 1+emplu" <an?* sa#in(s account* teller si transaction ,rata cum anume interactioneaza aceste obiecte"

,bordarea procedurala

,bordarea obiectuala

Impune re(uli /business rules0 pentru retra(ere Decrementeaza balanta


Curs 2 STR 26

11.10.2013

A!antaj OOP1 reutili3area co"ului

Procedural Din cauza lipsei incapsularii este di$icil sa se identi$ice oportunitatile de reutilizare a codului 5eutilizarea apare la ni#el procedural Obiecte

Reutili3area co"ului1 scrierea $unctiilor o sin(ura data si utilizarea lor in alte obiecte /similar abordarii procedurale0 Reutili3area obiectelor sau a multimilor "e obiecte1 acestea sunt obiecte de lucru /business objects0 si pot $i utilizate in scop (lobal /t3rou(3out t3e enterprise0 Reutili3area numelui functiilor sau a multimilor "e nume "e functii" in abordarea procedurala nu pot e+ista mai multe $unctii cu acelasi nume* dar in cazul obiectelor un nume de $unctie poate $i reutilizat pentru di$erite obiecte cu di$erite implementari
Curs 2 STR 27

11.10.2013

Abor"area proce"urala

5eutilizarea codului este limitata 5eutilizarea codului se $ace prin apelul procedurilor din alte proceduri

11.10.2013

Curs 2 STR

28

OOP facilitea3a reutili3area co"ului

11.10.2013

Curs 2 STR

29

OOP facilitea3a reutili3area obiectelor

11.10.2013

Curs 2 STR

30

OOP facilitea3a reutili3area numelor

11.10.2013

Curs 2 STR

31

Partea a II'a Concepte "espre obiecte

11.10.2013

Curs 2 STR

32

Ce este un obiect?

O entitate de sine statatoare $ormata din date si din metode /$unctii0 care opereaza asupra datelor Un obiect este o combinatie de date si metode

4ncapsularea inseamna cuprindere /enclosing0* ascundere /hiding0 sau continut /containing0


Datele sunt incapsulate Se spune clientilor care metode e+ecuta un anumit tas? si cum pot ele $i apelate dar nu se comunica si detaliile despre cum imi e+ecuta $iecare metoda scopul

11.10.2013

Curs 2 STR

33

5n obiect real

Iata o persona* )im& )im are o anumita suma de bani& Cum putem a$la cati bani are )im-

11.10.2013

Curs 2 STR

34

Obiectul Person

Cati bani are )im-

11.10.2013

Curs 2 STR

35

2esaje

Obiectele comunica prin transmiterea mesajelor GCati bani-H este un e+emplu de mesaj trimis obiectului perosna* )im :ransmiterea mesajelor este sin(ura modalitate prin care obiectele pot comunica in mod direct 6u este disponibil nici un alt mecanism :rasmiterea unui mesaj este un concept di$erit de apelul unei $unctii"

,pelul unei $unctii indica $aptul ca ai identi$icat actuala implementare /codul0 care #a $i e+ecutata :ransmiterea unui mesaj este doar o cerere de ser#iciu adresata unui obiect Obiectul determina ce trebuie sa $aca

Obiecte di$erite pot implementa acelasi mesaj in mod di$erit


Curs 2 STR 36

11.10.2013

5n alt obiect1 cont bancar

11.10.2013

Curs 2 STR

37

Doua pespecti!e asupra obiectului cont

11.10.2013

Curs 2 STR

38

4ntrebari

Daca a#em mai multe obiecte* implementarea mesajelor se repeta pentru $iecare obiectCum putem sti ce mesaje poate intele(e un anumit obiectCe elemente date #a a#ea un anumit obiect-

11.10.2013

Curs 2 STR

39

Clase

O clasa este o abstractizare a unei multimi de obiecte Un obiect este o instanta a unei clase Instantele si obiectele sunt sinonime O clasa de$ineste" 1lementele de tip date pe care le are $iecare instanta esajele pe care le poate primi $iecare instanta etodele Implementarea mesajelor pe care $iecare instanta le poate primi De$initia unei clase este o sc3ita Un obiect este construit con$orm unei sc3ite
Curs 2 STR 40

11.10.2013

Cum "efinim o clasa

6ume 6umele clasei trebuie sa speci$ice la ce anume astractizare se re$era clasa& 6umele clasei poate" .i sin(ular Sa identi$ice conceptul Sa nu $ie prea #a( sau (eneral Sa $ie scurt si concis !ista de elemente de tip date <ucatile de date care trebuie sa $ie capturate pentru abstractizare

!ista de mesaje esajele /si implementarea lor* metodele0 pe care abstractizarea le poate primi

11.10.2013

Curs 2 STR

41

Definirea unei clase 6a!a


1+emplu declaratie clasa O clasa reprezinta un model /template0 al unui obiect indi#idual De$initia clasei speci$ica din ce anume este compus $iecare obiect Campul clasei reprezinta date etodele clasei reprezinta comportament

public class BankAccount { // attribute is balance private double balance;

// methods operate on the balance public double deposit( double amount) { balance += amount; return balance; } public double withdraw( double amount) { balance -= amount; return balance; }
Curs 2 STR

} 11.10.2013

42

4ncapsularea "atelor intr&o clasa 6a!a

1+emplu ca camp pri#at

Doar aceasta clasa poate accesa campul balance private double balance;

1+emplu de metoda publica de acces /public accessor method0

,lte clase pot intreba care este balanta contului

public double etBalance() { return balance; } ,lte clase pot modi$ica balanta doar apeland metodele deposit sau withdraw

11.10.2013

Curs 2 STR

43

4nstantierea unui obiect in 6a!a

Obiectele au identitate" re$erinta la obiecte sau numele #ariabilei stare" #aloarea curenta a tuturor campurilor comportament" metode In )a#a* un obiect se creeza utilizand cu#antul c3eie new&
// instantierea unui obiect cu starea implicita new BankAccount(); // declararea unei re!erinte la obiect " obiectul nu // e#ista inca BankAccount ba; // crearea unui obiect si a re!erintei la obiect // printr-o sin ura instructiune // $urni%ea%a datele pentru initiali%area campurilor BankAccount ba = new BankAccount(&A'()*+,);

11.10.2013

Curs 2 STR

44

Apelul unei meto"e in 6a!a

1+emplu de cod care apeleaza o metoda a unui obiect utilizand notatia dot /&0 etodele pot $i apelate in lant utilizand notatia dot
// withdraw -+.../.. !rom an account ba/deposit( +.../. ); // withdraw all the mone0 in the account ba/withdraw( ba/ etBalance()); // deposit the amount now in client1s 2avin s ba/deposit(acct3wner/ et2avin sAccount()/ etBalance());

11.10.2013

Curs 2 STR

45

Partea a III'a Principii de baza pentru OOP

11.10.2013

Curs 2 STR

46

Cele trei principii ale OOP


1& Incapsulare

Obiectele ascund $unctii si date ostenire 8eneralizare in clasa parinte 4 baza 4 superclasa Specializare in clasa $iu 4 deri#ata 4 subclasa

2&

3& Polimor$ism

,celasi apel poate in#oca actiunea corespunzatoare pe di#erse tipuri de date

Scrie cod o sin(ura data pentru obiectele cu tipuri di$erite dar cu comportament similar 11.10.2013

Curs 2 STR

47

4ncapsulare

,tributele si comportamentul continute intr'o de$initie a clasei apartin $iecarei instante a clasei embrii unei clase sunt campurile si metodele sale Codul care modi$ica o #aloare se a$la intr'un sin(ur loc Pentru a asi(ura $aptul ca doar metodele clasei pot accesa datele" Se declara un membru ca $iind pri#ate pentru a'l ascunde de alte clase Se declara un membru ca $iind public pentru a putea $i accesat de alte clase Simpli$icarea dez#oltarii .aciliteaza reutilizarea .ace codul mai robust

Incapsularea" ,scunde datele 1+pune comportamentul in mod selecti#


11.10.2013 Curs 2 STR 48

2ostenire

ostenirea reprezinta un alt ni#el de abstractizare& Se $oloseste pentru a" De$ini atribute si metode intr'o clasa in asa $el incat sa lase clasele sa le reutilizeze in mod automat .orma o ierar3ie de clase intr'o relatie parinte 'copil 2izualizam mostenirea ca o structura arborescenta a carui radacina este plasata in mod tipic la #ar$ ostenirea captureaza relatiile stabilite intre clase In )a#a* parintele este o superclasa si copilul este o subclasa ostenirea mai poarta denumirea de (eneralizare 4 specializare Clasele din apropierea radacinii /superclasa0 ' generali3are Clasele mai indepartate de radacina /subclasa0 ' speciali3are
ostenirea" .iecare subclasa mosteneste toti membrii superclasei sale

11.10.2013

Curs 2 STR

49

2ostenirea1 e0tragerea esentialului comun

.iecare copie D2D are "

.iecare copie pe caseta are"

Pentru a permite reutilizarea* se (eneralizeaza pentru a crea o clasa copie #ideo care are"

11.10.2013

Curs 2 STR

50

Repre3entarea unei relatii "e mostenire in 52.

Clasa specilizata trebuie sa aiba toti membrii clasei (eneralizate& Poate a#ea mai multi membri* dar niciodata mai putini&

11.10.2013

Curs 2 STR

51