muốn truy cập các thuộc tính private thì tại class ta viết các phương thức get set để encapsulation nó.
get để lấy và set để gán.
Nhờ các bạn giải hộ mình bài này:
-tạo lớp d2 là tọa độ các điểm trong không gian 0xy yêu cầu:
+tọa độ là thuộc tính private
+hàm thiết lập với tham số mặc định
+đa năng hóa toán tử >>,<< để nhập và xuất dữ liệu
+kiểm tra xem điểm A thuộc d2 nằm ở vị trí như thế nào với đường tròn(Tâm 0, bk = 1)
-Tạo lớp d3 kế thừa lớp d2 là tọa độ các điểm trong không gian 0xyz yêu cầu:
+tọa độ là thuộc tính private
+hàm thiết lập với tham số mặc định
+đa năng hóa toán tử >>,<< để nhập và xuất dữ liệu
+kiểm tra xem điểm B thuộc d3 nằm ở vị trí như thế nào với mặt cầu (Tâm 0, bk = 1)
=>Các bạn giải nhanh hộ mình với nha, sắp thi rồi, mình không hiểu truy xuất tới thuộc tính private của lớp d2 như thế nào nên không làm được? Thanks các bạn nhiều
muốn truy cập các thuộc tính private thì tại class ta viết các phương thức get set để encapsulation nó.
get để lấy và set để gán.
Nghe Metal và dịch thơ
lttqstudy.wordpress.com
Để mình giải thích rõ hơn một chút ý của bạn Ittq
- Chỉ có các phương thức của lớp (+ friend function) mới đc phép truy xuất tới các dữ liệu private của lớp
- Giả sử như thành phần dữ liệu của lớp là: private: int data;
------> Để truy xuất x người ta hay dùng phương thức getData () (tuy là phương thức tự xây dựng nhưng để truy xuất data người ta hay đặt tên là get... : Quy ước cho dễ dùng)
C++ Code:
int getData () { return data; }
- Không chỉ có các thành phần ngoài class mới không được dùng private của lớp. Mà các thành phần của lớp cũng tránh dùng trực tiếp nó
- Lý do: Còn kiểm tra điều kiện ................ Bây giờ getData () chính là cái dữ liệu data (ở mức private)
Đã được chỉnh sửa lần cuối bởi beautifulsoul84hung : 21-10-2011 lúc 06:16 PM.
Giả sử ở lớp d2 mình có các toán tử nhập và xuất như sau:
Bây giờ ở lớp d3 kế thừa của lớp d2 mình phải làm thế nào để nhập và xuấtC++ Code:
//---
C++ Code:
#include<iostream.h> #include<math.h> class d2 { float x,y; public: d2(float x=0,float y=0) { x=x; y=y; } float getx() { return x; } float gety() { return y; } float dodai() { return sqrt(x*x+y*y);//khoang cach tu diem toi goc toa do } void vitri() { } friend istream &operator >> (istream &in, d2 &c) { in>>c.x; in>>c.y; return in; } friend ostream &operator << (ostream &out , d2 &c) { out<<c.x; out<<c.y; return out; } }; class d3:d2 { float z; public: d3(float x=0,float y=0,float z=0):d2(x,y) { z=z; } float getz() { return z; } friend istream &operator >> ( istream &in, d3 &c) { } friend ostream &operator << (ostream &out , d3 &c) { } }; void main() { }
Đây là code của mình các bạn hoàn thiên nốt giùm mình với
Đã được chỉnh sửa lần cuối bởi beautifulsoul84hung : 21-10-2011 lúc 07:06 PM. Lý do: làm liền
Lớp cha chỉ cần thay private thành protected thì lớp con sẽ truy xuất được.
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
Mình thấy kiến trúc này ko ổn tí nào hết. Đã bắt buộc private tức là ko muốn lớp con truy cập, ko muốn người ngoài truy cập. Bạn lại cố lấy ra truy xuất. Như thế thì private cũng có ý nghĩa nữa đâu, ko khác gì protected cả. Vậy tại sao ko dùng protected ?
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
Theo mình thì đề ko bắt bạn phải làm việc đó, tại bạn tự nghĩ ra nó như thế thôi. Bài của bạn chỉ cần làm như thế này thôi là được :
C++ Code:
#include <iostream.h> #include <conio.h> class d2 { private: int x, y; public: d2(int x = 0, int y = 0) { this->x = x; this->y = y; } friend istream & operator >> (istream &is, d2 &v) { is>> v.x >> v.y; return is; } friend ostream & operator << (ostream &os, d2 &v) { os<< v.x << "," << v.y; return os; } }; class d3 : public d2 { private: int z; public: d3(int x = 0, int y = 0, int z = 0) : d2(x, y) { this->z = z; } friend istream & operator >> (istream &is, d3 &v) { is>> (d2&)v >> v.z; return is; } friend ostream & operator << (ostream &os, d3 &v) { os<< (d2)v << "," << v.z; return os; } }; void main() { d3 a; getch(); }
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
Đề bài bắt buộc vậy mà, mình cũng có thích như vậy đâu