Bài 6: Lớp và Phương thức trong Lập trình Java 9 – Phần 1

Bài 6: Lớp và Phương thức trong Lập trình Java 9 – Phần 1
access_time 2/2/2018 12:00:00 AM
person Nguyễn Mạnh Hùng

Lớp và Phương thức trong Lập trình Java 9 – Phần 1

1. Giới thiệu lập trình hướng đối tượng.

1.1 Giới thiệu

Lập trình hướng đối tượng đặt trọng tâm vào đối tượng, yếu tố quan trọng nhất trong quá trình phát triển chương trình và không cho phép dữ liệu biến động tự do trong hệ thống. Dữ liệu được gắn chặt với các phương thức hình thành các vùng riêng mà chỉ có các phương thức đó tác động lên và cấm các phương thức bên ngoài truy cập một cách tùy tiện. Lập trình hướng đối tượng cho phép chúng ta phân tích bài toán thành các thực thể được gọi là đối tượng và sau đó xây dựng các dữ liệu (thuộc tính) và các phương thức (hàm) xung quanh đối tượng đó. Các đối tượng có thể tác động, trao đổi thông tin với nhau thông qua cơ chế thông báo(message).

1.2 Các đặc điểm.

Lập trình hướng đối tượng nhìn nhận và xây dựng bài toán tập trung vào đối tượng tức là coi chương trình là một tập hợp các đối tượng, các đối tượng này tương tác với nhau. Do vậy khi xây dựng phát triển phần mềm theo phương pháp hướng đối tượng, lập trình viên cần phải chú ý :

+ Chương trình được phát triển bằng Ngôn ngữ JavaCore thường chia ứng dụng ra thành nhiều các Package mỗi Package có thể tương ứng với từng module của ứng dụng. Mỗi Package trong ứng dụng có thể chứa nhiều các class.

+ Chương trình được phân chia thành các đối tượng.

+ Tập trung vào dữ liệu (Thuộc tính) thay cho các hàm.

+ Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng.

+ Dữ liệu được đóng gói, được che giấu và không cho phép các phương thức ngoại lai truy nhập tự do.

+ Các đối tượng tác động và trao đổi thông tin với nhau thông qua các phương thức.

+ Có thể dễ dàng bổ sung dữ liệu (thuộc tính) và các phương thức mới vào đối tượng nào đó khi cần thiết.

Các đặc điểm chính của lập trình hướng đối tượng :

Tính trừu tượng : Tính trừu tượng là đặc điểm duy nhất mang tính yêu cầu thông tin của đối tượng. Một đối tượng trong hệ thống có thể có rất nhiều các thuộc tính và các phương thức khác nhau, tuy nhiên với ngữ cảnh cụ thể thì chúng ta chỉ cần quan tâm đến các thuộc tính và phương thức nào thực sự cần thiết mà thuộc tính yêu cầu.

 Ví dụ : Đối tượng Sách có các thuộc tính như : Tên sách, nhà xuất bản, ngày xuất bản, số lần tái bản, số trang, khổ giấy, giá thành, tên tác giả, lĩnh vực,… ,. Với bài toán cụ thể ví dụ như xây dựng chương trình Quản lý sách cho Cửa hàng sách thì chúng ta chỉ quan tâm tới một số các thuộc tính như : Tên sách, tên tác giả, nhà xuất bản, giá thành, lĩnh vực, nhưng với bài toán Quản lý sách cho Nhà máy in thì chúng ta chỉ quan tâm tới các thuộc tính như : Tên sách, tên tác giả, số trang, khổ giấy, lĩnh vực; Rõ ràng mức độ quan tâm tới các thuộc tính của đối tượng sách là khác nhau trong hai trường hợp trên.

Tính đóng gói: Trong lập trình hướng đối tượng các phương thức được sử dụng mà không biết đến nội dung cụ thể của nó. Người sử dụng chỉ cần biết chức năng của phương thức cũng như các tham số truyền vào để gọi phương thức chạy mà không cần quan tâm tới đoạn mã cài đặt bên tròng của phương thức. Người ta gọi đó chính là sự đóng gói của phương thức.

Trong lập trình hướng đối tượng, không những phương thức được đóng gói mà cả thuộc tính cũng như vậy. Với mỗi đối tượng không thể truy nhập trực tiếp vào các thành phần thuộc tính của nó mà phải thông qua phương thức.

