Bài 8: Giới thiệu về lập trình hướng đối tượng trong Java

Giới thiệu về lập trình hướng đối tượng trong Java

1. Khái niệm cơ bản


2. Ví dụ minh họa cơ bản

Bước 1:

Bước 2: Click phải chuột vào package lop và tạo class đặt tên SinhVien

package lop;

class SinhVien {
    // Thuộc tính
    String hoTen;
    int tuoi;

    // Phương thức
    void hienThiThongTin() {
        System.out.println("Họ tên: " + hoTen + ", Tuổi: " + tuoi);
    }
}

Bước 3: Click phải chuột vào package test và tạo class đặt tên TestSinhVien

package test;

import lop.SinhVien;

public class TestSinhVien {
    public static void main(String[] args) {
        // Tạo đối tượng sinh viên
        SinhVien sv1 = new SinhVien();
        sv1.hoTen = "Nguyễn Văn A";
        sv1.tuoi = 20;

        // Gọi phương thức
        sv1.hienThiThongTin();
    }
}

Bước 4: Chạy class TestSinhVien bằng cách nhấn F11 hoặc click phải chuột giữa class và chọn Run as -> 1. Java Application

👉 Kết quả:

Họ tên: Nguyễn Văn A, Tuổi: 20

3. 5 Bài tập tham khảo thêm (Làm tương tự như bài trên)

Bài tập 1: Lớp Học Sinh

Gợi ý code:

package lop;

class HocSinh {
    String ten;
    double diemToan;
    double diemVan;

    void hienThi() {
        System.out.println("Tên: " + ten + ", Toán: " + diemToan + ", Văn: " + diemVan);
    }
}

package test;
import lop.HocSinh;

public class BaiTap1 {
    public static void main(String[] args) {
        HocSinh hs1 = new HocSinh();
        hs1.ten = "Nguyễn Văn A";
        hs1.diemToan = 8.5;
        hs1.diemVan = 7.0;

        HocSinh hs2 = new HocSinh();
        hs2.ten = "Trần Thị B";
        hs2.diemToan = 6.5;
        hs2.diemVan = 8.0;

        hs1.hienThi();
        hs2.hienThi();
    }
}

Bài tập 2: Tính điểm trung bình

Gợi ý code:

package lop;

class HocSinh2 {
    String ten;
    double diemToan;
    double diemVan;

    double tinhDiemTrungBinh() {
        return (diemToan + diemVan) / 2;
    }

    void hienThi() {
        System.out.println("Tên: " + ten + ", Điểm TB: " + tinhDiemTrungBinh());
    }
}
package test;

import lop.HocSinh2;

public class BaiTap2 {
    public static void main(String[] args) {
        HocSinh2 hs = new HocSinh2();
        hs.ten = "Nguyễn Văn C";
        hs.diemToan = 9.0;
        hs.diemVan = 7.5;

        hs.hienThi();
    }
}

Bài tập 3: Lớp Hình Chữ Nhật

Gợi ý code:

package lop;

class HinhChuNhat {
    double chieuDai;
    double chieuRong;

    double tinhDienTich() {
        return chieuDai * chieuRong;
    }

    double tinhChuVi() {
        return (chieuDai + chieuRong) * 2;
    }
}
package test;

import lop.HinhChuNhat;

public class BaiTap3 {
    public static void main(String[] args) {
        HinhChuNhat hcn1 = new HinhChuNhat();
        hcn1.chieuDai = 5;
        hcn1.chieuRong = 3;

        HinhChuNhat hcn2 = new HinhChuNhat();
        hcn2.chieuDai = 4;
        hcn2.chieuRong = 6;

        System.out.println("Hình 1 - Diện tích: " + hcn1.tinhDienTich() + ", Chu vi: " + hcn1.tinhChuVi());
        System.out.println("Hình 2 - Diện tích: " + hcn2.tinhDienTich() + ", Chu vi: " + hcn2.tinhChuVi());

        if (hcn1.tinhDienTich() > hcn2.tinhDienTich()) {
            System.out.println("Hình 1 có diện tích lớn hơn.");
        } else if (hcn1.tinhDienTich() < hcn2.tinhDienTich()) {
            System.out.println("Hình 2 có diện tích lớn hơn.");
        } else {
            System.out.println("Hai hình có diện tích bằng nhau.");
        }
    }
}

