Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Hãy sử dụng FireFox để web hiển thị tốt hơn!


Share | 
 

 Hướng đối tượng có gì khác biệt!?!

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Tboy
Cá voi
Cá voi
avatar


Nam Tổng số bài gửi : 178
Cảm ơn : 413
Danh vọng : 4
Join date : 03/01/2011
Age : 25
Đến từ : TPHCM

Bài gửiTiê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

dữ liệu là cao,đẹp,19 tuổi 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



Về Đầu Trang Go down
Xem lý lịch thành viên http://taplaptrinh.forumvi.com
 

Hướng đối tượng có gì khác biệt!?!

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Lập trình hướng đối tượng :: Lý thuyết-