מונחה עצמים- תרגול 3 | c.ctors, const objects, composition vs. aggregation

Upload: ron

Post on 04-Apr-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    1/38

    Ehmcit Ex`cgtcd Rxeoxnll`goT`xosj 9

    Ijnyycy ielrey`t`eg

    Ierp Iegytxsitexy

    Iegyt ehmcity

    Ielrey`t`eg qy' Nooxcont`eg

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    2/38

    =,X8'

    '

    =

    8)8'&

    )&:v*p7'

    :v>*p>7

    :v8*p87

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    3/38

    (%% j`gc>'f

    ) agdca UJ@GCU>UF

    )dca`gc UJ@GCU>UF

    )`gijsdc :`eytxcnl7

    sy`go gnlcyrnic ytd;

    ijnyy J`gc> {

    rx`qntc=

    `gt lUv>*lUp>*lUv8*lUp8;

    `gt lUiejex;

    rshj`i=

    J`gc>&`gt i* `gt v>* `gt p>* `gt v8* `gt p8;

    qe`d rx`gt&;

    |;

    )cgd`a %% UJ@GCU>UF

    %% j`gc>'irr

    )`gijsdc (j`gc>'f(

    J`gc>==J`gc>&`gt i* `gt v>* `gt p>* `gt v8* `gt p8 {

    lUiejex;lUp>

    ;

    lUv8 :: (7

    :: ( :( :: lUv8 :: (*( :: lUp8 :: (7

    :: cgdj;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    4/38

    ==

    '>)v>

    &):v*p7&'8)/rx`gt&

    '9)*

    &'''4)`gt&'

    ,deshjc)

    j`gc&

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    5/38

    =Re`gt%% re`gt8'f

    ) agdca URE@GT8UF

    )dca`gc URE@GT8UF

    )`gijsdc :`eytxcnl7

    sy`go gnlcyrnic ytd;

    ijnyy Re`gt8 {

    rx`qntc=

    `gt lUv* lUp;

    rshj`i=Re`gt8&`gt v* `gt p;

    qe`d rx`gt&;

    |;

    )cgd`a %% URE@GT8UF

    %% re`gt8'irr

    )`gijsdc (re`gt8'f(

    Re`gt8==Re`gt8&`gt v* `gt p {

    lUv

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    6/38

    j`gc8%% j`gc8'f

    )`agdca UJ@GCU8UF

    )dca`gc UJ@GCU8UF

    )`gijsdc (re`gt8'f(

    )`gijsdc :`eytxcnl7

    sy`go gnlcyrnic ytd;

    ijnyy J`gc8 {

    rx`qntc=

    `gt lUiejex;

    Re`gt8 lUr>* lUr8;

    rshj`i=

    J`gc8&`gt i* `gt v>* `gt p>* `gt v8* `gt p8;

    qe`d rx`gt&;

    |;

    )cgd`a %% UJ@GCU8UF

    %% j`gc8'irr

    )`gijsdc (j`gc8'f(

    J`gc8==J`gc8&`gt i* `gt v>* `gt p>* `gt v8* `gt p8 =

    lUr>&v>*p>) * lUr8&v8*p8) {

    lUiejex

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    7/38

    ,iegytxsitex==

    J`gc8==J`gc8&`gt i* gt v>* `gt p>* `gt v8* `gt p8 = lUr>&v>*p> * lUr8&v8*p8

    {

    lUiejex,lUr8j`gc'& 'lUr>(lUr8)

    dntn lclhcxyJ`gc8&

    lUiejex)*',dcytxsitex=J`gc8*

    lUr8,lUr>'

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    8/38

    ==

    '>):v*p7&

    '8)/rx`gt&

    '9)*&''

    '4)`gt,:deshjc&)&j`gc

    =

    '>Re`gt

    J`gc*'

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    9/38

    =Re`gt8

    %% j`gc9'irr)`gijsdc (j`gc9'f

    qe`d J`gc9==Re`gt9==rx`gt& {iest :: ( :( :: lUv :: (*( :: lUp :: (7 Zg;

    |

    qe`d J`gc9==rx`gt& {

    iest :: ( iejex'rx`gt&;

    iest :: ( r8* lUr8;

    rshj`i=

    J`gc9&`gt i* `gt v>* `gt p>* `gt v8* `gt p8

    = lUr>&v>*p> * lUr8&v8*p8 {

    lUiejex < i;

    |qe`d rx`gt&;

    |;

    )cgd`a %% UJ@GCU9UF

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    10/38

    ==

    Re`gt9J`gc9)

    Re`gt9

    J`gc9&

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    11/38

    )`gijsdc (j`gc9'f(`gt ln`g& {

    J`gc9 j9&2*>*8*9*4;

    j9'rx`gt&;

    j9'r>'rx`gt&; %% CXXEX

    Re`gt9 r9&>*8; %% CXXEX

    r9'rx`gt&; %% CXXEX

    xctsxg 2;|

    Re`gt Iegytxsitex :>*87

    Re`gt Iegytxsitex :9*47

    J`gc Iegytxsitex*

    iejex< :>*87*

    r8< :9*47

    iejex< :>*87 r8< :9*47

    J`gc Dcytxsitex*

    iejex< :>*87*

    r8< :9*47

    Re`gt Dcytxsitex :9*47

    Re`gt Dcytxsitex :>*87

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    12/38

    Ierp Iegytxsitex

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    13/38

    %% Clrjepcc'irr

    )`gijsdc (Clrjepcc'f

    Clrjepcc==Clrjepcc& gt @D* iegyt ifnx -gnlc{%% Itex

    iest :: (Iegytxsitex injjcd( :: cgdj;

    lU@D < `@D;

    lUgnlc < gcw ifnx [ytxjcg&gnlc +>\;

    ytxirp&lUgnlc* gnlc;

    Rx`gt&;

    |

    qe`d Clrjepcc==Rx`gt& { %% Rx`gt

    iest :: (@D= ( :: lU@D :: (*Gnlc= :: lUgnlc

    :: ( *Nddxcyy&re`gtcx=2v( :: fcv :: &`gt lUgnlc:: cgdj;

    |Clrjepcc==Clrjepcc& {%% Dtex

    iest :: (Dcytxsitex injjcd(::cgdj;

    Rx`gt&;

    dcjctc [\ lUgnlc;

    lUgnlc

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    14/38

    Estrst=

    Iegytxsitex injjcd

    @D= 9*Gnlc=Leyf`ke *Nddxcyy&re`gtcx=2v619>42

    Iegytxsitex injjcd

    @D= 3*Gnlc=Pey`asg *Nddxcyy&re`gtcx=2v619864

    @D= 9*Gnlc=Leyf`ke *Nddxcyy&re`gtcx=2v619>42

    @D= 3*Gnlc=Pey`asg *Nddxcyy&re`gtcx=2v619864

    Dcytxsitex injjcd

    @D= 3*Gnlc=Pey`asg *Nddxcyy&re`gtcx=2v619864

    Dcytxsitex injjcd

    @D= 9*Gnlc=Leyf`ke *Nddxcyy&re`gtcx=2v619>42

    `gt ln`g&

    {Clrjepcc clr>&9* (Leyf`ke(;

    Clrjepcc clr8&3* (Pey`asg(;

    clr>'Rx`gt&;

    clr8'Rx`gt&;

    xctsxg 2;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    15/38

    Estrst=

    Iegytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx)=2v619>04

    `g LpAsgi

    Dcytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx)=2v619>04

    @g tfc cgd ea ln`g

    Dcytxsitex injjcd@D= >*Gnlc= *Nddxcyy&re`gtcx)=2v619>04

    qe`d LpAsgi&Clrjepcc clr {

    iest :: (`g LpAsgi Zg (;

    |

    `gt ln`g&

    {Clrjepcc Egc&>*(Cj` Xnifnl`l(;

    %% injj`go ierp iegytxsitex

    LpAsgi&Egc;

    iest:: (@g tfc cgd ea ln`g Zg;

    %% Fcxc tfc rxeoxnl ixnyfcy.

    xctsxg 2;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    16/38

    %% Clrjepcc'irr

    %% Ierp iegytxsitex

    Clrjepcc==Clrjepcc&iegyt Clrjepcc ! Clr {

    iest :: (Ierp Iegytxsitex injjcd( :: cgdj;

    lU@D < Clr'lU@D;

    lUgnlc

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    17/38

    Estrst=

    Iegytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx=2v619>42

    Ierp Iegytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx=2v619866

    `g LpAsgi

    Dcytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx=2v619866

    @g tfc cgd ea ln`g

    Dcytxsitex injjcd

    @D= >*Gnlc=Cj` Xnifnl`l *Nddxcyy&re`gtcx=2v619>42

    qe`d LpAsgi&Clrjepcc clr {

    iest :: (`g LpAsgi Zg (;

    |

    `gt ln`g&

    {

    Clrjepcc Egc&>*(Cj` Xnifnl`l(;

    LpAsgi&Egc;

    iest:: (@g tfc cgd ea ln`g Zg;

    xctsxg 2;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    18/38

    Ierp Iegytxsitex&I'Itex)

    =

    '>hp xcacxcgic)I'Itex)Dtex&&

    '8,I'Itex,rx`qntc*'

    *hp qnjsc'

    *.

    ),I'Itex,rx`qntchpQnj

    ijegc&

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    19/38

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    20/38

    %%Re`gt'f

    )`agdca URE@GTU

    )dca`gc URE@GTU

    )`gijsdc :`eytxcnl7

    sy`go gnlcyrnic ytd;

    ijnyy Re`gt

    {

    rx`qntc=

    `gt lU`V* lU`P;

    rshj`i=

    Re`gt &`gt qnjV* `gt qnjP;

    Re`gt &; %%dcytxsitex

    qe`d Yfew &;

    `gt OctV& { xctsxg lU`V; |

    `gt OctP& { xctsxg lU`P; |

    %%D`ytngic hctwccg 8 re`gty'

    deshjc D`ytngic&Re`gt r>;

    |;

    )cgd`a

    %%Re`gt'irr

    )`gijsdc (re`gt'f(

    )`gijsdc :lntf'f7

    %% Injisjntcy tfc d`ytngic hctwccg tfc

    %% twe re`gty'

    deshjc Re`gt==D`ytngic&Re`gt r> {

    xctsxg &y~xt& rew&lU`V,r>'lU`V*8

    + rew&lU`P,r>'lU`P*8;

    |

    qe`d Re`gt==Yfew &{

    iest::(v

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    21/38

    rshj`i=

    I`xijc&; %% Dcansjt iegytxsitex%% @g`t`j`}nt`eg j`yt iegytxsitex

    I`xijc&Re`gt IcgtcxRe`gt*`gt `Xnd`sy;

    I`xijc& { %% Dcytxsitex

    iest :: (i`xijc dcytxsitex(::cgdj;

    Rx`gt&;|

    Re`gt LeqcIcgtcx &iegyt Re`gt! GcwIcgtcx;

    heej @y@gy`dc &iegyt Re`gt! Jeint`eg ;

    heej @yEqcxjnr &iegyt I`xijc! GcwI`xijc;

    qe`d Rx`gt&;|;

    )cgd`a

    %%I`xijc'f

    )`agdca UI@XIJCU

    )dca`gc UI@XIJCU

    )`gijsdc (re`gt'f(

    ijnyy I`xijc {

    rx`qntc=

    Re`gt lUIcgtcx;

    `gt lU`Xnd`sy;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    22/38

    %%I`xijc'irr

    )`gijsdc (i`xijc'f(

    )`gijsdc :lntf'f7

    I`xijc==I`xijc& %% Dcansjt iegytxsitex

    = lUIcgtcx&2*2* lU`Xnd`sy&> {

    iest ::(I`xijc dcansjt iegytxsitexZg(;

    Rx`gt&;

    |

    I`xijc==I`xijc&Re`gt icgtcxRe`gt* gt `Xnd`sy= lUIcgtcx&icgtcxRe`gt*

    lU`Xnd`sy&`Xnd`sy {

    iest :: (I`xijc `g`t j`yt iegytxsitexZg(;

    Rx`gt&;

    |Re`gt I`xijc==LeqcIcgtcx&iegyt Re`gt!

    gcwIgtx {

    Re`gt jnytIcgtcx

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    23/38

    Estrst=

    &>) I`xijc dcansjt iegytxsitex

    &8) icgtcx=v) 2

    &>8) OeedHpc=v8 p8

    &>9) OeedHpc=v8 p8

    &>4) OeedHpc=v

    &>1) OeedHpc=v6) icgtcx=v'@yEqcxjnr&i8::cgdj;

    i8'LeqcIcgtcx&r8;

    iest ::i>'@yEqcxjnr&i8::cgdj;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    24/38

    iegyt

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    25/38

    iegyt=iegyt'

    =rx`qntc=

    iegyt `gt lUv* lUp;

    rshj`i=

    Re`gt&`gt v* `gt p {

    lUv

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    26/38

    iegyt=,iegytxsitexiegyt

    ,iegytxsitex=

    ijnyy Re`gt {

    rx`qntc=

    iegyt `gt lUv* lUp;rshj`i=

    Re`gt&`gt v* `gt p = lUv&v* lUp&p { |

    |;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    27/38

    Iegyt Lclhcx Qnx`nhjcy ! Asgit`egy

    ,iegyt

    *=

    /)rx`gt&iegyt

    iegyt*,iegyt `gytngic*

    '

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    28/38

    %% A`jc= Ytx`go'f

    ijnyy Ytx`go

    {

    rx`qntc=

    ifnx- lUrYtx;

    `gt lU`Jcgotf;

    rshj`i=

    Ytx`go&iegyt ifnx-;

    ifnx- OctYtx&;

    qe`d Xcqcxyc&;

    %% xctsxgy tfc rey`t`eg ea tfc ifnx

    %% ex ,> `a get aesgd`gt A`gd&ifnx iegyt;

    |;

    %% A`jc= Ytx`go'irr

    Ytx`go==Ytx`go&iegyt ifnx- ytx {lU`Jcgotf < ytxjcg&ytx;

    lUrYtx < gcw ifnx[lU`Jcgotf+>\;

    ytxirp&lUrYtx*ytx;

    |

    `gt Ytx`go==A`gd&ifnx teUa`gd iegyt{ |

    ifnx- Ytx`go==OctYtx& { xctsxg lUrYtx; |

    qe`d Ytx`go==Xcqcxyc&) { |

    qe`d Rx`gtQnxGnlc&Ytx`go ! qnxUytx

    { |

    %% A`jc= ln`g'irr

    qe`d ln`g& {

    Ytx`go qnxUgnlc&(lUyGnlc(;

    Rx`gtQnxGnlc&qnxUgnlc;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    29/38

    /Rx`gtQnxGnlc'=

    qe`d Rx`gtQnxGnlc&iegyt Ytx`go ! qnxUytx) {|'=

    qe`d Rx`gtQnxGnlc&iegyt Ytx`go ! qnxUytx {

    qnxUytx'OctYtx&;

    |

    =,iegyt

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    30/38

    %% A`jc= Ytx`go'f

    ijnyy Ytx`go

    {

    rx`qntc=

    ifnx -lUrYtx;

    `gt lU`Jcgotf;

    rshj`i=

    Ytx`go&iegyt ifnx-;

    iegyt ifnx- OctYtx& iegyt;

    ifnx ercxntex[\ &`gt iegyt;

    ifnx! ercxntex[\ &`gt;qe`d Xcqcxyc&;

    %% xctsxgy tfc rey`t`eg ea tfc ifnx

    %% ex ,> `a get aesgd

    `gt A`gd&ifnx iegyt;

    |;

    %% A`jc= Ytx go'irr

    iegyt ifnx- Ytx`go==OctYtx& iegyt{ xctsxg lUrYtx; |

    ifnx Ytx`go==ercxntex[\ &`gt rey iegyt{ |

    ifnx! Ytx`go==ercxntex[\ &`gt rey) { |

    qe`d Rx`gtQnxGnlc&iegyt Ytx`go! q iegyt

    {

    q'OctYtx&; %% gew `t `y EK

    |

    %% A`jc= ln`g'irrqe`d ln`g& {

    Ytx`go qnxUgnlc&(lUyGnlc(;

    Rx`gtQnxGnlc&qnxUgnlc;

    |

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    31/38

    Tclrexnxp Ehmcity

    qe`d Rx`gtQnxGnlc&iegyt Ytx`go ! q {

    '''

    |

    qe`d Rx`gtQnxGnlc&Ytx`go q {

    '''

    |

    qe`d Rx`gtQnxGnlc&Ytx`go ! q {

    '''

    |'iegyt Ytx`go'

    =iegyt Ytx`go

    ,Ytx`go!

    =Rx`gtQnxGnlc&(lUyGnlc(

    =iegyt Ytx`go'

    /Rx`gtQnxGnlc

    'hp qnjsc'

    I'Itex

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    32/38

    Iegyt Ehmcit Re`gtcx%% Clrjepcc'f

    ijnyy Clrjepcc

    {

    rx`qntc=

    Ytx`go lUyGnlc;iegyt Ytx`go -lUrHeyyGnlc;

    rshj`i=

    Clrjepcc&iegyt Ytx`go !gnlc*

    iegyt Ytx`go -rHeyygnlc;qe`d Asgi&;

    |;

    %% Clrjepcc'irr

    Clrjepcc==Clrjepcc&iegyt Ytx`go!

    gnlc* iegyt Ytx`go- rHeyyGnlc

    = lUyGnlc&gnlc {

    lUrHeyyGnlc < rHeyyGnlc;|

    qe`d Clrjepcc==Asgi&

    {

    %% '''lUrHeyyGnlc,7xcqcxyc&;

    |=

    iegyt&

    xcqcxyc*iegyt

    ),iegyt

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    33/38

    Ielrey`t`eg qy' Nooxcont`eg

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    34/38

    Ielrey`t`eg qy' Nooxcont`eg

    Ielrey`t`eg=wfcg egc ea tfc

    ijnyy/y qnx`nhjc `y ng

    ehmcit

    ijnyy H {''''|;

    ijnyy N {rx`qntc=

    H h;

    %%'''''

    |;

    Nooxcont`eg=wfcg egc ea tfc ijnyy/y

    qnx`nhjc `y n re`gtcx te

    ng ehmcit'

    ijnyy H {''''|;

    ijnyy N8 {rx`qntc=

    H- h;

    %%'''''

    |;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    35/38

    Ielrey`t`eg=

    '>HN'

    '8)=&

    H)&'9

    )dcjctc&''

    '4=,ielrey`t`egH

    )*

    &

    ijnyy H {''''|;ijnyy N {

    rx`qntc=

    H h;%%'''''

    |;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    36/38

    Ielrey`t`eg3')=&lclexp

    dcaxnolcgtnt`egdpgnl`injjeint`eg,fcnr'

    *

    ((,fcnr),d`yk dcaxnolcgtnt`eg'&

    1')=&ielrey`t`eg

    )&*8,re`gtcx',

    rnoc ansjt'

    ijnyy H {''''|;ijnyy N {

    rx`qntc=

    H h;%%'''''

    |;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    37/38

    Nooxcont`eg =

    '>HN )'&=H

    )**/&*

    ,)*

    /*N&

    '8)=&cvicrt`egH)

    iegytxsitex

    N&

    ijnyy H {''''|;ijnyy N {

    rx`qntc=

    H- h;%%'''''

    |;

  • 7/30/2019 C.Ctors, Const Objects, Composition vs. Aggregation | - 3

    38/38

    Nooxcont`eg 9')=&H)`gtcxanic&*

    '(

    `gtcxanic'

    ijnyy H {''''|;ijnyy N {

    rx`qntc=

    H- h;%%'''''

    |;