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();
Bài liên quan
Đâ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
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.
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.
Học từ từ sẽ hiểu
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