phân biệt private và public và protected


Diễn đàn chia sẻ kiến thức, kinh nghiệm về IT và cuộc sống!
 
Trang ChínhGalleryTìm kiếmLatest imagesĐăng kýĐăng Nhập
Top posters
Sakura (1124)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
hotboy (705)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
Già Làng (373)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
con_ca_nho90 (289)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
that_true (154)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
theanhkkt (143)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
phamay (137)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
lovelonelyman (134)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
o0ovioletstaro0o (128)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
stevenhung (122)
phân biệt private và public và protected Vote_lcapphân biệt private và public và protected Voting_barphân biệt private và public và protected Vote_rcap 
Âm - Dương lịch
Clock
Logo
11TH02 Pro!
Liên kết
Tin tức 60s
Tin công nghệ
Thời sự 24h
Game Moblie

Share
 

 phân biệt private và public và protected

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

phân biệt private và public và protected Stars7
Sakura

Thú CƯng : phân biệt private và public và protected I-hate-Cats-icon
Nam Scorpio

Số bài viết : 1124
Điểm : 1688
Được cảm ơn : 35
Ngày sinh : 03/11/1990
Tham gia ngày : 16/03/2010
Tuổi : 34
Đến từ : Bình Dương
Ngề nghiệp : IT Student

phân biệt private và public và protected Empty
Bài gửiTiêu đề: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime20/7/2010, 15:30

trong C++ thì class có 3 thuộc tính truy cập là private, protected và public.
về công dụng thì sách vở nói nhiều rồi, mình xin tóm lại vài câu như sau:
+ private: thuộc tính, phương thức nào mang nhãn private này thì chỉ được phép truy xuất (gọi) từ các hàm thành viên của lớp đó thôi. thường thì người ta sử dụng private nhằm mục đích là che giấu thông tin (cụ thể hơn là các thuộc tính) của 1 lớp tạo nên tính đóng gói cho lớp - đối tượng. người ta sẽ không cần biết các thông tin private này, mà chỉ quan tâm đến các thông tin public mà người thiết kế hướng đối tượng cho phép xem. và xử lý đối tượng thông qua các phương thức public này. cụ thể hơn, các bạn có thể xem thêm trong giáo trình của cô hoặc bất kỳ, sẽ nói rõ hơn cho các bạn.
+ public: ngược lại với private - che giấu, thì public này có vẻ thoải mái hơn, nó cho phép ở bất kỳ nơi nào cũng có thể gọi đến các thuộc tính và phương thức mang nhãn public này, thường thì các phương thức đều có nhãn là public, trừ các trường hợp đặc biệt tuỳ vào mục đích của người lập trình mà nó có thể mang nhãn private hay protected.
+ protected: chỉ đc truy xuất từ chính lớp đó và các lớp kế thừa từ nó (sẽ nói rõ hơn khi các bạn tiếp xúc đến phần Thừa kế)
và sau đây là đoạn code minh hoạ 2 thuộc tính truy cập của lớp là private và public:

#include

#include

using
namespace std;

class
Person1
{

private
:
char ten[30];
unsigned tuoi;
};

class
Person2
{

public
:
char ten[30];
unsigned tuoi;
};

int
main()
{
Person1 p1;
Person2 p2;
p1.tuoi = 20;
//Error 1 error C2248: 'Person1::tuoi' : cannot access private member declared in class 'Person1' d:\bai tap c++\thuoctinhtruycap1\thuoctinhtruycap1\tttc.cpp 25 1 ThuocTinhTruyCap1

p2.tuoi = 20;
return 0;
}


chúng ta có 2 lớp person1 và person2, cả 2 đều có 2 thuộc tính ten và tuoi. lớp person1, 2 thuộc tính này mang nhãn private, còn lớp person2 thì là public, như đã nói ở trên thì nhãn public sẽ được truy xuất bất kỳ nơi đâu (cụ thể ở đây là hàm main), còn private thì không thể.
ở trong hàm main chương trình này, ta khai báo 2 đối tượng: p1 thuộc lớp person1, p2 thuộc lớp person2, và ta thử gọi p1.tuoi = 20; nó xuất ra cái thông báo, dịch ra đơn giản là: không thể truy cập đến các thành viên private đc khai báo trong lớp person1. đó là do ta không thể nào đụng chạm trực tiếp đến các thành viên private đc. còn ta gọi p2.tuoi = 20 thì chẳng sao, bởi vì thuộc tính tuổi của đối tượng p2 (thuộc lớp person2) là public, nên ta thoải mái gọi như vậy.
và có 1 vấn đề nho nhỏ xảy ra, trong lớp person1, các thuộc tính mang nhãn private - ko đc đụng đến, mà giờ ta muốn đụng đến thì sao? có 1 cách là viết cho nó 1 cái phương thức cập nhật (gán - Set) và 1 cái phương thức truy xuất (lấy - Get) là OK thôi, xem đoạn ct sau, các bạn sẽ rõ:

