Sunteți pe pagina 1din 32

Sisteme in Timp Real

Semestrul I 2013 2014 Curs 10

Ierarhii de clase

fiecare obiect apartine unei clase Obiectele membre ale unei clase sunt instantele clasei fiecare clasa (cu exceptia clasei Object) are o superclasa In Java Object repre!inta ra"acina intre#ii ierar$ii "e clase aan" "efinim noi clase pro#ramatorul trebuie sa "eci"a care clasa este superclasa corespun!atoare
Inte#er !ero % ne& Inte#er(0)'

6.12.2013

Curs 10 STR

Specializare si generalizare

O subclasa este o speciali!are a superclasei ei Speciali!am stare si comportament in subclasa a"au#an" campuri si extin!an" sau mo"ifican" meto"e O superclasa este o #enerali!are a subclaselor sale Starea si comportamentul "e ba!a pot fi mutate in superclasa "e un"e sunt "isponibile pentru toate subclasele Co"ul este scris o sin#ura "ata si este pus intr(o sin#ura locatie

6.12.2013

Curs 10 STR

Relatii de mostenire

)ostenirea "escrie relatiile in care o instanta a subclasei repre!inta un ca! special al superclasei *elatiile "e mostenire poarta "enumirea "e relatii +is a+ a "eoarece subclasa +is a+ ca! special (speciali!are) a superclasei ,xemple- .n numar real (floatin# point) is un numar' un numar is un obiect )ostenirea nu poate "escrie relatii +$as a+ a /cest lucru este posibil "e obicei utili!an" campurile clasei si meto"ele lor asociate ,xemplu- .n numar real $as a semn un ra"acina si o mantisa Colectiile furni!ea!a o proce"ura #enerali!ata "e manipulare a relatiilor 0$as a1 a

6.12.2013

Curs 10 STR

Mostenire multipla

Java nu suporta mostenirea multipla

2iecare clasa Java cu exceptia Object are exact o superclasa ime"iata (Object nu are o superclasa)

Clasele care nu sunt inru"ite prin mostenite pot fi fortate sa implemente!e un set comun "e meto"e prin interme"iul interfetelor

6.12.2013

Curs 10 STR

Mostenirea campurilor si metodelor

2iecare subclasa mosteneste campurile superclasei /ceste campuri "in superclasa pot fi mostenite "e la clase aflate mult mai sus in ierar$ia "e clase 2iecare subclasa mosteneste meto"ele superclasei .n obiect va intele#e toate mesa3ele pe care clasa sa le implementea!a sau pe care superclasa sa fie le(a mostenit fie le implementea!a

Inte#er !ero % ne& Inte#er(0)' If (!ero4e5uals(x) 6 b7te b % !ero4b7te8alue()' 444 9

6.12.2013

Curs 10 STR

Interfete

:ipurile "eclarate in Java sunt fie clase fie interfete Interfetele repre!inta o promisiune "e servicii ce pot fi "isponibile ale obiectelor care implementea!a interfata

O interfata repre!inta un contract intre obiectele implementate

O interfata este "oar o lista "e "eclaratii "e meto"e

)eto"ele interfetei sunt "eclarate "ar nu si implementate

O interfata nu este o clasa c$air "aca seamana "estul "e "e bine cu o clasa abstracta

6.12.2013

Curs 10 STR

Interfete: pot rezolva anumite probleme de proiectare

O clasa Java poate extin"e o sin#ura clasa astfel incat asa ceva nu este posibil-

Campul creditLimit fiin" "efinit atat in SavingAccount cat si in LoanAccount ce limita "e cre"it mosteneste un CreditAccount;

.neori se "oreste sa se separe comportamentul "in #enerali!are < speciali!are /numite conturi bancare permit balanta ne#ativa (pana la limita "e cre"it) /nimite materiale vi"eo pot fi atat cumparate cat si inc$iriate =asarile !boara pestii inoata4 Cum putem mo"ela un mo"el !oo .n strut (nu poate !bura "ar este o pasare) .n castor (inoata "ar nu este peste) O rata (poata !bura si inota)
6.12.2013 Curs 10 STR 8

