Upload
festival23
View
45
Download
0
Embed Size (px)
DESCRIPTION
Programare orientata pe obiecte
Citation preview
1
C1:
Deo
sebi
ri in
tre
C si
C++
Prog
ram
are
Orie
ntat
a pe
Obi
ecte
- P
OO
Bib
liogr
afie
:
•Flo
rin M
unte
anu,
Ghe
orgh
e M
usca
, Flo
rin M
orar
u, “
C te
hnic
i de
Prog
ram
are”
, Ed.
Join
t Prin
ting
Hou
se, B
ucur
esti
1995
•Mih
aela
Opr
ea “
Prog
ram
are
Ori
enta
ta p
e O
biec
te”,
Ed.
Mat
rixR
om,
Buc
ures
ti, 2
003
Cup
rins:
•Int
rodu
cere
•Com
enta
rii•P
oziti
a de
clar
atiil
or in
blo
c•O
pera
toru
l de
rezo
lutie
“::”
•Fun
ctii
inlin
e•A
rgum
ente
de
func
tii c
u va
lori
impl
icite
•Sup
rade
finire
a fu
nctii
lor
•Ope
ratii
de
intra
re/ie
sire
•Tip
ul re
ferin
ta•F
unct
ii in
stru
ctur
i
2
0. In
trod
ucer
e
C1:
Deo
sebi
ri in
tre
C si
C++
• *
.c=>
*.cp
p
• #
defin
e _c
plus
plus
d.p.
d.v.
al fisier
elor
d.p.
d.v.
al
compilato
rului
Exis
ta m
edii
de d
ezvo
ltare
(Bor
land
C)
care
au
un c
ompi
lato
r uni
c pe
ntru
prog
ram
ele
scri
se in
C si
C+
+ (c
are
treb
uie
info
rmat
e)!
3
C1:
Deo
sebi
ri in
tre
C si
C++
1. C
omen
tari
i
in C
:
/* c
itire
dat
a */
getd
ate(
&da
ta);
sune
t();
prin
tf("\
n
Azi
sunt
em in
:%
d.%
d.%
d\n\
n",d
ata.
zi,d
ata.
luna
,dat
a.an
);/*
des
chid
ere
fisie
rfh
andl
er=f
open
("C
:\\D
ATE
\\REM
EMB
ER.D
AT"
,"a")
;fc
lose
(fha
ndle
r);*
/
in C
++ :
int s
tare
_Pan
el =
0;
// bu
toan
e (8
): Sc
enar
iu, S
alva
re, C
onfig
urar
e, D
ecla
nsar
e, A
naliz
a,//
Adn
otar
i, A
juto
r, Ie
sire
// st
ari
(4):
Initi
ala,
Dec
lans
are,
Ana
liza,
Sim
ular
ein
t Sta
riBut
oane
[4][
8] =
{{0,
1,1,
0,0,
0,0,
0},{
1,1,
0,1,
0,0,
0,0}
,{0,
1,0,
1,1,
0,0,
0},{
1,1,
1,1,
1,1,
1,1}
};//
int S
tariB
utoa
ne[2
][3]
= {
{1,2
,3},
{4,5
,6}}
;//
= {{
0,1,
1,0,
0,0,
0,0}
,{1,
1,0,
1,0,
0,0,
0},{
1,1,
0,1,
0,0,
0,0}
};in
t g_N
otep
adEx
eHan
dle;
Dac
a lin
ia e
ste
prea
lung
a si
se tr
ece
auto
mat
pe
linia
urm
atoa
re si
com
enta
riu
“nu
mai
are
efe
ct”!
4
C1:
Deo
sebi
ri in
tre
C si
C++
2. P
oziti
a de
clar
atiil
or in
pro
gram
in C
:
la inc
eput
in C
++ :
oriund
e in p
rogr
am
5
C1:
Deo
sebi
ri in
tre
C si
C++
in C
:m
ain(
){ ch
ar c
,x;
int n
otify
Cou
nt =
42;
/* W
ait f
or a
t lea
st 5
0 by
tes i
n qu
eue
*/in
t eve
ntC
har
= 1
3; /*
Wai
t for
LF
*/in
t eve
ntM
ask
= L
WR
S_R
XFL
AG
;in
t com
Port
= 5;
hand
le =
Loa
dPan
el (0
, "R
eg_T
est_
62_R
S232
.uir"
, BI)
;D
ispl
ayPa
nel (
hand
le);
SetC
trlA
ttrib
ute(
hand
le,B
I_in
dic_
com
_man
,ATT
R_D
IMM
ED,1
);//
Des
chid
ere
port
seria
lO
penC
omC
onfig
(5, "
CO
M5"
, 960
0, 0
, 8, 1
, 512
, 512
);Se
tCom
Tim
e (5
, 0.5
0);
// in
itial
izar
e co
mca
llbac
kIn
stal
lCom
Cal
lbac
k (c
omPo
rt, e
vent
Mas
k, n
otify
Cou
nt, e
vent
Cha
r,M
essa
geR
ecei
ved,
NU
LL);
SetId
leEv
entR
ate
(50)
;In
stal
lMai
nCal
lbac
k (G
etD
ata,
(voi
d *)
&x
, 1);
Run
Use
rInt
erfa
ce()
;}
la inc
eput
6
C1:
Deo
sebi
ri in
tre
C si
C++
in C
++ :
oriund
e in p
rogr
am
float
sum
(flo
at v
[], i
nt n
){
float
s;fo
r (in
t i=0
; i<n
; i++
)s+
=v[i]
;re
turn
s;} At
entie
la v
izib
ilila
tea
vari
abile
i res
pect
ive:
// vi
zibi
litat
eif(
m>2
3.2)
{do
uble
dv;
//……
……
} else
{//…
……
…..
dv +
= 3.
2;//
eror
e!!!
!//…
……
…..
}
7
C1:
Deo
sebi
ri in
tre
C si
C++
3. O
pera
toru
l de
rezo
lutie
“::
” :
int x
;//
glob
alvo
id fu
nct(v
oid)
{in
t x =
0;
// lo
cal
::x =
5;
// gl
obal
x =
::x;
// co
rect
dar
ner
ecom
anda
t}
De
fapt
ace
st o
pera
tor a
fost
intr
odus
pen
tru
alt s
cop!
8
C1:
Deo
sebi
ri in
tre
C si
C++
4. fu
nctii
inlin
e:
inlin
e in
t max
(int a
, int
b)
{re
turn
a>b
? a
:b;
} // ut
iliza
re:
int z
= m
ax(x
, y);
Au e
fect
doa
r asu
pra
codu
lui g
ener
at d
e co
mpi
lato
r.
in C
++ :
in C
am
inta
lnit
ceva
sim
ilar:
# de
fine
max
(A, B
) ((A
) > (B
) ? (A
):(B
)
9
C1:
Deo
sebi
ri in
tre
C si
C++
5. a
rgum
ente
de
func
tii c
u va
lori
impl
icite
:
int f
(int k
= 0
)//
prot
otip
pt.
f{
retu
rn k
*k;
} // ut
iliza
re:
prin
tf(“%
d %
d\n”
, f()
, f(5
));
// va
afis
a 0
5
In C
++
pot
exi
sta
func
tii c
u m
ai p
utin
e ar
gum
ente
dec
at in
cel
e di
n de
clar
atie
10
C1:
Deo
sebi
ri in
tre
C si
C++
void
prin
tvec
t(int
v[]
, int
n, c
har*
text
= “
”)
{pr
intf(
“%s\
n”, t
ext);
for(
int i
= 0
; i <
n; i
++)
prin
tf(“%
d ”,
v[i])
;pr
intf(
“\n”
);} //
utili
zare
:pr
intv
ect(x
, nx,
“ve
ctor
ul x
”);
prin
tvec
t(y, n
y);
Este
bin
e sa
ave
m g
rija
de
vari
abile
le se
nsib
ile –
de
evita
t situ
atii
sens
ibile
de
genu
l im
part
irii
la 0
.
11
C1:
Deo
sebi
ri in
tre
C si
C++
6. S
upra
defin
irea
func
tiilo
r:
doub
le a
rie_d
rept
(dou
ble
lun,
dou
ble
lat)
{re
turn
lun*
lat;
}
In C
++
pot
exi
sta
func
tii (d
iferi
te) c
u ac
elas
i num
e da
r num
ar si
tip
alpa
ram
etri
lor d
iferi
t.
Exe
mpl
u (a
rie
a un
ui d
rept
ungh
i):
int a
rie_d
rept
(int l
un, i
nt la
t){
retu
rn lu
n*la
t;} flo
at a
rie_d
rept
(flo
at lu
n, fl
oat l
at)
{re
turn
lun*
lat;
}
12
C1:
Deo
sebi
ri in
tre
C si
C++
float
arie
_dre
pt(f
loat
lun)
{re
turn
lun*
lun;
} // ut
iliza
re:
prin
tf(“%
d %
f %f %
f”, a
rie_d
rept
(2, 4
), ar
ie_d
rept
(2.5
, 2.2
), ar
ie_d
rept
(2.5
), ar
ie_d
rept
(2.5
, 4.7
));
In C
++
se p
ot su
prad
efin
i chi
ar si
ope
rato
rii d
in C
(+, -
, ++
, --,
/, et
c.).
13
C1:
Deo
sebi
ri in
tre
C si
C++
7. o
pera
tii d
e in
trar
e/ie
sire
(citi
re/s
crie
re) d
e la
cons
ola
in C
++ :
•de
ce c
onso
la?
– is
toric
•cin
, cou
t
prin
tf, sc
anf
•treb
uie
incl
usa
bibl
iote
ca:
#inc
lude
<io
stre
am.h
>•c
in <
< …
……
..;//
cin
– es
te o
biec
tul
•//
<< -
este
ope
rato
rul
Exe
mpl
e:
cin
>> x
;ci
n >>
a >
> b;
char
*tex
t = “
text
exe
mpl
u”;
cout
<<
text
;co
ut <
< “
” <<
“\n
”;co
ut <
< x;
cout
<<
x <<
y;
cout
<<
x <<
“ “
<<
y;co
ut <
< “x
=” <
< x;
cout
<<
“x=”
<<
x
<
< “y
=” <
< y;
14
C1:
Deo
sebi
ri in
tre
C si
C++
8. T
ipul
ref
erin
ta:
Stud
iu d
e ca
z pe
ntru
con
stru
irea
une
i fun
ctii
care
inte
rsch
imba
dou
a va
riab
ile:
shim
ba_1
()//
func
tie fa
ra p
aram
etri
{in
t tem
p;te
mp
= a;
a =
b;b
= te
mp;
} // ut
iliza
re;
int a
,b;
// va
riabi
le g
loba
lea
= 3;
b =
4;
prin
tf(“a
=%d
b=%
d\n”
, a, b
);sc
him
ba_1
();
prin
tf(“a
=%d
b=%
d\n”
, a, b
);
a)
15
C1:
Deo
sebi
ri in
tre
C si
C++
•fun
ctia
schi
mba
doa
r var
iabi
lele
glo
bale
a si
b•a
re o
vite
za m
ica
•spa
tiu d
e m
emor
ie e
ste
disc
utab
il (v
aria
bila
tem
p di
spar
e da
r apa
re st
iva
- des
en)
•sun
t nec
esar
e al
te v
aria
nte
16
C1:
Deo
sebi
ri in
tre
C si
C++
schi
mba
_2(in
t ca,
int c
b){
int t
emp
= ca
;ca
= c
b;cb
= te
mp;
} // ut
iliza
re;
int a
,b;
// va
riabi
le g
loba
lea
= 3;
b =
4;
prin
tf(“a
=%d
b=%
d\n”
, a, b
);sc
him
ba_2
(a, b
);pr
intf(
“a=%
d b=
%d\
n”, a
, b);
// ac
elas
i rez
ulta
t – d
e ce
?
b1)
// es
te o
var
iant
a gr
esita
!!!
17
C1:
Deo
sebi
ri in
tre
C si
C++
int r
a =
0;in
t rb
= 0;
schi
mba
_2(in
t ca,
int c
b){
int t
emp
= ca
;ca
= c
b;cb
= te
mp;
ra =
ca;
rb =
cb;
} // ut
iliza
re;
mai
n()
{ int a
,b;
// va
riabi
le g
loba
lea
= 3;
b =
4;
prin
tf(“a
=%d
b=%
d\n”
, a, b
);sc
him
ba_2
(a, b
);a
= ra
;b
= rb
;pr
intf(
“a=%
d b=
%d\
n”, a
, b);
// re
zulta
t – d
e ce
?
b2)
•cod
ul e
ste
func
tiona
l dar
est
e di
ficil
si “
urat
”•s
patiu
de
mem
orie
supl
imen
tar
•tim
p su
plim
enta
r
18
C1:
Deo
sebi
ri in
tre
C si
C++
c) c
u po
inte
ri:
RE
ME
MB
ER
:
tip *
np;
// np
– p
oint
er c
atre
o v
aria
bila
de
tipul
“tip
”in
t i =
0;
int *
pi;
// pi
– p
oint
er c
atre
o v
aria
bila
de
tip “
int”
pi =
&i;
// &
- op
erat
orul
de
refe
rent
iere
(adr
esar
e)//
i = 3
; *p
i = 3
;//
* - o
pera
toru
l de
dere
fere
ntie
re (i
ndir
ecta
re)
// *
si &
- op
erat
ori i
nver
seT
1 x;
T2
*py;
x =
*(&
x);
py =
&(*
py);
19
C1:
Deo
sebi
ri in
tre
C si
C++
schi
mba
_3(in
t *pa
, int
*pb
){
int t
emp;
tem
p =
*pa;
*pa
= *p
b;*p
b =
tem
p;} //
utili
zare
;in
t a,b
;//
varia
bile
glo
bale
a =
3; b
= 4
;pr
intf(
“a=%
d b=
%d\
n”, a
, b);
schi
mba
_3(&
a, &
b);
prin
tf(“a
=%d
b=%
d\n”
, a, b
);//
rezu
ltat?
– d
e ce
?
•cod
ul e
ste
func
tiona
l est
e va
rian
ta “
clas
ica”
•nec
esita
ate
ntie
spor
ita d
eoar
ece
eror
i de
edita
re g
ener
eaza
ero
rilo
gice
gre
u de
det
ecta
t.
20
C1:
Deo
sebi
ri in
tre
C si
C++
d) c
u re
ferin
ta:
&x
– re
ferin
ta c
atre
o v
aria
bila
x (u
n no
u tip
de
date
)
schi
mba
_4(in
t &ra
, int
&rb
){
int t
emp
= ra
;ra
= rb
;rb
= te
mp;
} // ut
iliza
re;
if (a
> b
) sch
imba
_4(a
, b);
int i
nt_v
al =
3;
int &
ref =
int_
val;
int_
val+
+;//
ref+
+; -
com
pila
toru
l fac
e in
dire
ctar
ea
Alt
exem
plu:
21
C1:
Deo
sebi
ri in
tre
C si
C++
// cu
poi
nter
void
maj
orea
za(in
t *va
l){
*val
+=
5;} //
utili
zare
mai
n()
{in
t x =
0;
//……
……
.M
ajor
eaza
(&x)
;//
adre
sa lu
i x tr
imis
a ca
arg
umen
t//…
……
……
} // cu
refe
rinta
void
maj
orea
za(in
t &va
l){
val +
= 5;
} // ut
iliza
rem
ain(
){
int x
= 0
;//…
……
….
maj
orea
za(x
);//
o re
ferin
ta a
lui x
est
e tri
mis
a ca
arg
umen
t//…
……
……
}
Alt
exem
plu
(fun
ctie
car
e m
ajor
eaza
cu
o va
loar
e o
vari
abila
):
22
C1:
Deo
sebi
ri in
tre
C si
C++
•tipu
l ref
erin
ta e
ste
folo
sit c
a pa
ram
etru
form
al in
inte
rior
ul fu
nctii
lor;
•est
e po
sibi
la d
ecla
rare
a un
or p
aram
etri
tip
refe
rint
a si
in e
xter
ioru
l fin
ctiil
or d
ar n
uex
ista
mot
iv p
entr
u ac
east
a;•o
func
tie n
u po
ate
retu
rna
un p
oint
er la
o v
aria
bila
loca
la (d
e ce
?)•to
t asa
nu
poat
e re
turn
a o
refe
rint
a la
o v
aria
bila
loca
la;
Exem
plu
(inco
rect
):
stru
ct c
mpl
x{
float
re, i
m;
} cmpl
x &
add
x(cm
plx
&c1
, cm
plx
&c2
){
cmpl
x c3
;c3
.re =
c1.
re +
c2.
re;
c3.im
= c
1.im
+ c
2.im
;re
turn
c3;
} // ut
iliza
recm
plx
z =
addx
(a, b
);
Se p
oate
cor
ecta
dac
a se
elim
ina
oper
ator
ul &
=>
o fu
nctie
ce
retu
rnea
za c
a pa
ram
etru
ost
ruct
ura!
!!
23
C1:
Deo
sebi
ri in
tre
C si
C++
•o re
feri
nta
nu p
oate
exi
sta
sing
ura
(int &
ref)
– nu
est
e pe
rmis
a (s
e re
fera
la c
esa
u ci
ne?)
;•s
pre
deos
ebir
e un
poi
nter
(int
*pi
nt) p
oate
exi
sta
sepa
rate
si m
ai m
ult p
oate
fi“r
efol
osit”
;•o
refe
rint
a po
ate
fi va
zuta
ca
un “
alia
s” a
l une
i var
iabi
le –
din
ace
st m
otiv
, nu
poat
e fi
folo
sita
pen
tru
o al
ta v
aria
bila
;•c
and
oper
ator
ul &
est
e ut
iliza
t im
preu
na c
u o
refe
rint
a (a
une
i var
iabi
le,
expr
esia
inse
amna
“ad
resa
var
iabi
lei i
ndic
ate
de re
feri
nta”
;•in
mod
con
trar
, un
poin
ter e
ste
o va
riab
ila d
e si
ne st
atat
oare
, adr
esa
aces
tuia
fiind
dife
rita
de
adre
sa u
nei v
aria
bile
cat
re c
are
aces
ta in
dica
.
24
C1:
Deo
sebi
ri in
tre
C si
C++
9. F
unct
ii ca
par
ti al
e un
or st
ruct
uri:
stru
ct p
erso
ana
{ch
arnu
me[
80],
adre
sa[8
0];
void
prin
t (vo
id);
} // de
finire
func
tie p
rint:
void
per
soan
a::p
rint()
{pr
intf(
“ N
ume:
%
s\n”
,“
Ade
sa:
%s\
n”, n
ume,
adr
esa)
;} //
utili
zare
:pe
rsoa
na p
;st
rcpy
(p.n
ume,
“Io
n”);
strc
py(p
.adr
esa,
“Sp
l. In
dep.
313
”);
p.pr
int()
;
• den
umite
si fu
nctii
mem
bru
sau
met
ode;
•Util
itate
a ac
esto
r fun
ctii
se v
a ve
dea
in c
azul
pro
gram
arii
obie
ctua
le.
25
C1:
Deo
sebi
ri in
tre
C si
C++
10. C
uvan
tul r
ezer
vat “
cons
t”:
int m
ain(
){
int c
onst
//
o co
nsta
nta
de ti
p in
tiv
al =
3;
// in
itial
izat
a cu
val
oare
a 3
ival
=4;
//
atrib
uire
ce
duce
// la
un
mes
aj d
e er
oare
retu
rn (0
);}
• Cuv
antu
l est
e un
mod
ifica
tor d
e tip
– d
ecla
ra o
con
stan
ta d
e un
anu
mit
tip –
spec
ifica
t (in
t, flo
at, d
oubl
e et
c.);
•Mod
ifica
rea
ulte
rioar
a a
valo
rii a
cest
or e
ste
inte
rzis
a.