#include

#include

using
namespace std;
class
Person1
{

private
:
char ten[30];
unsigned tuoi;
public
:
void SetTuoi(unsigned tuoi)
{
this->tuoi = tuoi;
}
unsigned GetTuoi()
{
return this->tuoi;
}
};

class
Person2
{

public
:
char ten[30];
unsigned tuoi;
};

int
main()
{
Person1 p1;
Person2 p2;
p1.SetTuoi(30);
cout<<
"Tuoi Cua p1: "<cout<<"\nTuoi Cua p2: "<
_getch();
return 0;
}

bằng cách thông qua 2 phương thức public Get, Set, ta đã có thể thoái mái truy nhập vào các thành phần private rồi, còn cái ten, các bạn tự thiết kế cho nó đi nha!
Mình bỏ cả buổi ra để viết ra những lời này, tuy còn chưa đủ nhưng nhiêu đó là cũng đủ cho các bạn muốn có cái nhìn đầu tiên về Class rồi đó! Phần còn lại là của các bạn thôi!
Về Đầu Trang Go down
Sakura

phân biệt private và public và protected Stars7
Sakura

Thú CƯng : phân biệt private và public và protected I-hate-Cats-icon
Nam Scorpio

Số bài viết : 1124
Điểm : 1688
Được cảm ơn : 35
Ngày sinh : 03/11/1990
Tham gia ngày : 16/03/2010
Tuổi : 34
Đến từ : Bình Dương
Ngề nghiệp : IT Student

phân biệt private và public và protected Empty
Bài gửiTiêu đề: Re: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime20/7/2010, 15:33

Bị Lỗi Rồi!
trong C++ thì class có 3 thuộc tính truy cập là private, protected và public.
về công dụng thì sách vở nói nhiều rồi, mình xin tóm lại vài câu như sau:
+ private: thuộc tính, phương thức nào mang nhãn private này thì chỉ được phép truy xuất (gọi) từ các hàm thành viên của lớp đó thôi. thường thì người ta sử dụng private nhằm mục đích là che giấu thông tin (cụ thể hơn là các thuộc tính) của 1 lớp tạo nên tính đóng gói cho lớp - đối tượng. người ta sẽ không cần biết các thông tin private này, mà chỉ quan tâm đến các thông tin public mà người thiết kế hướng đối tượng cho phép xem. và xử lý đối tượng thông qua các phương thức public này. cụ thể hơn, các bạn có thể xem thêm trong giáo trình của cô hoặc bất kỳ, sẽ nói rõ hơn cho các bạn.
+ public: ngược lại với private - che giấu, thì public này có vẻ thoải mái hơn, nó cho phép ở bất kỳ nơi nào cũng có thể gọi đến các thuộc tính và phương thức mang nhãn public này, thường thì các phương thức đều có nhãn là public, trừ các trường hợp đặc biệt tuỳ vào mục đích của người lập trình mà nó có thể mang nhãn private hay protected.
+ protected: chỉ đc truy xuất từ chính lớp đó và các lớp kế thừa từ nó (sẽ nói rõ hơn khi các bạn tiếp xúc đến phần Thừa kế)
và sau đây là đoạn code minh hoạ 2 thuộc tính truy cập của lớp là private và public:
#include

#include

using namespace std;

class Person1
{

private:

char ten[30];

unsigned tuoi;
};

class Person2
{

public:

char ten[30];

unsigned tuoi;
};

int main()
{

Person1 p1;

Person2 p2;

p1.tuoi = 20; //Error 1 error C2248: 'Person1::tuoi' : cannot access private member declared in class 'Person1' d:\bai tap c++\thuoctinhtruycap1\thuoctinhtruycap1\tttc.cpp 25 1 ThuocTinhTruyCap1


p2.tuoi = 20;

return 0;
}

