30/09/2018, 19:45

Thắc mắc 1 vấn đề nhỏ trong C#

Chào mọi người.

Em là kẻ mới bắt đầu với C#. Hôm nay xem ví dụ một bài toán tìm chu vi và diện tích hình tròn dùng lớp và đối tượng, em có thắc mắc duy nhất ở 1 dòng trong hình bên dưới. Ai hiểu gì giải thích giúp em ý nghĩa dòng đó ạ:

HinhTron ht =new HinhTron();

Henry Smith viết 22:01 ngày 30/09/2018

Đây là câu lệnh tạo đối tượng thôi bạn
Ở đây là tạo đối tượng có tên là ht kế thừa lớp HinhTron mà bạn đã định nghĩa, rồi từ đó bạn có thể truy xuất, hay gọi đến các hàm, phương thức có trong lớp HinhTron để thực hiện

Phan Hoàng viết 21:49 ngày 30/09/2018

Cái này được gọi là lập trình hướng đối tượng (OOP object oriented programming).

OOP có ưu thế so với lập trình hướng thủ tục là dễ tái sử dụng hơn (ví dụ của bạn phía trên, có thể sử dụng hàm ht.nhap ở app #, class # tránh việc viết trùng nhiều lần), map với các thực thể trong cuộc sống nên cũng dễ hiểu hơn (ví dụ class HinhTron sẽ map với 1 thực thể là hinh_tron, có bán kính là r và tâm là O(x,y) ^^). Trong class này bạn tính ht.chuvi, ht.dientich, rồi ht.hinhquat, … (nguyên tắc thiết kế này được gọi là Domain Driven Design).

Có rất nhiều nguyên tắc thiết kế class trong OOP, ví dụ như Single Responsibility (1 class chỉ làm 1 việc). bạn sẽ có 3 class: class 1 là HinhTron, class2 là TinhChuViTask, class3 là TinhDienTichTask. Mỗi cách thiết kế đều có ưu nhược điểm riêng, ví dụ như SingleResponsiblity, rõ ràng nhược là quá nhiều file gây ra phân mảnh function, nhưng ưu điểm là chúng độc lập với nhau, viết unit-test dễ dàng, mở rộng cũng dễ dàng.

X viết 21:52 ngày 30/09/2018

HinhTron ht = new HinhTron();

Một đối tượng (object) của lớp (class) HinhTron sẽ được tạo ra trên heap.
ht lúc này là biến (variable) chứa địa chỉ tham chiếu (reference) đến đối tượng vừa tạo kia.
biến này dùng gọi các phương thức (method), hoặc thậm chí dùng làm thuộc tính (instance variable) cho một lớp khác…v.v.

int ht; // kiểu int
double ht; // kiểu double
HinhTron ht; // kiểu HinhTron.

HinhTron có thể xem là một kiểu dữ liệu mà ta tự định nghĩa ra.

Học từ từ sẽ hiểu

Minh My viết 21:56 ngày 30/09/2018

Cám ơn mọi người nhiều lắm ạ. Em mới bắt đầu với C# nên gặp nhiều cái lại bắt gặp tình trạng không hiểu vì sao nó lại như vậy. Có gì mong mọi người chỉ giúp.

Thanks

Bài liên quan
0