Bài giảng Lập trình hướng đối tượng và C++: Chương 5
Số trang: 5
Loại file: pdf
Dung lượng: 142.00 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Lập trình hướng đối tượng và C++: Chương 5 Hàm xây dựng, hàm hủy và việc khởi tạo đối tượng trình bày các nội dung sau: Hàm xây dựng, hàm hủy, hàm xây dựng sao chép, thuộc tính của 1 lớp là đối tượng,...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng và C++: Chương 5N i dung• Hàm xây d ngChương 5HÀM XÂY D NG, HÀM H Y VÀVI C KH I T O ð I TƯ NG• Hàm h y• Hàm xây d ng sao chép• Thu c tính c a 1 l p là ñ i tư ng12Hàm xây d ngHàm xây d ng• M c ñích: kh i t o giá tr ban ñ u cho ñ i tư ng• Ví d :– Gán giá tr ñ u cho các thu c tính.– C p vùng nh cho con tr thành viên.class Diem {int x, y;public:Diem(int a){ x = y = a; }Diem(int h, int t){ x = h; y=t; }….};class PhanSo {int tu, mau;public:PhanSo(){ tu=0; mau=1; }PhanSo(int x){ tu=x; mau=1; }PhanSo(int t, int m){ tu = t; mau=m; }….};3class SinhVien {class Stack {char mssv[8];float *ds;char* hoten;int soluong;int namsinh;int vitri;float diemtb;public:public:Stack(int max = 10)C p vùng nhSinhVien() {{cho con trstrcpy(mssv,””);soluong = max;hoten = new char[50];vitri = 0;namsinh = 1980;ds = newfloat[soluong];diemtb = 0;}}SinhVien(char*,char*,int,flStack(float* d, int m,int n);oat);……};};4Hàm xây d ngHàm xây d ng• N u không có ñ nh nghĩa hàm xây d ng:• N u có ñ nh nghĩa ít nh t 1 hàm xây d ng:– M c nhiên s t ñ ng có 1 hàm xây d ng không tham s .– Ch có 1 cách kh i t o ñ i tư ng theo d ng không tham s .class Diem {int x, y;public:void InDiem();void NhapDiem();void GanGiaTri(int,int);intGiaTriX();intGiaTriY();…};// ð nh nghĩa các hàmthành viên...void main() {Diema;Diem*pa = new Diem();Diemds1[10];Diem*ds2 = newDiem[20];…}xy……a1000HKhông có giá trñ unên d gây rahi u ng ph5Hàm xây d ng– Hàm xây d ng s g i sau trên ñ i tư ng.tumauPhanSo c(2,5);tu1000 mau*pa225c1000Htu 0 0 0 0 01000mau 1 1 1 1 1*pa2tumauc1000H1200HStackb(5);*dssoluongvitrivoid main() {void main() {PhanSo a;Stack a;PhanSo b(3);Stack b(5);PhanSo c(2,5);Stack c[5];PhanSo d[3];Stack *pa = new Stack();PhanSo *pa = new PhanSo;Stack *pb = new Stack(40);PhanSo *pa1 = new PhanSo();Stack *pc = new Stack[40];PhanSo *pa2 = new PhanSo[5]; float data[40];PhanSo *pb = new PhanSo(3);for(int i=0;i delete con tr .class SinhVien {char mssv[8];char* hoten;intnamsinh;float diemtb;public:SinhVien() {strcpy(mssv,””);hoten = new char[50];namsinh = 1980;diemtb = 0;}~SinhVien() {delete[] hoten;}…};class Stack {float *ds;intsoluong;intvitri;public:Stack(intmax = 10) {soluong = max;vitri = 0;ds = newfloat[soluong];}~Stack() {delete[] ds; }…8};Hàm h yHàm xây d ng sao chép• Th t th c hi n: g i trư c khi h y ñ i tư ng:– K t thúc 1 hàm mà trong ñó ta có kh i t o ñ i tư ng.• T i sao c n hàm xây d ng sao chép?– Kh i t o 1 ñ i tư ng có giá tr gi ng 1 ñ i tư ng khác.– Thu h i vùng nh cho con tr ñ i tư ng.– Khác v i phép gán (d u =)Hàm xây d ng ñư c g ivoid HamMinhHoa() {Stack a;Stack *pa = new Stack(8);…delete pa;Stack *pb = new Stack[5];…delete[] pb;pb = new Stack(20);…}• N u không ñ nh nghĩa hàm xây d ng sao chép:Hàm h y ñư c g i choñ i tư ng mà pa ñang tr t i– Ngôn ng s t ñ ng t o ra cho ta: n i dung là gán (=)tương ng t ng thành ph n.Hàm xây d ng ñư c g i 5 l n– Không chính xác khi có d li u thành viên là con tr .Hàm h y ñư c g i 5 l nHàm xây d ng ñư c g iHàm h y ñư c g i cho atrư c khi k t thúc hàmHamMinhHoa() 9Hàm xây d ng sao chép10Hàm xây d ng sao chép• Cú pháp: (const &const&Stack a(8);…*ds 13008soluong3vitriaStack b(a);{ N i dung hàm }1300H4*ds 13008soluong3vitrib)3.21.4…VD: Diem(const Diem& d) { … }Stack(const Stack& s) { … }2 con tr s trcùng 1 ñ a chn u khôngñ nh nghĩahàm xây d ngsao chépSinhVien(const SinhVien& sv) { … }• N i dung:– Gán tương ng các thành ph n d li u (không là con tr ).– C p vùng nh và sao chép n i dung vùng nh t ñ i tư ngcho trư c.VD: Diem(const Diem& d) { x=d.x; y=d.y; }PhanSo(const PhanSo& p) { tu=p.tu;mau=p.mau; }12Hàm xây d ng sao chépHàm xây d ng sao chép• Ví d :• Ví d :SinhVien nva; …class SinhVien {charmssv[8];char* hoten;intnamsinh;floatdiemtb;public:…SinhVien(const SinhVien& s){strcpy(mssv, s.mssv);hoten = new char[50];strcpy(hoten, s.hoten);namsinh = s.namsinh;diemtb = s.diemtb;}…};1 9 2 0 8 9 1 124019748.14mssv[]*hotennamsinhdiemtb1240HNguyen2760HNg……copyuyen1 9 2 0 8 9 1 276019748.14SinhVien x(nva);……mssv[]*hotennamsinhdiemtbclass Stack {Stack a(8); …float*ds;*ds 13001300Hintsoluong;4 3.2 1.4 ……soluong 8intvitri;3vitripublic:a…copyStack(const Stack& s) {soluong = s.soluong;*ds 1570vitri = s.vitri;4 3.2 1.4 ……soluong 8ds = new float[soluong];1570H3vitrifor(int i=0; i ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng và C++: Chương 5N i dung• Hàm xây d ngChương 5HÀM XÂY D NG, HÀM H Y VÀVI C KH I T O ð I TƯ NG• Hàm h y• Hàm xây d ng sao chép• Thu c tính c a 1 l p là ñ i tư ng12Hàm xây d ngHàm xây d ng• M c ñích: kh i t o giá tr ban ñ u cho ñ i tư ng• Ví d :– Gán giá tr ñ u cho các thu c tính.– C p vùng nh cho con tr thành viên.class Diem {int x, y;public:Diem(int a){ x = y = a; }Diem(int h, int t){ x = h; y=t; }….};class PhanSo {int tu, mau;public:PhanSo(){ tu=0; mau=1; }PhanSo(int x){ tu=x; mau=1; }PhanSo(int t, int m){ tu = t; mau=m; }….};3class SinhVien {class Stack {char mssv[8];float *ds;char* hoten;int soluong;int namsinh;int vitri;float diemtb;public:public:Stack(int max = 10)C p vùng nhSinhVien() {{cho con trstrcpy(mssv,””);soluong = max;hoten = new char[50];vitri = 0;namsinh = 1980;ds = newfloat[soluong];diemtb = 0;}}SinhVien(char*,char*,int,flStack(float* d, int m,int n);oat);……};};4Hàm xây d ngHàm xây d ng• N u không có ñ nh nghĩa hàm xây d ng:• N u có ñ nh nghĩa ít nh t 1 hàm xây d ng:– M c nhiên s t ñ ng có 1 hàm xây d ng không tham s .– Ch có 1 cách kh i t o ñ i tư ng theo d ng không tham s .class Diem {int x, y;public:void InDiem();void NhapDiem();void GanGiaTri(int,int);intGiaTriX();intGiaTriY();…};// ð nh nghĩa các hàmthành viên...void main() {Diema;Diem*pa = new Diem();Diemds1[10];Diem*ds2 = newDiem[20];…}xy……a1000HKhông có giá trñ unên d gây rahi u ng ph5Hàm xây d ng– Hàm xây d ng s g i sau trên ñ i tư ng.tumauPhanSo c(2,5);tu1000 mau*pa225c1000Htu 0 0 0 0 01000mau 1 1 1 1 1*pa2tumauc1000H1200HStackb(5);*dssoluongvitrivoid main() {void main() {PhanSo a;Stack a;PhanSo b(3);Stack b(5);PhanSo c(2,5);Stack c[5];PhanSo d[3];Stack *pa = new Stack();PhanSo *pa = new PhanSo;Stack *pb = new Stack(40);PhanSo *pa1 = new PhanSo();Stack *pc = new Stack[40];PhanSo *pa2 = new PhanSo[5]; float data[40];PhanSo *pb = new PhanSo(3);for(int i=0;i delete con tr .class SinhVien {char mssv[8];char* hoten;intnamsinh;float diemtb;public:SinhVien() {strcpy(mssv,””);hoten = new char[50];namsinh = 1980;diemtb = 0;}~SinhVien() {delete[] hoten;}…};class Stack {float *ds;intsoluong;intvitri;public:Stack(intmax = 10) {soluong = max;vitri = 0;ds = newfloat[soluong];}~Stack() {delete[] ds; }…8};Hàm h yHàm xây d ng sao chép• Th t th c hi n: g i trư c khi h y ñ i tư ng:– K t thúc 1 hàm mà trong ñó ta có kh i t o ñ i tư ng.• T i sao c n hàm xây d ng sao chép?– Kh i t o 1 ñ i tư ng có giá tr gi ng 1 ñ i tư ng khác.– Thu h i vùng nh cho con tr ñ i tư ng.– Khác v i phép gán (d u =)Hàm xây d ng ñư c g ivoid HamMinhHoa() {Stack a;Stack *pa = new Stack(8);…delete pa;Stack *pb = new Stack[5];…delete[] pb;pb = new Stack(20);…}• N u không ñ nh nghĩa hàm xây d ng sao chép:Hàm h y ñư c g i choñ i tư ng mà pa ñang tr t i– Ngôn ng s t ñ ng t o ra cho ta: n i dung là gán (=)tương ng t ng thành ph n.Hàm xây d ng ñư c g i 5 l n– Không chính xác khi có d li u thành viên là con tr .Hàm h y ñư c g i 5 l nHàm xây d ng ñư c g iHàm h y ñư c g i cho atrư c khi k t thúc hàmHamMinhHoa() 9Hàm xây d ng sao chép10Hàm xây d ng sao chép• Cú pháp: (const &const&Stack a(8);…*ds 13008soluong3vitriaStack b(a);{ N i dung hàm }1300H4*ds 13008soluong3vitrib)3.21.4…VD: Diem(const Diem& d) { … }Stack(const Stack& s) { … }2 con tr s trcùng 1 ñ a chn u khôngñ nh nghĩahàm xây d ngsao chépSinhVien(const SinhVien& sv) { … }• N i dung:– Gán tương ng các thành ph n d li u (không là con tr ).– C p vùng nh và sao chép n i dung vùng nh t ñ i tư ngcho trư c.VD: Diem(const Diem& d) { x=d.x; y=d.y; }PhanSo(const PhanSo& p) { tu=p.tu;mau=p.mau; }12Hàm xây d ng sao chépHàm xây d ng sao chép• Ví d :• Ví d :SinhVien nva; …class SinhVien {charmssv[8];char* hoten;intnamsinh;floatdiemtb;public:…SinhVien(const SinhVien& s){strcpy(mssv, s.mssv);hoten = new char[50];strcpy(hoten, s.hoten);namsinh = s.namsinh;diemtb = s.diemtb;}…};1 9 2 0 8 9 1 124019748.14mssv[]*hotennamsinhdiemtb1240HNguyen2760HNg……copyuyen1 9 2 0 8 9 1 276019748.14SinhVien x(nva);……mssv[]*hotennamsinhdiemtbclass Stack {Stack a(8); …float*ds;*ds 13001300Hintsoluong;4 3.2 1.4 ……soluong 8intvitri;3vitripublic:a…copyStack(const Stack& s) {soluong = s.soluong;*ds 1570vitri = s.vitri;4 3.2 1.4 ……soluong 8ds = new float[soluong];1570H3vitrifor(int i=0; i ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Lập trình hướng đối tượng Lập trình hướng đối tượng Lập trình hướng đối tượng và C++ Bài giảng Lập trình Việc khởi tạo đối tượng Hàm xây dựngTài liệu có liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 316 0 0 -
101 trang 211 1 0
-
14 trang 141 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 129 0 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 104 0 0 -
Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
111 trang 103 0 0 -
265 trang 93 0 0
-
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 86 0 0 -
33 trang 75 0 0
-
Ngôn ngữ lập trình C# 2005 - Tập 3: Lập trình hướng đối tượng (Phần 1)
196 trang 58 0 0