chúng ta có 2 lớp person1 và person2, cả 2 đều có 2 thuộc tính ten và tuoi. lớp person1, 2 thuộc tính này mang nhãn private, còn lớp person2 thì là public, như đã nói ở trên thì nhãn public sẽ được truy xuất bất kỳ nơi đâu (cụ thể ở đây là hàm main), còn private thì không thể.
ở trong hàm main chương trình này, ta khai báo 2 đối tượng: p1 thuộc lớp person1, p2 thuộc lớp person2, và ta thử gọi p1.tuoi = 20; nó xuất ra cái thông báo, dịch ra đơn giản là: không thể truy cập đến các thành viên private đc khai báo trong lớp person1. đó là do ta không thể nào đụng chạm trực tiếp đến các thành viên private đc. còn ta gọi p2.tuoi = 20 thì chẳng sao, bởi vì thuộc tính tuổi của đối tượng p2 (thuộc lớp person2) là public, nên ta thoải mái gọi như vậy.
và có 1 vấn đề nho nhỏ xảy ra, trong lớp person1, các thuộc tính mang nhãn private - ko đc đụng đến, mà giờ ta muốn đụng đến thì sao? có 1 cách là viết cho nó 1 cái phương thức cập nhật (gán - Set) và 1 cái phương thức truy xuất (lấy - Get) là OK thôi, xem đoạn ct sau, các bạn sẽ rõ:

#include
#include
using namespace std;
class Person1
{
private:

char ten[30];

unsigned tuoi;
public:
void SetTuoi(unsigned tuoi)
{

this->tuoi = tuoi;
}
unsigned GetTuoi()
{

return this->tuoi;
}
};
class Person2
{
public:

char ten[30];

unsigned tuoi;
};
int main()
{

Person1 p1;

Person2 p2;

p1.SetTuoi(30);

cout<<"Tuoi Cua p1: "<

p2.tuoi = 20;

cout<<"\nTuoi Cua p2: "<

_getch();

return 0;
}
bằng cách thông qua 2 phương thức public Get, Set, ta đã có thể thoái mái truy nhập vào các thành phần private rồi, còn cái ten, các bạn tự thiết kế cho nó đi nha!
Mình bỏ cả buổi ra để viết ra những lời này, tuy còn chưa đủ nhưng nhiêu đó là cũng đủ cho các bạn muốn có cái nhìn đầu tiên về Class rồi đó! Phần còn lại là của các bạn thôi!

CHÚC MỌI NGƯỜI THÀNH CÔNG!
Về Đầu Trang Go down
tkhking

Member Năng Động


Member Năng Động
tkhking

Thú CƯng : phân biệt private và public và protected Panda-icon
Nam Pisces

Số bài viết : 114
Điểm : 135
Được cảm ơn : 1
Ngày sinh : 18/03/1990
Tham gia ngày : 01/07/2010
Tuổi : 34
Đến từ : Óc Trâu Lấy Ra
Ngề nghiệp : Student
Chăm ngôn : King

phân biệt private và public và protected Empty
Bài gửiTiêu đề: Re: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime20/7/2010, 20:35

diễn đàn bị sao rồi nè chán quá đi thôi
Về Đầu Trang Go down
hoacodai

phân biệt private và public và protected Stars16
hoacodai

Thú CƯng : Khung Long
Nữ Aries

Số bài viết : 15
Điểm : 19
Được cảm ơn : 0
Ngày sinh : 12/04/1990
Tham gia ngày : 20/07/2010
Tuổi : 34
Đến từ : Taiwan

phân biệt private và public và protected Empty
Bài gửiTiêu đề: Re: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime21/7/2010, 13:24

Ông Admin này làm ăn chán quá! phải lo fix thường xuyên đi chớ, để dzậy anh em bất mãn quá à nha!
Về Đầu Trang Go down
Sakura

phân biệt private và public và protected Stars7
Sakura

Thú CƯng : phân biệt private và public và protected I-hate-Cats-icon
Nam Scorpio

Số bài viết : 1124
Điểm : 1688
Được cảm ơn : 35
Ngày sinh : 03/11/1990
Tham gia ngày : 16/03/2010
Tuổi : 34
Đến từ : Bình Dương
Ngề nghiệp : IT Student

phân biệt private và public và protected Empty
Bài gửiTiêu đề: Re: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime21/7/2010, 13:26

Acc! Dzô nhầm nick, anh em thông cảm giùm he! hichic!
Về Đầu Trang Go down
Sponsored content




phân biệt private và public và protected Empty
Bài gửiTiêu đề: Re: phân biệt private và public và protected   phân biệt private và public và protected I_icon_minitime

Về Đầu Trang Go down
 

phân biệt private và public và protected

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

 Similar topics

-
» Phân biệt giải thuật tìm kiếm sâu và sâu dần...
» Các hàm Xử Lý Chuỗi Cần Phải Biết Trong C - strcat
» Các hàm Xử Lý Chuỗi Cần Phải Biết Trong C - strcmp
» Các hàm Xử Lý Chuỗi Cần Phải Biết Trong C - strcpy
» [OOP] Danh Sách Đề Tài Của Cô Phẩm và Các thông tin cần biết!!!

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT World! :: HỌC TẬP :: Học Kỳ IV :: Lập Trình Hướng Dối Tượng(OOP)-