Tính kế thừa: Tính kế thừa cho phép chúng ta định nghĩa một lớp mới trên cơ sở các lớp đã tồn tại, tất nhiên có bổ sung những phương thức hay thuộc tính mới cho lớp này. Khả năng kế thừa cho phép chúng ta sử dụng lại một cách dễ dàng các module chương trình mà không cần một thay đổi trong các module đó.

 Tính đa hình : Tính đa hình xuất hiện khi có khái niệm kế thừa, giả sử chúng ta có một kế thừa lớp hình tứ giác và lớp hình tam giác kế thừa từ lớp hình đa giác (Hình tam giác và tứ giác đều là hình đa giác), lúc này mỗi hình đa giác đều có diện tích của nó. Vậy làm thế nào một hình đa giác có thể sử dụng đúng công tính tính diện tích phù hợp với nó là hình tam giác hay hình tứ giác. Tính chất này gọi là tính đa hình. Tính đa hình được hiểu trong lập trình hướng đối tượng là Hình dạng của đối tượng được xác định tại thời điểm cấp phát đối tượng đó.

2. Lớp và đối tượng.

Ngôn ngữ lập trình Java  là ngôn ngữ lập trình hướng đối tượng cũng giống như các ngôn ngữ lập trình khác như C++, C#, chương trình được xây dựng bằng Java sẽ bao gồm một tập hợp các lớp (Class), các lớp chính là các thực thể của chương trình.

Đối tượng là thể hiện của lớp, khi chương trình chạy, đối tượng sẽ được tạo ra và được cấp phát bộ nhớ để lưu thông tin về các thuộc tính, các phương thức và đáp ứng lại các sự kiện khi có các đối tượng khác yêu cầu.

2.1 Khai báo lớp và khởi tạo đối tượng

2.1.1 Khai báo lớp.

Một lớp trong Java bao gồm một tập hợp các field (trường chứa thông tin) hoặc có thể gọi đó là các variable (các biến)), và các method (phương thức), tập hợp các field và method  đó gọi là các member (thành phần) của một lớp. Cú pháp khai báo của một lớp trong Java như sau :

Cú pháp:
class <ClassName>
{
// class members
}

Mô tả :

+ ClassName : Tên lớp

+ Class members : Các thành phần của lớp bao gồm các trường, thuộc tính, phương thức… của lớp

Khi đặt tên lớp cần tuân thủ các quy tắc sau đây :

+ Sử dụng danh từ để đặt tên cho lớp

+ Đặt tên lớp phải dễ hiểu, có ý nghĩa và đơn giản

+ Không đặt tên lớp trùng với tên các từ khóa trong Java.

+ Tên lớp không được kết hợp chữ hoa chữ thường lộn xộn, lên sử dụng chữ cái đầu là chữ hoa.

+ Không được sử dụng chữ số là chữ đầu tiên của lớp có thể sử dụng chữ đầu tiên là @ hoặc dấu “_”, tuy nhiên không khuyến khích sử dụng theo cách này.

Ví dụ:


Hình số 1 : Định nghĩa lớp trong Java 9

2.1.2 Khởi tạo đối tượng.

Sau khi tạo lớp cần khởi tạo đối tượng là thể hiện của lớp. Cú pháp khởi tạo đối tượng như sau :

Cú pháp

<ClassName> <objectName> = new <ClassName>();
Mô tả

+ ClassName: Tên lớp.

+ objectName: Tên đối tượng cần khởi tạo.

Ví dụ : Các bạn có thể xem lại hình số 1 về cách tạo lớp và khởi tạo đối tượng tương ứng với lớp Employee.

Quá trình khởi tạo đối tượng qua 2 giai đoạn:

+ Giai đoạn 1 : Khai báo đối tượng là thể hiện của lớp, thực ra giai đoạn này mới chỉ là khai báo đối tượng (biến) của lớp mà lập trình viên muốn thao tác. Tại giai đoạn 1 chúng ta chưa cấp phát vùng bộ nhớ để lưu thông tin cho đối tượng đó, có nghĩa là chúng ta chưa sử dụng từ khóa new.

<class_name> <object_name>;

object_name : Chỉ là tên biến, chưa trỏ đến 1 vùng bộ nhớ nào.


Hình số 2 : Khai báo đối tượng của lớp

Mặc định giá trị lưu trữ tại đối tượng khi chưa được cấp phát sẽ là null. Có nghĩa là nó chưa trỏ đến một giá trị thực sự nào đó.

+ Giai đoạn 2 : Cấp phát vùng bộ nhớ để lưu trữ giá trị cho đối tượng là thể hiện của lớp. Khi đó chúng ta sử dụng từ khóa new để cấp phát vùng bộ nhớ cho đối tượng.

