Professional Documents
Culture Documents
I TNG V LP
12 tit
6 December 2012
NI DUNG:
i tng l g?
Chng trnh l c my phc tp. Cu thnh t nhiu loi vt liu. Vt liu c bn: hm, cu trc. to ra chng trnh tt?
c trng ca i tng:
ng gi c d liu v x l. Thuc tnh (attribute): d liu ca i tng. Phng thc (method): x l ca i tng. Hp en: thuc tnh trong, phng thc ngoi. Bn nhm phng thc:
Cu trc i tng:
Nhm to hy. Nhm truy xut thng tin. Nhm x l nghip v. Nhm ton t.
Cc bc nu n
Verb
Lt p Nu Kho
Object
Rau C Cm C
Luc
Rau
Person1: Name: Peter. Age: 25. Hair Color: Brown. Eye Color: Brown. Job: Worker. Person2: Name: Thomas. Age: 50. Hair Color: White. Eye Color: Blue. Job: Teacher.
Human:
2.2 LP
nh
ngha lp l to ra mt kiu d liu tru tng mi m t cc c trng ca i tng trong thc t. nh ngha lp gm hai bc: Khai bo lp: khai bo cc d liu v hm thnh phn to nn lp nh ngha lp: nh ngha c th cc hm thnh phn ca lp
6 December 2012
hnh m t lit k cc thnh phn to nn kiu d liu lp. Dng t kha class nh ngha lp
6 December 2012
public:
};
6 December 2012 9
Trong :
liu: xc nh cc thnh phn d liu m t lp gi l trng, thuc tnh xc nh i tng d liu c m t thng qua tn v kiu xc nh khai bo bin d liu kiu: chp nhn c khai bo cc kiu gm cc kiu c bn(int, float,) hay con tr n i tng lp v d:
D
xc nh cc phng thc hay tc v thc hin x l trn d liu ca lp, c khai bo nh khai bo hm <kiu-tr-li> Tn-hm( ds i s ); V d:
Hm:
class date{ . public: int get_ngay( ); int get_thang( ); int get_nam( ); int sosanh( date &d ); };
6 December 2012 11
Phm vi
Tm nh hng, phm vi hot ng ca thuc tnh v phng thc. Tm nh hng cng hp, truy xut cng hn ch.
12
Phm vi
Quy tc hp en:
Thuc tnh c phm vi private hn ch truy xut. Phng thc c phm public cung cp tnh nng.
class PhanSo { private: int m_iTuSo; int m_iMauSo; public: void khoiTao(int iTuSo, int iMauSo); PhanSo cong(PhanSo p); };
13
Cc
Ch
vng private
6 December 2012
* V d:
class date { private: int ngay; int thang; int nam; public: int get_ngay(); int get_thang(); int get_nam(); void in( ); void nhap( ); };
6 December 2012 15
V d:
class PhanSo { private: int m_iTuSo; int m_iMauSo; public: PhanSo cong(PhanSo p); };
PhanSo PhanSo::cong(PhanSo p) { // Ci t cng phn s } void main() { PhanSo p1; PhanSo *p2 = new PhanSo; PhanSo *p3 = new PhanSo[10]; p3[1] = p1.cong(p3[5]); p3[1] = p2->cong(p3[5]);
16
ngha hm thnh phn l thao tc nh ngha c th cc hm thao tc ca lp c thc hin nh th no? Cc hm thnh phn ca lp c nh ngha theo hai cch:
nh
6 December 2012
17
thc hin inh ngha bn ngoi vng khai bo class nh ngha sau du ; ca khai bo class
nh ngha bn ngoi phi c thm tip u ng ch ra tn lp cha hm cn nh ngha. Dng tng qut:
V d:
#include iostream.h class date { int ngay,thang,nam; public: void nhap(); void in(); };
ngha ngay ti v tr cc hm thnh phn trong phn m t v khai bo lp Thng dng vi cc hm n gin v t dng lnh
6 December 2012
20
V d
#include iostream.h class date { int ngay,thang,nam; public: void nhap() { cout<<Nhap ngay thang nam:; cin>>ngay>>thang>>nam; } void in() { cout<<Ngay:<<ngay<</<<thang<</<<nam; } };
6 December 2012 21
2.2. 3. To lp i tng
s dng lp i tng phi to ra cc i tng khai bo bin kiu class c nh ngha <tn lp> < tn i tng>;
d: date ngaysinh; i tng l mt th hin ca lp Mi i tng s hu mt tp cc bin tng ng vi thnh phn d liu ca lp v tt c cc i tng cng chung nh ngha cc hm thnh phn
V
D liu
Lp
i tng 2
D liu c th 2
i tng 1
D liu c th 1
6 December 2012
22
2.2.3. To lp i tng
truy cp n tng thnh phn i tng thng qua tn bin kiu class c khai bo v ton t du chm (.) theo dng sau: Tn-bin-i-tng.d-liu-thnh-phn; Tn-bin-i-tng.hm-thnh-phn(ds i s); V d: ngaysinh.ngay ngaysinh.thang ngaysinh.nhap( ); ts = ngaysinh.get_thang( );
6 December 2012
23
mt lp trong n lun c mt con tr mc nh l con tr this, con tr m t chnh i tng lp ang nh ngha. Cc hm thnh phn ca lp lun c tham s u tin l con tr this. Con tr this dng xc nh a ch ca i tng dng lm tham s ngm nh cho hm thanh phn. Con tr this tham chiu n i tng ang gi hm thnh phn.
6 December 2012 24
Con tr this:
S dng bn trong lp. i din cho i tng ang gi phng thc. Hu dng trong mt s trng hp.
class PhanSo { private: int m_iTuSo; int m_iMauSo; public: void ganTuSo(int iTuSo) { this->m_iTuSo = iTuSo; } };
25
6 December 2012
27
x y
5 6
5 6
x y
z
a
6 December 2012
z
b
28
* Bi tp p dng:
Xy dng Lp Phn s, Trong : Phn s gm: t s v mu s Xy dng cc hm thc hin sau:
Hm nhp mt phn s Hm in mt phn Hm ton t +, - hai s phn s Hm ton t == so snh hai phn s vi nhau
29
2.4 Hm to (Cu t)
Gi tr cc thuc tnh bng bao nhiu? i tng cn c thng tin ban u. Gii php:
PhanSo
T s?? Mu s??
SinhVien
H tn?? im ton?? im tin??
Hm to ra i!!
30
2.4 Hm to
c gi khi to i tng. C chc nng khi to thnh phn d liu cho i tng Xin cp pht b nh cho thnh phn d liu c con tr C th np chng nhiu hm to. Hm to c tn trng tn lp. V d:
class sophuc { private: double x; //phan thuc double y; //phan ao public: //dinh nghia ham toan tu cho phep tao doi tuong so phuc sophuc(); sophuc( double a, double b ); void nhap(); void in(); 31 };
2.4 Hm to
Hm to mc nh (default constructor):
Khng c tham s. Dng to i tng vi thng tin mc nh. Lp khng c hm to. Trnh bin dch cung cp.
void main() { PhanSo p;
2.4 Hm to
33
2.4 Hm to
Hm
to c tham s: l hm to c cc tham bin cho php khi to mt b gi tr no cho cc d liu thnh phn ca i tng, kiu tham bin cho hm to c th l kiu bt k ngoi tr kiu lp ang nh ngha.
V d: sophuc tg(10,-2);; sophuc tong(2,-3), hieu(0,0);
6 December 2012
34
2.4 Hm to
C tham s l i tng cng lp. Dng to i tng mi t i tng cng lp c. Lp khng c hm to sao chp. Trnh bin dch cung cp. Khi lp c cc thuc tnh con tr th phi nh ngha hm to sao chp mi.
void main() { PhanSo p1(1, 2); PhanSo p2(p1); PhanSo p3 = p2; }
class PhanSo { private: int tuso; int mauso; public: PhanSo(const PhanSo &p); }; 35
6 December 2012
36
* v d:
class PS { Private: int ts,ms; public: PS( const PS &x); //Hm to sao chp void nhap(); void in(); }; //nh ngha hm to sao chp PS :: PS( const PS &x) { ts = x.ts; ms = x.ms; }
6 December 2012 37
* v d:
Class x { Private: int * x; public: x( int i=0) { x=new int; *x=i; } void setx(int i) { *x=i; } void main() { x a(2); a.printf(); x b(a); b.printf(); b.setx(100); b.printf(); a.printf(); }
2.4 Hm to
Mt lp thng c ti thiu 3 hm to:
class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo(); PhanSo(int tuSo, int mauSo); PhanSo(const PhanSo &p); };
39
khai bo trong vng public Tn ca cu t phi trng vi tn ca lp T ng c thc hin khi khai bo i tng Mt lp c th c nhiu hm cu t Khi mt lp c nhiu cu t, vic to i tng phi km theo cc tham s ph hp vi cc hm khai bo Hm cu t khng c kiu tr v Khng th k tha, nhng lp dn xut vn c th gi hm cu t ca lp c s
6 December 2012
40
2.5 Hm hy
Vn r r b nh (memory leak):
Khi hot ng, i tng c cp pht b nh. Khi hy i tng, b nh khng c thu hi!! Gii php:
SinhVien
H tn im ton im tin Thu hi
R r b nh!!
Hm hy!!
41
2.5 Hm hy
class Sinhvien { private: char *hoten; float diemtoan; float diemtin; public: ~HocSinh() { delete hoTen; } };
42
6 December 2012 43
2.5 Hm Hy
#include <iostream.h> #include <conio.h> class test{ private: int num; public: test(int n); ~test(); }; test::test(int n) { num=n; cout<<" goi cau tu voi num="<<num<<"\n"; } test::~test() { cout<<" goi huy tu voi num="<<num<<endl; getch(); } void f(int p) { test x(2*p); }
6 December 2012 44
2.5. S cn thit ca hm to v hm hy
i
vi cc lp khng c thnh phn d liu ng ch cn s dng hm to v hm hy mc nh l . Hm to v hm hy do ngi dng nh ngha l rt cn thit i vi cc lp cha thnh phn d liu ng. Hm to cp pht b nh ng cn hm hy th gii phng vng nh c cp pht.
6 December 2012 46
V d 1:
class Array { private: int n; int * v; public: Array(int size); }; Array::Array(int size) { n= size; v = new int[n]; } void main() { Array a1(5); }
47
Vn r r b nh:
Lp c thuc tnh con tr. i tng ca lp b hy, b nh khng thu hi. a1: Array
n v 5 010 1 2 3 4 5
R r b nh!!
48
V d 1:
class Array { private: int n; int *v; public: Array(int size); ~Array(); }; Array::~Array() { delete v; } void main() { Array a1(5); }
49
V d 2:
class Array { private: int n; int *v; public: Array(int size); ~Array(); }; void main() { Array a1(5); Array a2(a1); }
50
Vn sao chp b nh
Hm to sao chp mc nh sao chp gi tr tng thuc Dng chung b tnh. Mt b nh!! nh!! a2: Array
5 101 1 2 3 4 5 n v
a1: Array
n v
51
V d 2:
class Array { private: int n; int *v; public: Array(int size); Array(const Array &a); ~Array(); }; Array::Array(const Array &a) { n = a.n; v = new int[n]; for (int i = 0; i < n; i++)
v[ i ] = a.v[ i ];
52
V d 3:
class Array { private: int n; int *v; public: Array(int size); Array(const Array &a); ~Array(); }; void main() { Array a1(5); Array a2(6); a2 = a1; }
53
Vn sao chp b nh
Ton t gn mc nh sao chp gi tr tng thuc tnh. Dng chung b R r b nh!! Mt b nh!! nh!!
a1: Array
m_size 5 m_data 101
a2: Array
1 2 3 4 5 6
1 2 3 4 5 m_size 6 m_data 405
54
V d 2:
Array & Array::operator =(const Array &a) class Array { { delete v; private: n = a.n; int n; v = new int[n]; for (int i = 0; i < n; i++) int *v; v[ i ] = a.v[ i ]; public: return *this; Array(int size); } void main() Array(const Array &a); { ~Array(); Array a1(5); Array & operator =(const Array &a); Array a2(6); }; a2 = a1; }
55
Hm hy: thu hi b nh. Hm to sao chp: sao chp b nh. Ton t gn: sao chp b nh.
class Sinhvien { private: char *hoTen; char *maSV; char diemtb; public: Sinhvien(const Sinhvien &h); ~Sinhvien(); Sinhvien & operator =(const Sinhvien &h); };
56
2.6 Tm tt
Hm To:
Khi to thng tin ban u cho i tng. c gi khi to i tng. Mi lp c th c nhiu hm to. Dn dp b nh cho i tng. T ng gi khi i tng b hy. Mi lp c duy nht mt hm hy.
Hm Hy:
57
dng khi khng mun thay i d liu ca i tng trong mt s phng thc (hm) no . S dng: thm t kha const vo trc khai bo ca tham s hm v d:
friend sophuc cong(const sophuc &c1, const sophuc &c2); friend sophuc tru(const sophuc &c1, const sophuc &c2);
6 December 2012 58
tnh static:. S khc bit gia bin thnh vin v bin static:
Bin
thnh vin: mi i tng u s hu cc thnh phn d liu ring Bin static: dng chung cho mi i tng, mt i tng thay i th mi i tng s thay i theo.
6 December 2012 59
lm b m Tng tc x l ( ch c mt bn cho mi i tng). Bin static phi c khi to trc khi cc i tng c khi to. V d int count :: count=0;
Dng
6 December 2012
61
static:
c lp vi bt k i tng no ca lp . Hm static khng s dng i tng lm tham s ngm nh nn khng th s dng con tr this. C th gi hm static cho d c khai bo cc i tng ca lp hay khng. Hm khai bo static ch c th truy nhp ti nhng thnh phn tnh trong lp Hm thnh phn tnh c th c gi vi tn ca lp thay cho tn ca i tng
6 December 2012
62
static:
C 2 cch gi hm: Cch 1: < tn lp> :: < tn hm> ( cc tham s) Cch 2: Gi thng qua i tng.
6 December 2012
63
V d v bin static
class employee { private: char * firstname; char * lastname; static int count; public: employee(char * fname,char *lname); ~employee(); static int getcount(); };
6 December 2012 64
BI TP XY DNG LP
XAY DUNG LOP VECTO VOI CAC HAM TAO SAU:
class vector { private: int n; int * v; public: vector(); vector(int size); vector(int size,int * a); vector(vector &b); ~vector(); void display(); };
6 December 2012 65
2.9 Hm bn
bn l hm c nh ngha cho php nhiu lp cng s dng chung Khai bo: thm t kha friend vo trc kiu ca hm thnh phn C php khai bo: friend type tn-hm( parameter ) { .. }
Hm
6 December 2012 66
2.9 Hm bn
Hm
friend c th nh ngha mi ni v khng cn dng t kha friend hay tan t :: Hm friend l mt hm c nh ngha thng thng
6 December 2012
67
* c im hm bn:
Khng
nm trong min xc nh ca lp ni c
khai bo Khi truy cp n hm khng cn gn vi i tng ca lp truy nhp n cc hm friend thc hin nh cc hm khai bo thng thng Thng thng i s ca cc hm thn thin l cc i tng ang nh ngha
6 December 2012
68
* c im hm friend:
C
3 dng hm bn:
6 December 2012
69
V d hm bn l hm t do
class matran; class mang { private: float v[3]; public: mang(float a1=0,float a2=0,float a3=0); void display(); friend mang nhan(matran , mang); }; class matran { private: float m[3][3]; public: matran( float t[3][3]); friend mang nhan(matran, mang); };
6 December 2012 70
V d hm bn l hm thnh phn ca mt lp
class mang; class matran { private: float m[3][3]; public: matran( float t[3][3]); mang nhan(mang); }; class mang { private: float v[3]; public: mang(float a1=0,float a2=0,float a3=0); void display(); friend mang matran::nhan( mang); };
6 December 2012 71
Bi tng qut
#include <iostream.h> #include <conio.h> class matrix; class vector { private: static int n; int * v; public: vector(); vector(int * a); vector(vector &b); ~vector(); void display(); static int &size(); friend vector nhan(matrix &, vector & ); friend class matrix; };
6 December 2012 72
class matrix { private: vector * m; static int n; public: matrix(); ~matrix(); void display(); static int &size(); friend vector nhan(matrix &, vector &); };
6 December 2012
73