NỘI DUNG BÀI HỌC
✳️ Đối tượng là gì? Object của một Class
✳️ Ví dụ khai báo đối tượng của một class và sử dụng
✅ Package là gì?
Một package có thể hiểu như là một gói chứa các lớp các package con. Còn xét về máy tính nhận diện thì nó như một folder. Chỉ khác khi trên IDE nhận diện thôi.
🔅 Cách tạo package trong IntelliJ và Eclipse
Để tạo ra package đơn giản chỉ cần click phải chuột vào thư mục src
trong IntelliJ hoặc Eclipse chọn New > Package
rồi nhập tên
#Chú ý: chổ tên nên đặt chữ thường, nếu dài thì dùng dấu gạch dưới để phân cách. Ví dụ: learnpackage, learn_tinh_ke_thua
Trên IDE thì nó nhận diện là package hay directory. Còn trong máy tính nó đều là directory bình thường nó sẽ như sau:
🔅 Package khác Directory chổ nào?
Điểm khác chính là package mới chứa class và thực thi được code. Còn directory có thể chứa class nhưng không thực thi được code bên trong class đó.
🔅 Công dụng của Package trong Java
- Bố trí gọn source code của mình
- Có thể chứa class java để thực thi code
- Đóng gói code theo các package chỉ định => tránh edit nhầm, phân permission
- Run nhiều class thông qua package (trong automation test sau này)
🔅 Mô tả các vấn đề liên quan Package trong code Java
- Để di chuyển file trong package thì chỉ cần đè chuột trái vào tên file cần chuyển rồi kéo thả tạo tên package cần chuyến đến.
Khi đó trong code nó tự động đổi tên package theo.
Sau khi di chuyển
Việc thay đổi này do IDE tự sửa cho chúng ta:
-
Khi ta tạo một class nằm trong một package nào đó thì phải khai báo package đầu tiên: Ở đây class Mang nằm trong package array. Ta sẽ viết package array. Theo đường dẫn class Mang sau khi di chuyển nằm trong package array_child2, nên ở class Mang ta sẽ viết package
array.array_child.array_child2;
-
Khi ta sử dụng một class nằm ở packge khác, ta phải import qua để chương trình hiểu ta đang sử class của package nào. Theo như hình dưới thì class Mang sau khi được gọi lại sử dụng trong class MangNacDanh thì ta sẽ viết import
array.array_child.array_child2.Mang;
![[Selenium Java] Bài 2: Java OOP | Anh Tester](/uploads/lesson/selenium_java/move_class_to_package_3.jpg)
✅ Lớp và Đối tượng trong java (Class and Object)
Trong bài này chúng ta sẽ học về lớp và đối tượng trong java. Trong phương pháp lập trình hướng đối tượng, chúng ta thiết kế chương trình bằng việc sử dụng các lớp và đối tượng.
🔆 Đối tượng (object)
Một thực thể có trạng thái và hành vi được gọi là đối tượng. Ví dụ như máy pha cà phê, xe đạp, cái quạt...
Trong Java thì đối tượng là một cái tên, đại diện cho một class để có thể gọi các thành phần trong class ra sử dụng.
Một đối tượng có ba đặc điểm:
- Trạng thái: Đại diện cho dữ liệu (giá trị) của một đối tượng.
- Hành vi: Đại diện cho hành vi (chức năng) của một đối tượng như gửi tiền, rút tiền, ...
- Danh tính: Danh tính của một đối tượng thường được cài đặt thông qua một ID duy nhất. ID này được ẩn đối với user bên ngoài. Tuy nhiên nó được sử dụng trong nội bộ máy ảo JVM để định danh từng đối tượng.
Ví dụ: Bút nói chung. Thì Bút chì là một đối tượng. Tên của nó là B4, màu vàng, chì đậm, ... được gọi là trạng thái. Nó được sử dụng để viết, viết được gọi là hành vi. Và nó sẽ có một mã định danh cho sản phẩm thì được gọi là Danh tính.
Ví dụ khác:
Lớp Động vật: các thuộc tính chung như có Vú, có Sừng, Màu, Chân,...
=> Đối tượng là con Chó Golden: có vú nhỏ, không sừng, màu vàng, 4 chân
=> Đối tượng là con Trâu: có vú to, có sừng, màu đen, 4 chân
Trong Java thì Đối tượng (Object) là một thể hiện của một lớp (Class). Lớp là một mẫu hoặc thiết kế chung gồm nhiều thành phần thuộc tính tính năng, và tạo ra các đối tượng cụ thể khác nhau để dùng các thành phần bên trong Class. Vì vậy, đối tượng là các thể hiện (kết quả) của một lớp.
🔆 Lớp (class)
Class là một cấu trúc chung có nhiều thành phần khai báo sẵn để có thể gọi ra dùng hoặc xử lý và Class thì có thể nhiều đối tượng thể hiện cho 1 class.
Một class trong java có thể chứa:
- Thành viên dữ liệu
- Constructor
- Phương thức
- Khối lệnh
- Lớp và Interface
Ví dụ đơn giản về Lớp và Đối tượng trong Java
Trong ví dụ này, chúng ta tạo một lớp Student có hai thành viên dữ liệu là id và name. Chúng ta đang tạo đối tượng của lớp Student bởi từ khóa new và in giá trị đối tượng.
class Student1{
int id; //thanh vien du lieu (cung la bien instance)
String name; //thanh vien du lieu (cung la bien instance)
public static void main(String args[]){
Student1 s1=new Student1(); //tao mot doi tuong Student
System.out.println(s1.id);
System.out.println(s1.name);
}
}
Các ví dụ đơn giản về lớp và đối tượng trong java
Ví dụ 1:
Trong ví dụ này, chúng tôi đã tạo ra một lớp Student có hai thành viên dữ liệu id và name. Chúng ta tạo ra các đối tượng của lớp Student bởi từ khóa new và in giá trị của các đối tượng.
public class Student {
int id; // thành viên dữ liệu
String name; // thành viên dữ liệu
public static void main(String args[]) {
Student student1 = new Student(); // tạo một đối tượng student1
System.out.println(student1.id);
System.out.println(student1.name);
}
}
Kết quả:
0 null
Ví dụ 2:
public class Student2 {
int id;
String name;
// phương thức insertRecord
void insertRecord(int id, String name) {
this.id = id;
this.name = name;
}
// phương thức displayInformation
void displayInformation() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student2 s1 = new Student2();
Student2 s2 = new Student2();
s1.insertRecord(111, "Anh");
s2.insertRecord(222, "Tester");
s1.displayInformation();
s2.displayInformation();
}
}
Kết quả:
Anh
Tester
Ví dụ 3:
public class Student3 {
int id;
String name;
// constructor
public Student3(int id, String name) {
this.id = id;
this.name = name;
}
// phương thức displayInformation
void displayInformation() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student3 s1 = new Student3(111, "Anh");
Student3 s2 = new Student3(222, "Tester");
s1.displayInformation();
s2.displayInformation();
}
}
Kết quả:
Anh
Tester
🔆 Có những cách nào để tạo đối tượng trong java?
Có vài cách để tạo đối tượng trong java, đó là:
- Sử dụng từ khóa new
- Sử dụng phương thức newInstance()
- Sử dụng phương thức clone()
- Sử dụng phương thức factory,...
Chúng ta sẽ chỉ học cách tạo đối tượng qua từ khóa "new"
Còn 3 cách kia thì các bạn tham khảo thêm tại đây
🔆 Đối tượng Annonymous trong java
Annonymous nghĩa là vô danh. Một đối tượng không có tham chiếu gọi là đối tượng Annonymous.
Nếu bạn sử dụng đối tượng 1 lần duy nhất, thì lựa chọn tạo đối tượng Annonymous là tốt nhất trong trường hợp này.
Ví dụ:
public class Calculation {
void fact(int n) {
int giaithua = 1;
for (int i = 1; i <= n; i++) {
giaithua = giaithua * i;
}
System.out.println("Giai thừa của " + n + " là: " + giaithua);
}
public static void main(String args[]) {
// gọi phương thức của đối tượng annonymous
new Calculation().fact(5);
}
}
Kết quả:
Giai thừa của 5 là: 120
🔆 Sự khác nhau giữa Lớp và Đối tượng trong java
Sự khác nhau giữa lớp và đối tượng trong java được thống kê trong bảng sau:
No | Đối tượng | Lớp |
1. | Đối tượng là thể hiện của 1 lớp. | Lớp là một khuân mẫu hay thiết kế để tạo ra các đối tượng. |
2. | Đối tượng là 1 thực thể trong thế giới thực như Bút chì, Xe đạp, ... | Lớp là một nhóm các đối tượng tương tự nhau. |
3. | Đối tượng là 1 thực thể vật lý | Lớp là 1 thực thể logic |
4. | Đối tượng được tạo ra chủ yếu từ từ khóa new. Ví dụ: Student s1=new Student(); |
Lớp được khai báo bằng việc sử dụng từ khóa class. Ví dụ: class Student{} |
5. | Đối tượng có thể được tạo nhiều lần. | Lớp được khai báo 1 lần duy nhất. |
6. | Đối tượng được cấp bộ nhớ khi nó được tạo ra. | Lớp không được cấp bộ nhớ khi nó được tạo ra. |
7. | Có rất nhiều cách để tạo ra đối tượng trong java như từ khóa new, phương thức newInstance(), phương thức clone(), phương thức factory và deserialization. | Chỉ có một cách để định nghĩa lớp trong java sử dụng từ khoá class. |
Bài tập rèn luyện
Bạn hãy viết chương trình khai báo lớp Student
với thông tin giống như sau:
Giải thích: hình trên là mô tả của lớp Student
với các thuộc tính và phương thức giống như sau:
name
vàage
là hai thuộc tính dùng để lưu trữ tên và tuổi của đối tượng học sinh.display()
là phương thức dùng để hiển thị thông tin của đối tượng ra màn hình. Ví dụ, nếu đối tượng có thuộc tínhname = "An", age = 25
thì khi gọi phương thứcdisplay()
thì màn hình sẽ hiển thị ra:
Name: An Age: 25
getInformation()
là phương thức dùng để nhập dữ liệu cho thuộc tínhname
vàage
từ bàn phím. Ví dụ nếu bạn dùng phương thức này để nhập thông tin cho một đối tượng học sinh vớiname = "Hoa", age = 22
như bên dưới:
thì khi gọi phương thứcHoa 22
display()
màn hình sẽ hiển thị ra:
Name: Hoa Age: 22
Lý thuyết
Bài trước bạn đã hiểu sơ qua về lập trình hướng đối tượng và đã biết một số khái niệm như lớp, đối tượng, thuộc tính và phương thức.
Ở phần này bạn sẽ biết cách định nghĩa ra một lớp và sử dụng các đối tượng thuộc lớp này.
Về bản chất, lớp (class) là một kiểu dữ liệu do bạn tự định nghĩa và đối tượng chính là biến của kiểu dữ liệu này. Cú pháp để khai báo một lớp như sau:
class <tên_lớp> {
// Khai báo danh sách các thuộc tính
<kiểu_dữ_liệu> <tên_thuộc_tính>;
...
// Khai báo danh sách các phương thức
public <kiểu_trả_về> <tên_phương_thức>(<kiểu_tham_số> <tên_tham_số>, ...) {
...
}
...
}
Ví dụ bạn có thể tạo ra lớp Student
với 2 thuộc tính là name, age
và 2 phương thức là getInformation()
và display()
giống như sau:
class Student{
String name;
int age;
public void getInformation() {
}
public void display() {
}
}
Để khai báo đối tượng của một lớp bạn dùng từ khóa new
. Ví dụ để khai báo một đối tượng thuộc lớp Student
bạn làm như sau:
// Khai báo đối tượng s1 thuộc lớp Student
Student s1 = new Student();
Để truy xuất tới các thuộc tính và phương thức của một đối tượng bạn dùng toán tử "."
:
class Student {
String name;
int age;
public void display() {
System.out.println("My name is " + name);
}
}
public class Entry {
public static void main(String[] args) {
Student s1 = new Student();
// Gán giá trị cho thuộc tính name của đối tượng s1
s1.name = "Long";
// Gọi tới phương thức display của đối tượng s1
s1.display();
}
}
Kết quả khi chạy chương trình:
My name is Long
Có thể thấy lớp và đối tượng chỉ đơn giản là kiểu dữ liệu và biến. Kiểu dữ liệu này khác các kiểu dữ liệu thông thường như int, string, double, ... ở chỗ nó có thể chứa được các phương thức và kiểu dữ liệu khác.
Đọc tới đây bạn đã biết cách định nghĩa một lớp và sử dụng đối tượng của lớp này, hãy quay lại phần bài tập và làm thử.
Hướng dẫn
Code mẫu:
import java.util.Scanner;
class Student{
String name;
int age;
public void getInformation() {
Scanner sc = new Scanner(System.in);
name = sc.next();
age = sc.nextInt();
}
public void display() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
public class Entry {
public static void main(String[]args) {
Student s1 = new Student();
s1.getInformation();
s1.display();
}
}