Bài tập 4: Lớp Nhân Viên

Gợi ý code:

package lop;

class NhanVien {
    String hoTen;
    double luongCoBan;
    double heSo;

    double tinhLuong() {
        return luongCoBan * heSo;
    }
}
package test;

import java.util.Scanner;
import lop.NhanVien;

public class BaiTap4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        NhanVien[] ds = new NhanVien[3];

        for (int i = 0; i < 3; i++) {
            ds[i] = new NhanVien();
            System.out.println("Nhập thông tin nhân viên " + (i+1));
            System.out.print("Họ tên: ");
            ds[i].hoTen = sc.nextLine();
            System.out.print("Lương cơ bản: ");
            ds[i].luongCoBan = sc.nextDouble();
            System.out.print("Hệ số: ");
            ds[i].heSo = sc.nextDouble();
            sc.nextLine(); // bỏ dòng
        }

        NhanVien max = ds[0];
        for (int i = 1; i < 3; i++) {
            if (ds[i].tinhLuong() > max.tinhLuong()) {
                max = ds[i];
            }
        }

        System.out.println("Nhân viên có lương cao nhất: " + max.hoTen + " - " + max.tinhLuong());
        sc.close();
    }
}

Bài tập 5: Quản lý Sách (nâng cao hơn)

Gợi ý code:

package lop;

class Sach {
    String tenSach;
    String tacGia;
    double gia;

    void hienThi() {
        System.out.println("Tên sách: " + tenSach + ", Tác giả: " + tacGia + ", Giá: " + gia);
    }
}

package lop;

class ThuVien {
    ArrayList<Sach> danhSach = new ArrayList<>();

    void themSach(Sach s) {
        danhSach.add(s);
    }

    void hienThiTatCa() {
        for (Sach s : danhSach) {
            s.hienThi();
        }
    }

    void timSachTheoTen(String ten) {
        boolean found = false;
        for (Sach s : danhSach) {
            if (s.tenSach.equalsIgnoreCase(ten)) {
                s.hienThi();
                found = true;
            }
        }
        if (!found) {
            System.out.println("Không tìm thấy sách có tên: " + ten);
        }
    }
}
package test;

import java.util.ArrayList;
import java.util.Scanner;

import lop.ThuVien;
import lop.Sach;

public class BaiTap5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ThuVien tv = new ThuVien();

        while (true) {
            System.out.println("\n--- MENU ---");
            System.out.println("1. Thêm sách");
            System.out.println("2. Hiển thị tất cả sách");
            System.out.println("3. Tìm sách theo tên");
            System.out.println("4. Thoát");
            System.out.print("Chọn: ");
            int chon = sc.nextInt();
            sc.nextLine();

            switch (chon) {
                case 1:
                    Sach s = new Sach();
                    System.out.print("Tên sách: ");
                    s.tenSach = sc.nextLine();
                    System.out.print("Tác giả: ");
                    s.tacGia = sc.nextLine();
                    System.out.print("Giá: ");
                    s.gia = sc.nextDouble();
                    sc.nextLine();
                    tv.themSach(s);
                    break;
                case 2:
                    tv.hienThiTatCa();
                    break;
                case 3:
                    System.out.print("Nhập tên sách cần tìm: ");
                    String ten = sc.nextLine();
                    tv.timSachTheoTen(ten);
                    break;
                case 4:
                    System.out.println("Thoát chương trình.");
                    sc.close();
                    return;
                default:
                    System.out.println("Chọn sai, vui lòng nhập lại.");
            }
        }
    }
}