Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Hướng đối tượng có gì khác biệt!?! Fri Jul 01, 2011 8:28 pm | |
| | Fri Jul 01, 2011 8:28 pm Hướng đối tượng có gì khác biệt!?! | | | Lập trình đối tượng:Đối tượng = Dữ liệu + Hành vi ( phương thức) Ví dụ:thực tế: đối tượng là người có dữ liệu là cao,đẹp,19 tuổi và hành vi chạy, ngủ , ăn,múa hát.Chương trình: - Code:
-
#include class CNguoi { private: float ChieuCao,CanNang;// Du Lieu public: //Hanh vi void set(float a,float b)//Cho ChieuCao,CanNang bang mot gia tri { ChieuCao=a; CanNang=b; } }; Ba đặc tính làm nên sự khác biệt cho hướng đối tượng: _Tính đóng gói _Tính kế thừa _Tính đa hình 1)Tính đóng gói: là đóng gói dữ liệu và hành vi, tức cả biến và các lệnh thực hiện với biến đều gộp chung trong class. 2)Tính kế thừa: ta có lớp Người đã tạo,từ lớp này ta có thể tạo lớp Nữ thừa hưởng các tính chất của lớp Người như dữ lệu: chiều cao, cân nặng.... hành vi: ăn, ngủ... và phát triển thêm các tính chất của riêng lớp Nữ như vòng 1, vòng 2 ... 3) Tính đa hình: các hàm có thể cùng tên gọi nhưng mục đích khác nhau, khi gọi hàm, trình biên dịch sẽ chọn hàm phù hợp để thực hiện Bây giờ ta xét chương trình viết theo kiểu cấu trúc và hướng đối tượng để so sánh:Cấu trúc: - Code:
-
#include <iostream.h> struct HocSinh { char Ten[31]; float Diem; }; void Nhap(HocSinh &hs) { cin.ignore; cout<<"Ten: ";//Xoa bo nho dem cin.getline(hs.Ten,30); cout<<"Diem: "; cin>>hs.Diem; } void Xuat(HocSinh hs) { cout<<hs.Ten<<" : "<<hs.Diem<<endl; } void main() { HocSinh a; Nhap(a); Xuat(a);
} Hướng đối tượng: - Code:
-
#include <iostream.h> class CHocSinh { // Du Lieu char Ten[31]; float Diem; public: //Hanh vi void Nhap(); void Xuat(); }; void CHocSinh::Nhap() { cin.ignore; cout<<"Ten: ";//Xoa bo nho dem cin.getline(Ten,31); cout<<"Diem: "; cin>>Diem; } void CHocSinh::Xuat() { cout<<Ten<<" : "<<Diem<<endl; } void main() { CHocSinh a; a.Nhap(); a.Xuat(); } Nhận xét: lập trình cấu trúc có tác vụ rời, còn với lập trình đối tượng tác vụ là hành vi được khai báo trong class. Ngoài ra tính bảo mật của cấu trúc cũng kém. - Code:
-
a.Diem=0; Xuat(a); Đoạn code trên làm thay đổi điểm nhập vào!!! Còn với lập trình hướng đối tượng, dữ liệu bảo mật. - Code:
-
a.Diem=0; a.Xuat(); Máy sẽ thông báo lỗi!!! Điều này tránh việc người dùng thay đổi dữ liệu hệ thống! Tboy
| | | | | |
|