Bổ trợ kiến thức Java cơ bản cho khóa học lập trình android - phần 4
Hôm nay chúng ta sẽ tiếp tục tìm hiểu những khái niệm cơ bản và quan trọng sẽ sử dụng trong suốt khóa học lập trình Android: Class trong Java. Chúng ta sẽ cùng bắt đầu thực hành từ những bài tập nhỏ đển làm quen và hiểu hơn về khái niệm này nhé.
I. Các khái niệm cơ bản
1. Khái niệm Class:
Chúng ta có thể xem lớp như một khuôn mẫu (template) của đối tượng (Object). Trong đó bao gồm dữ liệu của đối tượng (fiels hay properties) và các phương thức (methods) tác động lên thành phần dữ liệu đó gọi là các phương thức của lớp.
Các đối tượng được xây dựng bởi các lớp nên được gọi là các thể hiệ của lớp (class íntancw). Lớp trong java gần giống như trong lập trình C hay pascal.
2. Khai báo/định nghĩa lớp:
Cú pháp khai báo một lớp:
Class <ClassName>
{
<kiểu dữ liêu> <field_1>;
<kiểu dữ liệu> <field_2>;
Constructor
Method_1
Method_2
}
Trong đó
- ClassName: là tên lớp chúng ta đặt
- Field_1, field_2: các thuộc tính, các biến hay các thành phần dữ liệu của lớp.
- Constructor: là sự xây dựng, khởi tạo của đối tượng
- Method_1, method_2: là các phương thức/hàm thể hiện các thao tác xử lý, tác động lên các thành phần dữ liệu của lớp.
Chúng ta hãy xem xét ví dụ sau đây để hiểu rõ hơn về những định nghĩa đã viết trong ví dụ 1.
Ví dụ: class SinhVien{
Public String hoTen;
Public int namSinh;
Public String lopHoc;
}
3. Tạo đối tượng của lớp:
Cú pháp: ClassName objectName = new ClassName();
Ví dụ 3: Tạo 2 đối tượng sinh viên a và b dựa trên class đã định nghĩa ở ví dụ 2:
SinhVien a = new SinhVien();
SinhVien b = new SinhVien();
4. Thuộc tính của lớp:
Vùng dữ liệu (fields) hay thuộc tính (properties) của lớp được khai báo bên trong lớp như sau:
Class <ClassName>{
// khai báo những thuộc tính của lớp
<tiền tố><kiểu dữ liệu> field_1;
// …
}
Để xác định quyền truy xuất của các đối tượng khác đối với vùng dữ liệu của lớp người ta thường dùng 3 tiền tố sau:
– public: có thể truy xuất từ tất cả các đối tượng khác
– private: một lớp không thể truy xuất vùng private của 1 lớp khác.
– protected: vùng protected của 1 lớp chỉ cho phép bản thân lớp đó và những lớp dẫn xuất từ lớp đó truy cập đến.
– public: có thể truy xuất từ tất cả các đối tượng khác
– private: một lớp không thể truy xuất vùng private của 1 lớp khác.
– protected: vùng protected của 1 lớp chỉ cho phép bản thân lớp đó và những lớp dẫn xuất từ lớp đó truy cập đến.
Ví dụ 4:
Class SinhVien{
public String hoTen;
public int namSinh;
protected string LopHoc;
public static String tenTruong = “Giao Thông”; }
– Thuộc tính “hoTen” có thể được truy cập đến từ tất cả các đối tượng khác. (public)
– Thuộc tính “namSinh” chỉ có thể truy cập được từ các đối tượng có kiểu “SinhVien”(private)
– Thuộc tính “lopHoc”, so có thể truy cập được từ các đối tượng có kiểu “SinhVien” và các đối tượng của các lớp con dẫn xuất từ lớp “SinhVien” (protected)
– “tenTruong” là biến tĩnh có giá trị là “HV KT Mật Mã”trong tất cả các thể hiện tạo ra từ lớp “SinhVien” (public static)
– Thuộc tính “namSinh” chỉ có thể truy cập được từ các đối tượng có kiểu “SinhVien”(private)
– Thuộc tính “lopHoc”, so có thể truy cập được từ các đối tượng có kiểu “SinhVien” và các đối tượng của các lớp con dẫn xuất từ lớp “SinhVien” (protected)
– “tenTruong” là biến tĩnh có giá trị là “HV KT Mật Mã”trong tất cả các thể hiện tạo ra từ lớp “SinhVien” (public static)
Lưu ý: Thông thường để an toàn cho vùng dữ liệu của các đối tượng người ta tránh dùng tiền tố public, mà thường chọn tiền tố private để ngăn cản quyền truy cập đến vùng dữ liệu của một lớp từ các phương thức bên ngoài lớp đó.
II. Ứng dụng
Sau khi đã tìm hiểu cách khai báo và định nghĩa một lớp, chúng ta sẽ bắt tay vào tìm hiểu cách áp dụng để viết code sao cho dễ nhìn, dễ hiểu, dễ quản lý.
1. Bài có 1 class, dùng class chứa hàm main
Khi bạn lên mạng, tìm code, bạn sẽ thấy người ta thường dùng cách này
Thường có 1 class duy nhất. Cách viết này thường dùng để chia sẻ thuật toán, cú pháp hoặc giới thiệu các phương thức của 1 đối tượng trong thư viện nào đó.
Thường có 1 class duy nhất. Cách viết này thường dùng để chia sẻ thuật toán, cú pháp hoặc giới thiệu các phương thức của 1 đối tượng trong thư viện nào đó.
Ví dụ: một ví dụ quản lý sinh viên nhỏ:
Package sinh.vien;
public class SinhVien{
public String hoTen;
public int namSinh;
public float toan, ly, hoa;
public static void main(String[] args)
{
SinhVien a = new SinhVien();
a.hoTen = “Nguyễn Thị A”;
a.namSinh = 1992;
a.toan = 10.0f;
a.ly = 9.0f;
a.hoa = 9.5f;
System.out.println(“Điểm TB là:” + (float)(a.toan + a.ly + a.hoa)/3);
}
}
2. Class đặt cùng file class chứa hàm main
Vị trí đặt ngoài class chứa chương trình chính, ở bài trước, mình có viết ví dụ theo cách này! Nó chỉ thích hợp với bài ít class, class ít thuộc tính và phương thức. Nếu bài có nhiều class, mỗi class có nhiều phương thức, điều này cũng không tốt, sẽ rất khó nhìn và quản lý cũng như nâng cấp!
Ví dụ 2: Nội dung bài như ở Vd1, bổ sung thêm class giảng viên, nhưng sẽ bố trí lại vị trí class như sau:
Ví dụ 2: Nội dung bài như ở Vd1, bổ sung thêm class giảng viên, nhưng sẽ bố trí lại vị trí class như sau:
package truong.hoc;
class SinhVien {
public String hoTen;
public int namSinh;
public float toan, ly, hoa;
}
public int namSinh;
public float toan, ly, hoa;
}
class GiangVien {
public String hoTen;
public int namSinh;
public String mon;
public int luong;
}
public int namSinh;
public String mon;
public int luong;
}
public class Main {
public static void main(String[] args) {
SinhVien a = new SinhVien();
a.hoTen = “Vũ Văn A”;
a.namSinh = 1992;
a.toan = 10.0f;
a.ly = 9.0f;
a.hoa = 9.5f;
System.out.println(“Điểm Tb là: ” + (float) (a.toan + a.ly + a.hoa) / 3);
SinhVien a = new SinhVien();
a.hoTen = “Vũ Văn A”;
a.namSinh = 1992;
a.toan = 10.0f;
a.ly = 9.0f;
a.hoa = 9.5f;
System.out.println(“Điểm Tb là: ” + (float) (a.toan + a.ly + a.hoa) / 3);
GiangVien gv1 = new GiangVien();
}
}
}
}
3. Mỗi class đặt riêng 1 file, cùng 1 gói (package)
Cách này ở các bài tập có nhiều class, các class cùng 1 loại.
Ví dụ 4: Các class cùng là nhân sự của 1 trường học: SinhVien, GiangVienKhoa1,GiangVienKhoa2.
Với bài này, chúng ta sẽ tạo project với 1 package là truong.hoc, trong package này sẽ có 4 file như sau:
Ví dụ 4: Các class cùng là nhân sự của 1 trường học: SinhVien, GiangVienKhoa1,GiangVienKhoa2.
Với bài này, chúng ta sẽ tạo project với 1 package là truong.hoc, trong package này sẽ có 4 file như sau:
File “main.java” chứa hàm main:
package truong.hoc;
public class Main {
public static void main(String[] args) {
SinhVien a = new SinhVien();
a.hoTen = “Vũ Văn A”;
a.namSinh = 1992;
a.toan = 10.0f;
a.ly = 9.0f;
a.hoa = 9.5f;
System.out.println(“Điểm Tb là: ” + (float) (a.toan + a.ly + a.hoa) / 3);
SinhVien a = new SinhVien();
a.hoTen = “Vũ Văn A”;
a.namSinh = 1992;
a.toan = 10.0f;
a.ly = 9.0f;
a.hoa = 9.5f;
System.out.println(“Điểm Tb là: ” + (float) (a.toan + a.ly + a.hoa) / 3);
GiangVien1 gv1 = new GiangVien1();
}
}
}
}
File GiangVien.java là 1 class, bạn tạo bằng cách nháy chuột phải vào package chọn New –> Java Class, nội dung như sau:
File GiangVien1.java:
package truong.hoc;
class GiangVien1 {
public String hoTen;
public int namSinh;
public String mon;
public int luong;
}
public int namSinh;
public String mon;
public int luong;
}
File GiangVien2.java:
package truong.hoc;
class GiangVien2 {
public String hoTen;
public int namSinh;
public String mon;
public int luong;
public String phongThucHanh;
}
public int namSinh;
public String mon;
public int luong;
public String phongThucHanh;
}
Nhờ vào IDE, việc quản lý các class trở lên tiện lợi hơn rất nhiều!
4. Các class ở trong nhiều package khác nhau
Với những project thực tế, sẽ có rất nhiều class khác nhau được để ở nhiều gói (package) khác nhau.
0 nhận xét: