alocarea dinamica de memorie

Upload: humeniuc-ramona

Post on 02-Mar-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/26/2019 Alocarea Dinamica de Memorie

    1/40

    Program

    area

    1V.1.

    Notiunile

    de

    obiect

    qi

    metodi

    Ideea

    de obiect arelabazd o noliune mai simpl6, deja cunoscutd,

    gi

    aceea de inregistrare

    (record).

    Aga cum

    gtim,

    o

    inregistrare

    este o

    coleclie &

    de

    tipuri

    diverse,

    pe

    care

    programatorul

    le

    reunegte sub un singur

    nume

    unor anumite scopuri.

    Spre

    deosebire

    de inregistriri,

    obiectele

    pot

    contine,

    pel

    date, funcfii

    gi proceduri.

    Una dintre cele mai simple definilii

    de

    obiect este

    urmitoarea:

    tl4)e complex=object

    re,

    im:real;

    funct,ion

    nodul:rea1i

    end;

    function complex.modul

    :

    real

    ;

    begin

    modul:

    =Eqrt

    (egr

    (re)

    +eqr

    (in)

    )

    ;

    end;

    Pe mdsurd ce vom explica noliunile, definilia de mai sus va c6pdta

    Deocamdati,

    precizim

    cd urmlrim sI introducem un

    tip de date care

    sI

    numerelor complexe.

    Cea

    mai

    simpld cale

    de

    definire

    a

    numerelor complexe

    ar

    pulEf

    porneasci

    de

    la

    tipul

    de date

    record.

    Astfel,

    putem

    si

    gdndim

    un numdr

    ca

    fiind

    bine

    determinat

    de

    doui

    numere reale:

    partea

    real6

    gi

    partea

    imagi

    inregistrare de acest tip

    va avea

    definilia:

    t)T)e

    complex=record

    re, im:

    real;

    end;

    Am definit aqadar

    un

    tip

    nou

    de

    inregistrare, numitd complex, asdel

    o variabil[ de tip

    complex va ft caracterizatd, de dou6 variabile de

    tip

    Evident,

    declararea

    unei astfel

    de

    variabile se

    face

    obignuit:

    var

    z:

    corrplex;

    Vom

    avea acces la componenta re

    a

    lui z in forma. z . re iar la

    in forma

    z. in.

    Definilie

    Nofiunea de

    obiect

    reprezinti un concept

    superior

    celd

    inregistrare

    prin

    faptul cI

    poate

    confine

    rtit date

    (variabile)

    cAt

    9i

    170

    T

    a

    ,

    u

    {

    {

    L

  • 7/26/2019 Alocarea Dinamica de Memorie

    2/40

    '{

    att

    obiectului

    gi

    care sunt

    concepute

    de

    programator

    reprezinte

    cAt

    mai bine

    o anumiti no{iune.

    Metodele au acces la membrii obiectului in mod implicit.

    Parametrii formali ai

    metod:lor

    _nu

    _p9t_

    coincide

    cu

    variabilele

    cuprinieTiTdflnifia-

    o-biecTulu

    i:

    *--

    ='

    Metodele sunt func{ii sau

    proceduri

    care

    fac

    ruteanzk

    c,rV/VPq4'

    /

    u

    t-/4.t*2t

    "--e

    drrrr-r'*

    )

    cAfi

    a-

    (1b4 .A/

    {

    Sd

    revenim

    la

    nofiunea

    de

    numdr complex

    gi

    sd

    ne g6ndim cd,

    de

    fapt,

    a$a

    cum

    gtim,

    numerele

    complexe au

    gi

    alte

    rndrimi

    caracteristice. Una

    dintre

    ele

    modulul.

    Va

    fi

    de

    dorit

    sd completdm

    definilia

    cu o metodi care

    sd

    reprezinte

    lul

    modulului numdrului

    complex.

    Asta vom

    face,

    specificAnd

    faptul

    c5,

    prin

    dou[

    numere

    reale,

    degi

    corectd,

    este insuficientd.

    De ce ?

    pentru

    ic,definiliaunui.glj

    yffi

    Obiectul nostru

    va avea definilia:

    tfrlre comlrlex

    =

    object

    fer irn

    : real;

    function

    modul:rea1;

    endi

    qcluhtk

    /)"4r*

    bAa?

    al^-

    f7

    :-7oA'

    Fare

    nu

    are

    nici

    un

    argument

    gi

    care

    intoarce o

    valoare

    reald.

    Sd

    descriem

    cornplet

    te:

    eal

    i

    +sqr(im)

    );

    td de funclie

    cu difcrenfa_cd

    numele

    ruiaii

    aparJine.

    Nirnic

    surprinzdtor, in

    e membre

    prin

    intcrmediul numelui

    prelucreazl

    datele

    comporrente ale lui z,

    lui

    complex z.

    Sd

    observdm ca funclia are acces la

    variabilele re

    gi

    im in mod implicit

    ({ErI

    o

    calificare

    suplimentari). Apelul

    funcliei modul

    in

    forma

    z.modul face

    ca variabilele

    re

    gi

    l.n

    sa fie exact datele membre

    ale

    lui

    z.

    parte

    din definifia

    in aqa

    fel incAt

    si

    Ce

    fel

    de func1ie este

    modul

    ? Evident,

    dupi

    cum se vede,

    este

    o

    funcfie

    obiectului care apeleazi

    metoda.

    Funcfiile

    membre ale

    unui

    obiect

    prelucreazl

    datele membre

    ale

    Definilie

  • 7/26/2019 Alocarea Dinamica de Memorie

    3/40

    in

    continuare

    vom

    prezenta

    modul

    in

    care

    se

    face

    inilializarea

    membre ale obibctelor,

    numite

    gi

    membrii

    de tip

    date

    ai obiectului.

    Li

    Pascal

    pune la

    dispozilie o metodd

    special[

    gi

    anume metoda constructor.

    1V.2.

    Metoda

    constructor

    Aceasta este o metodd in sens obignuit,

    care

    poate

    fi inclusl in

    shiechrlui.

    Lafel

    ca

    qi

    alte metode,

    ea

    poate

    avea sau nu

    parametri.

    In

    cazul

    in

    dorim sd

    aibi

    parametri

    acegtia trebuie

    sd

    difere

    de

    datele

    componente'

    obiectului

    pentru

    a

    se

    elimina

    pericolul

    de

    3mbiguitate

    (deoarece

    metodelc

    oricum acc-es

    la

    datele membre

    ile obiectuluilMmf&finirii unui

    este aceeagi

    cu

    a

    unei

    funcfli

    sau

    proceduri,

    cu

    deosebirea

    cI

    antetul

    este

    de cuvAntul const,ructor

    (cuvAnt

    rezervat

    4limbajului)t

    -r,

    Exemolu

    -2F*.-^^-.)-E-.:L:^-t.:-- -t-.:---J.^t^..-,

    t\

    Putem

    introduce

    in

    definifia obiectului complex, urmltoarea

    declara[ie

    a

    constructor:

    consEructor

    Lnlt

    (a,b:real)

    ;

    in

    exteriorul dehni{iei obiectului

    complex

    urmeazl

    sI descriem

    modul

    de

    constructorului.

    conatructor complex.

    init

    (a,b

    : real)

    ;

    begln

    re:

    =ai

    Lm:

    =bi

    I

    end;

    "

    r.r1"

    Apelul

    constructorului se

    iace prin

    calificarea obignuitd. Astfel, daci z este

    obiect

    de

    tip courplex,

    atunci

    instrucfiunea:

    z.cggpl6x(10,12);

    va

    avea

    drept efect inilializarea datelor

    componente

    ale

    lui

    z

    astfel

    incdt

    z.

    re

    va

    valoarea 10 iar z. Lm va

    avea

    valoarea 12.

    Initia-lizar0)

    and

    (y>0)

    then

    cadran:=1i

    lf

    (x0) then

    cadran:=2i

    tf

    (x

  • 7/26/2019 Alocarea Dinamica de Memorie

    27/40

    S[ remarcim faptul ci

    pe

    l6ngd defuri{iile cerute

    a aplmt

    un

    element nou

    gi

    variabila

    pt.

    Aceasta a

    fost

    declaratd ca

    variabild

    globabld

    la inceput,

    9i,

    pentru prima

    observIm

    rolul sec{iunii begJ.n end

    a

    unit-ului, in care am dat efectiv o

    valoare variabilei

    fi ..,

    prinintermediulfuncfeirigonomericearcEan.Deoarece

    arctan(1)

    =;

    obfinempi=lc

    'Este

    simplu de vlzut cI

    un

    program

    care:utilizeazd

    func{iile cadran

    gi

    a

    pentru

    o

    variabild

    de tip conprex,

    poate

    arita astfel:

    progrrrn

    tEt,

    ugeB

    P_ci

    vai

    z:complex;

    begin

    z.Lnlt(2,-41i z.afiai

    wrLteln

    (z.

    cadran)

    ;

    wrlteln

    (z.

    argu.rrent)

    ;

    end.

    Construi(i

    prin

    mo$tenire

    gi

    polimorfism

    un

    punct

    in spafiu care si redefineasci funclia

    "distan{6"

    de la

    punct

    la

    originea sistemului

    de

    coordonate.

    Pomim

    de

    la definilia obiectului

    punct

    de

    la

    prima problemi:

    tlT)e

    puncts e

    obJect

    :

  • 7/26/2019 Alocarea Dinamica de Memorie

    28/40

    un element

    nou

    $i

    anurc

    inceput,

    gi,

    pentru

    prima

    efectiv o valoare

    variabilei

    pr.

    =

    I

    obfinempi=rc

    4

    cadran

    gi

    arguneat'

    Realizafi proceduri

    care se

    efectueze

    complex

    folosind

    unit-ul imaginar.

    tpu.

    R.4.

    Sumd

    Ei

    produs

    Pornim

    de

    la definiliile cunoscute

    ale

    sumei

    gi

    produsului:

    (a

    +

    ib)

    +

    (u +

    iv) -

    a

    + u +

    i(b

    +

    v)

    (a

    +

    ib)

    (u

    + iv)

    =

    au

    -

    bv

    i

    i(av

    * bu)

    Cel mai simplu

    este

    se

    folosim

    chiar

    constructorul

    din definifia

    tipului complex

    pentru

    a

    ini{ializa partea

    reald

    gi

    partea

    imaginari a

    sumei, respectiv

    produsului

    a

    doud

    obiecte

    de

    tip complex.

    uees imaginar;

    procedure

    euma(x,y:complex;

    var z:complex)

    ;

    begin z.Lnit(x.re+y.re,x.im+y.irn)

    ;

    end;

    procedure

    produe(x,y:complexi

    var

    z:complex)

    ;

    begin

    z

    .

    init

    (x.

    re*y. re-x.

    iur*y. Lur, x.

    re*y.

    im+x. im*y.

    re)

    ;

    endi

    var

    *,Y,

    z: complex;

    begin

    x.lnit

    (2,9)

    i

    y.

    init

    (4,11

    t

    Euna(x,y, z)

    i

    z.af igare;

    produs

    (x,y,zl

    i

    z.af isarei

    end.

    celor

    trei

    coordonate-

    inilializdm

    gi

    coordonata

    nfl

    reprezentAnd

    diagonab

    de coordonate

    gi

    vdrful

    suma

    $i

    produsul

    obiectelor

    de tip

    1) Modificali

    prin

    mogtenire

    $i

    polimorfism

    constructorul din definilia tipului

    urmetor astfel incdt

    variabila

    x sd fie inilializata cu

    valoarea

    2.

    tlpe te8t

    =

    object

    :c :

    real

    i

    conetructor

    init;

    end;

    conEEructor tseEE.

    init;

    begln x:=31

    end;

    2l Modificali

    prin

    mogtenire

    gi

    polimorfism procedura

    de

    afigare

    a

    obiectului

    definit in

    continuare astfel incdt

    datele

    sI fie

    afigate

    in

    ordine

    inversd

    tlpe afle

    =

    obJect

    x,y

    :

    real;

    conatrucEor

    init;

    procedure

    t,ipar;

    end;

    conatrucEor afLe.

    lnlt;

    begln

    x:=

    0i

    y:=0,

    end;

    proeedure

    afls.tlpar;

    begin

    writeln

    (

    rx= I

    ,x,

    '

    y='

    ,y) ;

    end;

    3)

    Modificali

    prin

    mogtenire

    gi

    polimorfism

    funcfia de incrementare din definilia

    obiectului

    urmdtor astfel

    incit

    si.realizeze

    decrementarea

    valorii membrului

    de tip

    datd.

    197

  • 7/26/2019 Alocarea Dinamica de Memorie

    29/40

    tl4)e

    nu.n

    .

    object

    n : Lnteger;

    conaErucEor Lnl,t

    (a:

    .ntcgcr)

    ;

    fuacELon func:

    J,nt,eger;

    ,

    eDdi

    coaEtrucEor nun.lnit(a:lnteger)

    i

    '

    begln n -ai end,

    functLon

    nusr. func: Lnt,egr,

    begln func:=n+1i

    endi

    4) Modificafi

    prin

    mo$tenire

    gi

    polimorfism

    funcfia

    membru

    a

    obiectului

    urmitor

    astfel

    incdt

    valoarea

    intoarsi

    sd

    fie

    de

    tip real

    t1rye Latreg

    r

    obJect

    n :

    J.ntegcr;

    conetructor

    LnLt

    (a

    : J.nteger)

    ;

    functloa

    va1

    :

    J.ateger;

    endt

    coaat,ructor

    lntreg.inLt(a:lnteger)

    i

    ,

    begln

    n:-a,

    endi

    func t,Lon

    J,ntreg

    .

    val : lnt,eger

    ;

    begln

    val:-ni end;

    1V.5.2.

    Concepte rafinate:

    inherited,

    virtual

    si

    self

    Atributul lnherited

    Polimorfismul

    prezentat

    in secfiunea

    anterioar[

    are

    in limbajul Pascal

    doui

    t

    gr

    cea

    Sd

    dim un

    exemplu

    credem,

    foarte

    sugestiv.

    *_Exenplu_

    r-

    Presupunem

    cE

    avem

    doul definilii

    de obiecte:

    uau

    gi

    aoi.

    Obiectul de

    tip

    dol.

    ya

    fi urmag al lui unu

    (sau

    unu este stramog al

    lui

    aor). Fiind o construcJie

    foarte simpld nu

    vom

    declara

    un

    unLt

    separat

    ci

    vom include

    in

    acelaqi

    text sursi

    gi

    definitiile

    gi

    programul

    ilustrativ.

    incepem

    cu obiectul

    unu care are definifia

    urmetoare:

    t*'

    :":

    i"::l:::

    coDatructor

    lnit

    (a:

    Lnteger)

    ;

    functl,on

    putere

    : integer;

    end;

    Agadar,

    acest

    obiect confine o variabil5

    de

    tip intreg

    gi

    dou[

    metode:

    un

    coaatructor

    gi

    o

    funcfie numiti

    putere.

    198

    .

    Du

    parametrulu

    puterii

    a

    dou

    De

    posibilitatea

    Fal

    modifica

    mo

    putere

    va

    f

    Sd

    Ca

    ea

    mo$tenit5

    furnizarea

    v

    furniza

    valo

    mogtenit[

    d

    adusi de lim

    sintactic,

    o a

    conduce

    la

    din obiec

    ---G*ffi

    Vo

    conceptulu

    Inc

    comparafie

    Acum

    vom

    permite

    de

    M

    momentu

  • 7/26/2019 Alocarea Dinamica de Memorie

    30/40

    a

    obiectului

    urmltor

    constructor

    unu. init

    (a:

    lnteger)

    ;

    begJ.n

    n:

    =ai

    end;

    DupI cum

    se

    vede,

    constructorul

    inilializeazd,

    pur

    gi

    simplu

    pe

    n

    cu

    valoarea

    parametrului

    a. Func[ia

    putere

    prezentatd

    mai

    jos

    nu

    face

    decdt sd intoarcl

    valoarea

    puterii

    a doua

    a lui n.

    functLon unu.

    put,ere

    : lntegep;

    begln

    putere:=sqr(n)

    ;

    end;

    Desigur

    cd,

    prin

    mogtenire,

    datele

    gi

    metodele

    se

    transmit

    urmagilor

    avdnd

    posibilitatea

    de

    modificare

    a

    metodelor.

    SE

    urmdrim

    definilia

    de

    mai

    jos:

    tlpe

    doJ.

    =

    obJect(unu)

    function

    putere

    :

    integer;

    end;

    Fa[i

    de datele

    gi

    metodele

    mogtenite am

    anuntat un singur lucru,

    gi

    anume

    cd vom

    modifica modul

    de ac{iune

    al

    funcfiei

    putere,

    mo$tenite

    din unu. Noua defini]ie a

    funcfiei

    putere

    va

    fi:

    functlon

    doi.putere : integer;

    begln

    putere:-lnherit,ed

    putere

    + 1; end;

    Sd explicdm modul

    de lucru,

    foarte

    simplu,

    care

    se

    rezume h atribuirea:

    puter:=inherLted

    putere

    +

    1;

    Califrcativul

    lnherited

    din

    dreapta

    va

    cere

    execufia

    funcliei

    putere

    a$a

    cum este

    ea

    mogtenitd de

    la

    stramogul

    unu.

    Agadar,

    apelul functiei

    putere

    din

    dreapta

    se

    va

    solda cu

    furnizarea valorii

    n2 . La

    aceasta se

    adaugl

    r

    gi

    in final func{ia

    puter

    a

    obiectului

    doi va

    furniza valoarea

    ,r2 + f. intr-adevir,

    noua

    funcfie

    putere

    are un alt efect

    decdt cea

    mogteniti

    dar toflrgi

    o

    folosegte

    pe

    aceasta

    Acest rafinament

    este

    o

    contribufie

    importantd

    adus[

    de limbajul

    Pascal

    conceptului

    de

    polimorfism.

    Facem

    observafia cd, degi

    corect[

    sintactic, o atribuire

    de

    forma

    putsere:=putere

    + 1i

    conduce

    la

    o

    eroare

    de execute

    fiind

    in realitate un

    apel

    recursiv

    infinit al

    funcfiei

    putere

    in

    limbajul

    Pascal

    doud

    pe

    obiecte

    in

    dar modificati

    de cdtre

    exemplu

    simplu,

    dar

    obiectul

    de

    trp aol

    va

    foarte

    simpl5

    nu

    gi

    definifiile

    gi

    programul

    ___0

    then begln

    cLfre(n dtv 10);

    wriEe(n

    mod

    10);

    end;

    endi

    procedure

    doi.clfre;

    begln Lf

    n>0

    then

    begin

    cLfre(n dlv 2);

    wrlte(n

    rrod

    2);

    endi

    end;

    var

    A zeceiB:dol;

    begin

    A.lnlE;

    A.cifre(2305)

    ;

    wrlteln;

    B.Lnil; B.cifre(2305)

    i

    radlni

    end.

    baza

    2,

    realizdm

    imp5(irea

    2);

    dar

    atrage aten(ia

    asupra

    le

    credm

    nu

    se

    referd la

    spus,

    prin

    obiecte modeldm

    secliunea de aprofundare

    obiecte

    a

    altor tehnici.

    am mai fdcut

    Definili un obiect

    de tip matrice

    gi

    realizali

    alocarea

    dinamici

    gi

    eliberarea

    dinamici

    a

    memoriei.

    Ln baza 2')

    ;

    Cea mai simpld exemplificare

    a

    cerinfei din

    enunt

    este

    prezentatd

    in continuare.

    Obiectul de tip

    talrou confine drept date

    o

    matrice

    gi

    un intreg

    care va

    reprezenta

    dimensiunea

    efectivi

    a

    matricei.

    Funcfia dtag calculeazd suma elementelor de

    pe

    diagonala

    principal5

    a

    matricei. Constructorul

    gi

    destructorul

    afigeazI textele

    cores-

    punzltoare

    acfiunii

    efectuate, constructie

    respectiv distrugere.

    Progran

    _natrLce;

    tlpe matrico

    =

    arrayt1..10,1..101

    of real;

    tlpe

    tablou

    -

    object

    m:uatricei

    n

    :

    J,nteger;

    conEtructor

    gen

    (J,

    :

    Luteger)

    ;

    destructor dLa;

    functlon dlag:real;

    endi

    construcEbr

    tsablou.

    gen

    (

    i: l.nteger)

    ;

    var

    J:lnEeger;

    begJ.n

    n:

    =1.

    i

    for

    J:-1

    Eo n do mlJ,JI:=J;

    wrlteln(tan creaE

    un oblectt);

    endi

    deetructor

    Eablou.

    die;

    begln

    wrl,teln

    (

    'am

    dLetrue un

    obl,ect'

    ) ;

    end;

    functLon

    t,ablou. dl.ag :

    real

    ;

    var

    J:Lntgri

    e:real

    begln

    e:-0i

    207

    in

    baza

    10')

    ;

  • 7/26/2019 Alocarea Dinamica de Memorie

    39/40

    for

    J:-1

    to n do s:.E+m[J,Jl,

    dJ.ag:

    =a;

    ndi

    var

    M:^tabI0u;

    begJ.n

    new(M,gen(5)

    );

    wrlEeln

    (U^.dlag)

    ;

    readln;

    diepoee

    (M,

    dia)

    ;

    end.

    Programul

    creazd un obiect alocat

    dinamic. Constructorul asigurd

    cd

    elementele

    de

    pe

    diagonala

    principald

    au

    valori

    egale

    cu

    linia

    (coloana).

    Urmeazd

    afigarea

    sumei

    elementelor

    de

    pe

    diagonala

    principald

    gi

    distrugerea

    obiectului.

    1) Asociagi

    destructori

    care sA afiteze

    un

    text corespunzltor

    actiunii

    de

    distrugere

    $i

    tealizati alocdri

    9i

    eliberlri

    dinamice de memorie

    pentru

    obiecte

    de

    tip

    fractie,

    rat, .ona1,

    punct

    gi

    conplex

    definite in

    acest

    capitol.

    2)

    Precizali

    care dintre afirmafiile

    urm5toare sunt

    adev[rate:

    a) Alocarea dinamicl

    se

    realizeazd

    prin

    apelul constructorului

    obiectului.

    b)

    Alocarea dinamic6

    se

    realizeazd,

    de cltre

    procedura

    new

    care are drept

    parametri

    un

    pointer

    cltre

    obiect

    gi

    constructorul

    acestuia.

    c)

    Diskugerea

    este insolitl de

    gtergerea

    efectivl a

    conlinutului

    memoriei.

    d)

    Distrugerea

    elibereazi memoria

    care

    insd igi

    va

    schimba

    con{inutul numai in

    urma

    '

    unei alte alocdri.

    3)

    Precizali

    care

    dintre

    afirmafiile

    urmdtoare sunt

    false:

    a) Destructorul

    obiectului

    este

    parametru

    al

    procedurii

    dlepoae.

    b)

    ,

    Procedura

    dlapose are

    drept

    paramentri

    un

    pointer

    cltre

    obiectul care va

    fi

    distrus

    gi

    destructorul

    clasei.

    c)

    Distrugerea

    efectivd a unui obiect

    se

    realizeazd

    de

    destructorul

    clasei.

    d)

    Destructorul permite

    descrierea unei

    acfiuni

    care

    insofegte distrugerea.

    1V.7.

    Descrierea formali

    a obiectelor

    Din

    tot ceea

    ce am spus

    despre

    obiecte

    putem

    inlelege c6,

    in

    definitiv,

    notiunea

    de

    obiect

    poate

    fi

    inleieasi

    printr-o

    descriere

    formail,

    dupd

    cum

    urmeazd:

    I

    a"t"

    obiect r

    i

    fapt

    care

    reflecta

    ceea

    ce .r,

    ,r[::i"unr-"

    c6 un

    obiect

    se

    compune din date

    gi

    metode;

    datele

    9i

    metodele

    pot

    se

    apar[ explicit

    (declarate)

    sau

    implicit

    (rnogtenite).

    I

    a"t. ale lisDajului

    d.ate

    -)

    ]"fte

    Eipuri

    definite

    I

    I

    date de

    tip

    obiect

    208

    Date

    standard ale

    l

    Desc

    .

    C

    i

    o

    D

    i

    o

    F

    AtAt

    Meto

    virtuale

    sunt

    in

    sf[rgit,

    din

    .

    .

    Vom

    tehnici de ma

    obiect

    care s

    probleme

    rez

    damelor, amb

    Vom

    care va

    inilial

  • 7/26/2019 Alocarea Dinamica de Memorie

    40/40

    asigurd cd

    elementele

    de

    Urmeazd, afigarea

    sumei

    acfiunii

    de

    distrugere

    obiecte

    de tip fractie,

    obiectului.

    care are drept

    parametri

    un

    memoriei.

    con[inutul numai

    in

    urma

    Datele

    (sau

    membrii

    de

    tip

    date cum

    mai

    sunt numili)

    pot

    fi

    atAt tipuri

    standard

    ale

    limbajului,

    alte

    tipuri

    definite

    sau

    chiar

    date de

    tip

    obiect.

    ctsori

    tori

    ii

    uri

    Descrierea

    formald

    reflectd

    faptul

    cd

    prin

    metode inlelegem:

    o

    Constructorii

    (cei

    care

    perrnit inilializarea datelor

    gi

    stabilirea

    legiturii

    intre

    obiectul declarat

    qi

    metodele

    sale virtuale).

    o

    Destructorii

    (cei

    care dau

    posibilitatea

    de asociere

    unei acliuni

    care

    insolegte

    distrugerea).

    o

    Func(iile

    gi

    procedurile

    incluse

    in definilia obiectului.

    Atdt

    funcliile cdt

    gi

    procedurile pot

    fi statice

    sau

    virtuale.

    i

    etaEice

    i

    virtsuale

    eduri

    etsatice

    eduri

    virtsuale

    Metodele

    statice

    sunt alocate obiectelor

    inc6

    in

    faza de compilare,

    cele

    virtuale sunt apelate la

    execufie.

    in sflrgit,

    din

    punctul

    de vedere al modului de alocare

    obiectele sunt:

    o

    Statice,

    alocate

    pe

    intreg

    parcursul

    execufiei

    programului

    gi

    care nu

    pot

    fi

    distruse.

    o

    Dinamice,

    alocate de

    procedura

    new

    in

    heap

    gi

    distruse cu

    procedura

    dispose.

    Obiectele

    dinamice

    sunt accesate

    prin pointeri.

    false:

    obiectul care va

    fi

    distrus

    gi

    clasei.

    distrugerea.

    inlelege

    cd, in

    definitiv,

    dupd

    cum

    urmeaz6:

    se

    compune

    din

    date

    gi

    sau

    implicit

    (rnogtenite).

    Vom

    constata

    ci

    programarea

    pe

    obiecte

    permite

    chiar modelarea

    unor

    tehnici

    de mare corrplexitate

    gi

    vom exemplifica

    prin

    constructia

    unei definilii

    de

    obiect care

    sd

    reflecte

    tehnica

    Backtraking.

    Obiectele de acest tip

    vor fi

    chiar

    probleme

    rezolvate

    prin

    aceast[ tehnici,

    a$a

    cum este

    problema

    permut[rilor

    sau

    a

    damelor,

    ambele

    studiate

    inc[

    din

    clasa

    a X-a.

    Vom

    porni

    de

    la

    o sistematizare

    a

    procedurilor,

    gi

    anume:

    procedure

    init;

    care

    va iniltaltza

    elementele

    specifice ale

    unei

    probleme

    date:

    209

    Tehnica

    Backtracking

    gi

    urmagi

    care

    rezolve

    problema

    permutarilor

    gi problema

    damelor

    1V.8.

    Aprofundare: