Flutter tutorial – 2.7 Lập trình hướng đối tượng trong ngôn ngữ Dart (Phần I)

Tiếp theo trong Flutter Tutorial, Báo Flutter xin gửi đến các bạn bài viết về lập trình hướng đối tượng trong ngôn ngữ Dart.

Như đã nhắc ở phần giới thiệu ngôn ngữ Dart, các bạn biết rằng Dart là một ngôn ngữ hướng đối tượng.

Chắc nhiều bạn đã biết về hướng đối tượng là gì trong các ngôn ngữ khác như Java, C# ?.
Trong ngôn ngữ Dart cũng có ý nghĩa tương tự như vậy nhưng có rất nhiều điểm khác biệt trong biểu diễn. Đừng rời mắt, Báo Flutter sẽ nói rất rõ trong chương này.

1. Đối tượng là gì trong lập trình ?
+ Là các đối tượng trong thế giới thực mà có thể mô tả thông qua thuộc tính và hành vi riêng của nó.
Ví dụ:
+ con người ( thuộc tính: tên , tuổi , giới tính.., hành vi: chạy, đá, đấm, làm việc..)
+ căn nhà ( thuộc tính: vị trí, diện tích, tên chủ nhà.. , hành vi: tránh nắng, giữ ấm…

Trong lập trình, khi bạn muốn xây dựng một đối tượng, trước tiên bạn cần phải xác định được: thuộc tính và các hành vi của nó.

2. Lớp (Class) trong ngôn ngữ Dart
Class đơn giản là một khuôn mẫu dùng để chứa các biến, và các hàm.

Trong biểu diễn một đối tượng, class dùng để môt tả đối tượng, bao gồm các biến ( các thuộc tính của đối tượng ) là các trường dữ liệu và các hàm (các phương thức của đối tượng).

Điểm khác biệt của ngôn ngữ Dart

– Không giống như các ngôn ngữ khác như Java hay C#, Dart cho phép khai báo nhiều đối tượng trong một file Dart.
– Không dùng các từ khoá như : public, private, protected.

+ private được biểu diễn bằng dấu “_” trước các biến hay hàm. Ví dụ: String _name; nó được hiểu như : private String name;

Dưới đây là một ví dụ :

– Cách dùng “=>” trong ngôn ngữ Dart
Như ví dụ trên, chúng ta thấy có hàm getter:

Cách viết trên tương tự với:

hay:

– Hàm khởi tạo (Constructor) khác biệt

Cũng giống như các ngôn ngữ khác, Dart cũng có hàm khởi tạo. Nếu developer không tạo hàm khởi tạo riêng thì hàm khởi tạo mặc định không biến đầu vào sẽ được sử dụng.

Cách thức hàm khởi tạo cũng rất khác so với ngôn ngữ khác. Trong ví dụ trên, hàm constructor có thể được viết rất đơn giản:

Thay cho cách viết dài dòng như bên dưới :

– Không cần dùng từ khoá ” new” trong khởi tạo. Có hay không có đều được.
Ví dụ :

– Từ khoá required trong lập trình Flutter

required : có ý nghĩa là, nêú một biến được đặt required ở phía trước thì khi khởi tạo bắt buộc phải khải tạo biến đó.

– Trong ngôn ngữ Dart không có nạp chồng phương thức (overloading), như vậy có nghĩa là chỉ có một hàm constructor.

3. Các đặc tính trong lập trình hướng đối tượng của ngôn ngữ Dart.
3.1 Tính trừu tượng ( abstraction )

Tính trừu tượng thể hiện ở việc lựa chọn các thuộc tính và hành vi của đối tượng mà không phải liệt kê hết tất cả các thuộc tính và hành vi của đối tượng đó.
Ví dụ: Để mô tả một người có rất nhiều thuộc tính và hành vi. Nhưng chúng ta chỉ sử dụng các thuộc tính như: tên , năm sinh, quê quán và thuộc tính như: đi, chạy mà không cần liệt kê hết tất cả các thuộc tính và hành vi khác như : tình trạng hôn nhân , lái xe, đá , đấm…

3.2 Tính đóng gói ( Encapsulation )

Thể hiện tính che dấu trong đối tượng với mục đích bảo vệ dữ liệu và tăng khả năng mở rộng.
Vì vậy khi triển khai một đối tượng, các thuộc tính nên dùng tính năng private ví dụ : int _tuoi; và sử dụng các phương thức để truy xuất các trường dữ liệu như getter , setter:

Để thực hành những kiến thức trên, chúng ta làm một bài tập sau :

Tạo một class Học sinh:
+ Có các thuộc tính:
– Họ và tên
– Lớp
– Ngày sinh
– Điểm Toán, Điểm Văn, Điểm Tiếng Anh.
+ Có các phương thức:
– In thông tin học sinh
– Tính điểm trung bình 3 môn
– Xếp loại tốt nghiệp dựa trên điểm trung bình : (<5: yêú), (5<= điểm <6,5 : trung bình), (6,5<= điểm <8,5 : khá), (>=8.5 : giỏi)

Mở IDE mà đã được cài đặt ở bài 2.1, trong file lib – tạo một file : hoc_sinh.dart, nội dung là :

Để kiểm tra, các bạn có thể khai báo trong hàm main.dart:

Kết quả :

Để thực hành, bạn có thể làm tiếp bài tập dưới đây:

Tạo một lớp mô tả đối tượng : developer có :
– Các thuộc tính:
+ Họ Tên
+ Giới tính
+ Số ngôn ngữ lập trình thành thạo
+ Lương
+ Thưởng
– Các phương thức:
+ In thông tin developer
+ Tính tổng thu nhập

Vậy là bạn đã biết hai đặc tính của lập trình hướng đối tượng trong ngôn ngữ Dart đó là tính đóng gói và tính trừu tượng cùng với các điểm khác biệt so với các ngôn ngữ khác.
Sang bài tiếp theo, Báo Flutter sẽ giới thiệu tiếp hai đặc tính còn lại của lập trình hướng đối tượng đó là tính kế thừa và tính đa hình. Mời các bạn tìm đọc trong chương này.

Chúc các bạn có được nhiều kiến thức từ blog này !

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *