01/10/2018, 00:39

Có thể tạo class chỉ gồm các phương thức thôi không?

Chào toàn thể anh em. Mình chỉ tập tọe lập trình thôi và đang code thử về class. Mình đang có thắc mắc là có thể tạo ra một class trong đó chỉ có các method rồi cho class này là class friend với các class khác để xử lí được không ? Nếu không thì còn cách nào khác nữa ? Cảm ơn mọi người đã chú ý!

Tao Không Ngu. viết 02:45 ngày 01/10/2018

Có. Các ngôn ngữ lập trình đều có. Như một cách linh hoạt để cài dặt lập trình hướng cấu trúc.

C++ bạn tạo 1 class toàn phương thức tính để gộp các hàm lại.
VD : ClassMath trong đó có các hàm sin cos tan. v.v.v…
Nếu muốn có nhiều quền hơn thì dùng lớp bạn hàm bạn.

Java Lớp tĩnh.
C# thì có thể dùng lớp tĩnh hoặc Extension Methods.

Tuy nhiên cần hạn chế vì khi đó không thể tận dụng được các tính chât của OPP.

Quang viết 02:50 ngày 01/10/2018

Cảm ơn bạn. Mình cũng hiểu cách dùng friend class rồi. Ý mình ở đây là mình có khá nhiều hàm tự do và mình muốn gom chúng lại thành một class về các method.

Tao Không Ngu. viết 02:50 ngày 01/10/2018

Bạn có một loạt các hàm về lượng giác thì xây dưng lớp tinh lượng giác. @@!
Mình không hiểu rõ ý bạn lắm. ?
?!

Quang viết 02:44 ngày 01/10/2018

Gần tương tự như vậy. Nhưng ở đây mình có 3-4 class. Việc gọi friend class từ những hàm tự do như ban đầu của mình thấy nhiều quá. Và ý tưởng của mình muốn rút bớt bằng cách tạo ra một class hoặc tập hợp các lệnh để xử lí cho gọn hơn

Tao Không Ngu. viết 02:43 ngày 01/10/2018

1 Hàm bạn lớp bạn không thể dùng tùy tiện. Nó làm mất đi tính đóng gói.
VD : ClassPoint có thuộc tính tọa độ X, Y. Thay vì tạo các lớp bạn để gọi ra tọa độ của nó thì bạn nên viết phương thức get-set cho nó, Hoặc xây dụng thanh cấu trúc. (java bỏ hàm bạn lớp bạn).
2 Gán các hàm cho các Object.
VD : ClassHinhTron thay vì tạo phương thức bạn - tính tính diện tích thì thêm phương thức cho class hình tròn để gọi ClassHinhTrong.DienTIch.
3 Sau khi loại bỏ bớt đi thì chỉ còn lại số ít các hàm. Khi đó bạn chia nó vào các lớp co chức năng tuong ứng không thể tòng các hàm toán học với các hàm dọc ghi file vào cùng 1 lớp đươc.

Bạn có thể nêu rõ yêu cầu không vì có vẻ bạn cần thiết kế lại cấu trúc chương trình.

viết 02:54 ngày 01/10/2018

xài static method ấy

class Math
{
public:
    static double f(double);
    static int abc(int);
};

rồi khi xài thì gọi

Math::f(x);
Math::abc(n);

hoặc xài namespace luôn nếu tất cả các method đều là public

namespace math
{
    double f(double);
    int abc(int);
};

//cách gọi tương tự:
math::f(x);
math::abc(n);

//hoặc
using namespace math;
f(x);
abc(n);
Quang viết 02:50 ngày 01/10/2018

Cảm ơn bạn. Mình sẽ nghiên cứu cái này

Quang viết 02:51 ngày 01/10/2018

Có lẽ mình phải thiết kế lại. Cảm ơn bạn

Bài liên quan
0