Khi được cấp phát vùng bộ nhớ, với các trường lưu thông tin của đối tượng sẽ được thiết lập các giá trị. Các giá trị này phụ thuộc vào phương thức khởi tạo của lớp. Nếu các lập trình viên không định nghĩa phương thức khởi tạo cho lớp thì nó sẽ tự động lấy phương thức khởi tạo mặc định.


Hình số 3 : Khởi tạo đối tượng của lớp

3. Thành phần của lớp

Thành phần của lớp bao gồm trường (field) dùng để lưu trữ thông tin thuộc tính, và các phương thức, Phương thức được dùng để thực thi hành động của đối tượng là thể hiện của lớp.

3.1 Trường thông tin

Trường thông tin hay còn gọi là thể hiện của các biến được dùng để lưu trữ các thông tin của các đối tượng của lớp. Mỗi đối tượng khi được khởi tạo sẽ bao gồm một tập hợp các thông tin chứa các trường thông tin của nó.

Ví dụ lớp Customer có chứa các trường thông tin :

+ CustomerID - ID khách hàng

+ Name - Chứa tên khách hành

+ Address - Chứa địa chỉ khách hàng

+ Age - Chứa tuổi khách hàng


Hình số 4 : Hình ảnh của lớp khách hàng

Khi khởi tạo đối tượng là thể hiện của lớp Khách hàng, thì các lập trình viên cần thiết lập giá trị của các trường thông tin đó. Cách thức thông thường để thiết lập thông tin của các trường đó là sử dụng các phương thức.


Hình số 5 : Hình ảnh thể hiện của đối tượng chứa thông tin các trường

3.1.1 Khai báo các trường.

Cú pháp khai báo các trường thông tin của các lớp như sau :

Cú pháp

<Access Modifier> <Data Type > <Name Field>;
Mô tả

+ Access Modifier: Phạm vi truy cập của các trường .

+ Data Type: Kiểu dữ liệu của trường.

+ Name Field: Tên trường hay tên biến.

3.1.2 Ví dụ khai báo các trường thông tin

Các bạn có thể xem lại ví dụ 1 : Các trường thông tin bao gồm empName và empAge.

4. Phương thức

Phương thức chính là các hàm được khai báo trong lớp, với mục tiêu nhằm để thực thi một hành động nào đó của đối tượng. Một phương thức bao gồm một tập hợp các khối lệnh thực thi, danh sách các tham số đầu vào. Một phương thức có thể có hoặc không có giá trị trả về.

Phương thức thực thi một hành động của đối tượng là thể hiện của lớp chứa phương thức đó. Đối tượng này có thể truy vấn tới phương thức nếu lớp chứa nó cho phép truy vấn. Một phương thức có thể lấy bất kỳ số lượng tham số nào, Các tham số này theo sau bởi tên của phương thức và được bao bọc bên trong dấu ngoặc tròn (). Mỗi tham số phải khai báo kèm với kiểu dữ liệu.

4.1 Tạo phương thức

Khi tạo phương thức của lớp, lập trình viên cần chú ý tới phương thức đặt tên của phương thức. Sau đây mô tả quy tắc đặt tên của phương thức:

·       Không được trùng với từ khóa của Java.

·       Không được chứa khoảng trống

·       Ký tự đầu tiên không được là chữ số

·       Chữ cái đầu tiên có thể là “@” hoặc dấu “_”.

Ví dụ:

·       Các tên phương thức đúng : Add(), Sum_Add(),   @Add()

·       Các tên phương thức sau sai : Add, Add Sum(), và int().

Để tạo phương thức, lập trình viên cần tuân thủ cú pháp sau :

Cú pháp

<access_modifier> <return_type> <MethodName> ([list of parameters])
{
// body of the method
}
Mô tả

·       access_modifier: Xác định phạm vi truy cập của phương thức (public, protected, private), nếu không cho phép thì không được phép truy cập, mặc định các phương thức sẽ là private.

·       return_type: Giá trị trả về của phương thức. Nếu phương thức không có giá trị trả về sẽ là void

·       MethodName: Tên phương thức.

·       list of parameters: Danh sách các tham số truyền vào của phương thức.

4.2 Gọi phương thức

Để tạo phương thức trong một lớp thì chúng ta cần phải tạo đối tượng của lớp đó. Sau đó sử dụng quy tắc:

Cú pháp

<ObjectName>.< MethodName > ([list of parameters])

Mô tả

·       ObjectName : Tên đối tượng

·       MethodName : Tên phương thức

·       list of parameters: Danh sách các tham số truyền vào của phương thức

Ví dụ

Tạo lớp tính toán chứa phương thức tính tổng và hiệu 2 số nguyên.

 


Hình số 6 : Tạo và gọi phương thức


vertical_align_top
share
Chat...