Interfete - protocoale

O interfata "efineste un protocol (un set "e meto"e) >aca o clasa implementea!a o anumita interfata atunci acea clasa implementea!a un protocol
O interfata poate fi utili!ata pentru a impune un protocol comun asupra unui #rup "e clase care nu sunt inrudite prin mostenire

In lantul "e clase inru"ite prin mostenire protocolul comun este impus prin subclasare

6.12.2013

Curs 10 STR

Sintaxa

In "eclaratia clasei numirea superclasei prece"e orice interfata implementata "e clasa public class Directory extends Secure implements File { ... }

>aca o clasa implementea!a mai multe interfete toate interfetele sunt listate separate "e vir#ula public class Directory implements File ... } Secure {

6.12.2013

Curs 10 STR

10

Interfete

Interfetele sunt formate "in "eclaratii "e meto"e Sunt implicit abstract
public inter!ace Flyer { public void ta"eO!!#$% public void land#$% }

Interfetele pot "eclara "e asemenea campuri static final (constante) Clasele pot implementa interfetele si pot extin"e o sin#ura clasa public class Sparro& extends 'ird implements Flyer { ( } Clasele pot implementa mai multe interfete
public class Duc" extends 'ird implements S&immer Flyer {(} public class )et extents Airplane implements Flyer *ransporter FeulConsumer {(}

O clasa este un subtip al superclasei sale si al tuturor interfetelor pe care le implementea!a

private Flyer marvin% marvin + ne& ,elicopter#$%


6.12.2013 Curs 10 STR 11

Utilizarea interfetelor

=rin interme"iul interfetelor poate fi obtinut un polimorfism cross($ierarc$7 Interfetele permit accesul la meto"e "in ierar$ii "e clase "istincte

=utem substitui un obiect cu un alt obiect care nu este inru"it prin interme"iul ierar$iei "e clase Clasele care implementea!a aceeasi interfata intele# aceleasi mesa3e in"iferent "e po!itia lor in ierar$ia "e clase

6.12.2013

Curs 10 STR

12

Exemplu

6.12.2013

Curs 10 STR

13

Model partial de obiecte pentru un sistem de rezervare a biletelor de avion

6.12.2013

Curs 10 STR

14

onventii de notatie pentru interfete

Interfetele contin sufixul +able+ e4#4 Cloneable Seriali-able etc ?umele sunt substantive +Impl+ se foloseste pentru implementare

'an" interface 'an".mpl class 'an"Account interface 'an"Account.mpl class Cu aceasta conventie interfetele contin in mo" tipic o "efinitie a implementarii tututor (sau aproare tuturor) meto"elor publice ale clasei

Se pune prefix(ul +I+ si se utili!ea!a substantive pentru clase


.'an" interface 'an" class .'an"Account interface 'an"Account class

6.12.2013

Curs 10 STR

15

!bservatie: casting intr-o ierarhie de mostenire


*eferinta la un obiect poate fi atasata unui obiect "e tip "iferit Se face cast implicit can" atasea!a "in subclasa la superclasa
Animal a + ne& Dog#$%

Se face cast explicit pentru a atasa "e la superclasa la subclasaDog d + #Dog$ a%

Compilatorul cauta cast(urile explicite /ccepta casturile atunci can" obiectul "in "reapta unei atasari poate avea tipul referintei la obiectul "in stan#a
Animal a + ( 'an"Account ba + ( // animalul poate !i Cat Cat c + #Cat$ a% // compilatorul accepta // un 'an"Account nu poate !i niciodata un Dog Cat c + #Cat$ ba% // compilatorul semnali-ea-a o eroare

?u poate "etecta potentiale "e probleme "e tipul-

Animal ad + ne& Dog#$% Cat c + #Cat$ ad%

6.12.2013

Curs 10 STR

16

"ire de executie in #ava

/ceasta sectiune pre!inta conceptul "e fir "e executie (t$rea") in Java si implementarea lui prin interme"iul clasei *0read si a interfetei 1unnable4 /lte concepte- sincroni!are si implementarea sincroni!arii

6.12.2013

Curs 10 STR

17

$rocese si fire de executie

8a reamintiti ca / process runs in its o&n memor7 a""ress space an" consists of "ata a call stac@ t$e co"e bein# execute" t$e $eap an" ot$er se#ments / thread executes instructions an" is a pat$ of execution t$rou#$ a pro#ram (process) / t$rea" "oes not carr7 all of t$e process information "ata )an7 t$rea"s ma7 run concurrentl7 t$rou#$ a pro#ram an" ma7 potentiall7 s$are an" access t$e same #lobal "ata &it$in t$e pro#ram

6.12.2013

Curs 10 STR

18

"ire de executie in #ava

Java are mai multe clase care permit crearea firelor "e executie Interfata *unnable "efineste o sin#ura meto"arun#$ Clasa :$rea" implementea!a interfata *unnable si a"au#a meto"e care prmit #estionarea firelor "e executie- prioritate intreruperea firelor suspen"area temporara a unui fir "e executie etc4

Clasa java.lang.*0read este clasa "e ba!a pentru toate obiectele care se comporta ca firele "e executie

6.12.2013

Curs 10 STR

19

rearea firelor de executie in #ava

,xista "oua mo"alitati "e creare a firelor "e executie utili!an" clasa *0read

14 >erivarea clasei *0read si supra"efinirea meto"ei run#$ 24 Crearea firelor "e executie prin implementarea interfetei 1unnable

6.12.2013

Curs 10 STR

20

Exemplu: derivarea clasei Thread

=roce"ura extin"e clasa *0read si supra"efineste meto"a public run#$ cu co"ul specific noului fir "e executie crea!a apoi o instanta a subclasei "upa care apelea!a meto"a sa start#$4 )asina virtuala Java porneste noul fir "e executie prin executia meto"ei sale run#$

Thread run() class A extends Thread{ public void run(){ // ... } }

public class A extends *0read{ public A#String name${ run() super#name$% } public void run#${ System.out.println#23umele t0read4ului5 2 6 get3ame#$$% } } public class ' extends *0read{ public static void main#String78 args${ A a + ne& A#2*0read4ul nou2$% a.start#$% Output- ?umele t$rea"(ului- :$rea"(ul nou } }
6.12.2013 Curs 10 STR 21

Exemplu: derivarea clasei Thread

Clasa *ra!!icLig0t "eriva clasa *0read si supra"efineste meto"a mostenita run#$class *ra!!icLig0t extends *0read { public void run#$ { // loop c0ange lig0t color 9 sleep } }

2irul se executa utili!an" meto"a start#$ mostenita "e la clasa *0read... *ra!!icLig0t tl + ne& *ra!!icLig0t#$% t:.start#$% // .ndirectly calls run#$ ...

6.12.2013

Curs 10 STR

22

Exemplu: implementarea interfetei Runnable

presupune implementarea interfetei 1unnable intr(o clasa cu o meto"a run#$ "e tip public crearea unei instante a clasei si transmiterea unei referinte la respectivul obiect catre constructorul clasei *0read

public class / implements *unnable6 public voi" run()6 S7stem4out4println(+?ume fir % +A :$rea"4current:$rea"()4#et?ame())' 9 9 Runnable public class B6 public static voi" main(Strin#CD ar#s)6 / a % ne& /()' :$rea" t % ne& :$rea"(a +2ir+)' t4start()' 9 9
run()

Thread

A run()

class interface Runnable{ public abstract void run(); } class A implements Runnable{ public void run(){ // ... } }

Output- Nume fir = Fir


6.12.2013 Curs 10 STR 23

Exemplu: implementarea interfetei Runnable

Clasa *ra!!icLig0t trebuie sa furni!e!e o implementare pentru meto"a run#$class *ra!!icLig0t implements 1unnable { public void run#$ { // loop c0ange lig0t color 9 sleep } }

Crea!a un nou obiect :$rea" care primeste ca parametru clasa *unnable... *ra!!icLig0t tl + ne& *ra!!icLig0t#$% ne& *0read#tl$.start#$% ...

6.12.2013

Curs 10 STR

24

iclul de viata al unui fir de executie


/ t$rea" t$at is runnin# or asleep is sai" to be alive :$is can be teste" &it$ t$e isAlive#$ met$o" Once "ea" t$e t$rea" cannot be restarte" Eo&ever it can be examine"

6.12.2013

Curs 10 STR

25

ontrolul activitatilor
:$rea"s are meant to be controlle" )et$o"s exist to tell a t$rea" &$en to run &$en to pause an" so fort$ start#$ ( starts t$e t$rea"Fs run#$ met$o" sleep#$ pauses execution for #iven amount of time stop#$ ( "eprecates since it is in$erentl7 unsafe

destroy#$ ( @ills a t$rea" &it$out an7 cleanup resume#$ an" suspend#$ ( "eprecates for t$e same reason as stop#$ yield#$ ( causes t$e currentl7 executin# t$rea" ob3ect to pause temporaril7 an" allo& ot$er t$rea"s to execute interrupt#$ ( causes an7 @in" of &ait or sleep to be aborte" set;riority#$ ( up"ates t$e priorit7 of t$is t$rea"

6.12.2013

Curs 10 STR

26

um oprim un fir de executie


G$en t$e run() met$o" returns t$e t$rea" is "ea"

/ "ea" t$rea" cannot be restarte" Its "ata can be accesse"

/ "ea" :$rea" ob3ect is not "estro7e"

Set a fiel" to in"icate stop con"ition an" poll it often


public void run#$ { stopFlag + !alse% try { &0ile #<stopFlag$ {......} } catc0 #.nterrupted=xception e$ {...} } public void !inis0#$ { stopFlag + true% ......... }

6.12.2013

Curs 10 STR

27

Timp-real % concurenta - #ava

In man7 situations concurrentl7 runnin# t$rea"s must s$are "ata an" consi"er t$e state an" activities of ot$er t$rea"s

,xample- pro"ucer(consumer pro#rammin# scenarios

=ro"ucer t$rea" #enerates "ata t$at is nee"e" an" consume" b7 anot$er t$rea"

>ata ma7 be s$are" usin# a common ob3ect t$at bot$ t$rea"s access

In Java an ob3ect can be operate" on b7 multiple t$rea"s' it is t$e responsibilit7 of t$e ob3ect to protect itself from an7 possible interference Ob3ects can be loc@e" to prevent critical sections of co"e from bein# simultaneousl7 accesse" b7 multiple t$rea"s
Biblio#rafie- fire "e executie in Java concurenta sincroni!are HSisteme in timp real4 >e!voltare pe ba!a "e mo"el1 cap4 4

6.12.2013

Curs 10 STR

28

&elp on line pentru Rhapsod'

$ttp-<<pic4"$e4ibm4com<infocenter<r$ap$lp<vIrJ<in"ex43sp;topic%K22com4ibm4r$apso"74"esi#nin#4"oc K22topicsK22r$pLcL"mLrnin#LanmLmo"els4$tml 6.12.2013 Curs 10 STR 29

&elp on line pentru Rhapsod'

>esi#nin# an" mo"elin#

*unnin# animate" mo"els

)ana#in# t$rea"s etc444

$ttp-<<pic4"$e4ibm4com<infocenter<r$ap$lp<vIrJ<in"ex43sp;topic%K22com4ibm4r$apso"74"esi#nin#4"ocK22topics K22r$pLcL"mLrnin#LanmLmo"els4$tml

6.12.2013

Curs 10 STR

30

Integrating Rational Rhapsod' and Eclipse

$ttp-<<pic4"$e4ibm4com<infocenter<r$ap$lp<vIrJ<in"ex43sp;topic% K22com4ibm4r$apso"74inte#ratin#4"ocK22topicsK22r$pLrLintLinte#ratin#Lr$pLan"Leclipse4$tml

6.12.2013

Curs 10 STR

31

#ava Tutorial for Rhapsod'

$ttp-<<publib4boul"er4ibm4com<infocenter<rs"p<v1r0m0<topic<com4ibm4$elp4"o&nloa"4r$apso"74"o c<p"f<tutorial34p"f

6.12.2013

Curs 10 STR

32