Documente Academic
Documente Profesional
Documente Cultură
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
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
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
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 nu este o clasa c$air "aca seamana "estul "e "e bine cu o clasa abstracta
6.12.2013
Curs 10 STR
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 {(}
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
6.12.2013
Curs 10 STR
14
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
6.12.2013
Curs 10 STR
15
*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#$%
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
6.12.2013
Curs 10 STR
16
/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
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
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
,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
=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#$
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
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
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(){ // ... } }
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
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
6.12.2013
Curs 10 STR
27
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
=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
$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
$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
$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