Lớp và Đối tượng trong JAVA

Ngày đăng: 10/12/2020   -    Cập nhật: 15/12/2020


Như các bạn đã biết trong các bài viết trước, Java là ngôn ngữ hướng đối tượngmọi thứ trong Java đều dựa trên đối tượng mà hoạt động. Thế nên, trong Series này chúng ta hãy cùng tìm hiểu tất tần tật về Hướng đối tượng trong Java nhé.


Đầu tiên, chúng ta sẽ cần tìm hiểu về lớp và đối tượng.


1. Lớp và đối tượng trong JAVA là gì?


Lớp và Đối tượng trong Java


Lớp (class) là khuôn mẫu để từ đó tạo ra các thực thể (thể hiện). Vậy nên, khi thiết kế một lớp, ta cần nghĩ đến những đối tượng sẽ được tạo ra từ lớp đó.


Có hai loại thông tin quan trọng về mỗi đối tượng:



  • Những thông tin mà đối tượng đó biết
  • Những việc mà đối tượng đó làm


Ví dụ về lớp (class) trong Java


Những gì mà một đối tượng biết về bản thân nó được gọi là các biến thực thể (instance variable) hay thuộc tính thực thể (instance attribute).


Chúng biểu diễn trạng thái (state) của đối tượng hay còn gọi là dữ liệu của đối tượng, các đối tượng khác nhau thuộc cùng loại có thể có các giá trị khác nhau cho các biến thực thể.


Các biến thực thể có thể là biến thuộc một trong những kiểu dữ liệu cơ bản (int, boolean, float...) hoặc là tham chiếu tới đối tượng thuộc một lớp nào đó.


Những gì một đối tượng có thể làm được gọi là các phương thức (method).


Các phương thức được thiết kế để thao tác trên dữ liệu của đối tượng. Một đối tượng thường có các phương thức đọcghi giá trị cho các biến thực thể.


Ví dụ, Một đối tượng đồng hồ báo thức có một biến thực thể lưu thời gian cần báo thức, và hai phương thức để đặt và lấy giờ báo thức.


Như trên hình, phần màu vàng là thuộc tính, màu xanh là phương thức lần lượt của các đối tượng.


Tuy nhiên trong một số trường hợp, một đối tượng có thể:



"Không có thuộc tính
hoặc không có phương thức
hoặc không có cả hai"


Các đối tượng này được tạo ra để làm một vai trò đặc biệt nào đó trong chương trình.


Tóm lại, đối tượng có các biến thực thể và các phương thức, các biến thực thể và các phương thức này được định nghĩa trong thiết kế của lớp.


Công việc viết chương trình là viết các định nghĩa lớp. Định nghĩa lớp mô tả về các thành phần mà mỗi thực thể của nó sẽ chứa, cụ thể là dữ liệu của mỗi thực thể và các phương thức cho phép truy cập và sửa đổi dữ liệu đó.


Một lớp không phải là một đối tượng, nó là một "cái khuôn" dùng để tạo nên đối tượng. Nó mô tả cách tạo một đối tượng thuộc kiểu cụ thể đó.


Mỗi đối tượng tạo ra từ một lớp có thể có các giá trị riêng cho các biến thực thể.


Ví dụ, ta có thể:



  • Dùng lớp TaiKhoanNganHang để tạo ra nhiều đối tượng tài khoản ngân hàng
  • Mỗi tài khoản có một chủ tài khoản, một số tài khoản, và một số dư riêng
  • Mỗi tài khoản đều có thể làm những việc giống nhau (rút tiền, gửi tiền, đóng tài khoản)

2. Tạo và sử dụng đối tượng thông qua lớp


Vậy làm thế nào để tạo và sử dụng một đối tượng?


Thông tường để tách bạch giữa code khai báo và code thực thi ta cần đến hai lớp.


Một lớp dành cho kiểu đối tượng mà ta muốn tạo và một lớp khác để thử nghiệm lớp đó.


Lớp thử nghiệm là chương trình, nơi ta đặt phương thức main, và tại phương thức main đó, ta tạo và sử dụng các đối tượng thuộc lớp vừa xây dựng.


Lớp thử nghiệm chỉ có một nhiệm vụ duy nhất: Chạy thử các biến và phương thức của lớp đối tượng mới.


Khởi tạo và chạy thử 2 lớp như ví dụ sau:


File: ConBo.java




public class ConBo {
    String ten;
    String giong;
    int tuoi;

    void keu() {
        System.out.println("Moo...!");
    }

    void hienThiThongTin() {
        System.out.println("Tên con bò: " + ten);
        System.out.println("Tuổi con bò: " + tuoi);
    }
}
 


File: TestConBo.java



public class TestConBo {
    public static void main(String[] args) {
        ConBo conBoA = new ConBo();
        conBoA.ten = "Xoáy";
        conBoA.tuoi = 2;
        conBoA.keu();
        conBoA.hienThiThongTin();
    }
}
 


Kết quả khi chạy file TestConBo.java là:



Moo...!
Tên con bò: Xoáy
Tuổi con bò: 2
 


Hoặc đối với các lớp đơn giản, bạn cũng có thể ghép chúng lại như sau:


File: ConBo.java




public class ConBo {
    
    // Các biến thực thể
    String ten;
    String giong;
    int tuoi;

    // Các phương thức
    void keu() {
        System.out.println("Moo...!");
    }

    void hienThiThongTin() {
        System.out.println("Tên con bò: " + ten);
        System.out.println("Tuổi con bò: " + tuoi);
    }
    
    public static void main(String[] args) {

        // Khởi tạo đối tượng conBoA dựa trên class ConBo
        ConBo conBoA = new ConBo();
        
        // Gán giá trị cho biến thể hiện
        conBoA.ten = "Xoáy";
        conBoA.tuoi = 2;
        
        // Thực thi các phương thức của đối tượng
        conBoA.keu();
        conBoA.hienThiThongTin();
    }
}
 


Chương trình TestConBo thử nghiệm lớp ConBo bằng cách tạo một đối tượng mới là conBoA thuộc lớp này (lệnh ConBo conBoA = new ConBo())


Sau đó dùng toán tử dấu chấm . để truy cập các biến thực thể và gọi phương thức của đối tượng.


Cụ thể:



  • Lệnh conBoA.name = "Xoáy", conBoA.tuoi = 2 gán giá trị lần lượt cho 2 biến thể hiện nameten của conBoA
  • Còn conBoA.keu(), conBoA.hienThiThongTin() kích hoạt phương thức.


Để cài đặt một lớp, việc viết một lớp thử nghiệm kèm theo không phải là bước bắt buộc. Tuy nhiên, đó là công việc cần thiết để đảm bảo rằng lớp đó đã được cài đặt đúng và hoạt động như mong muốn của người thiết kế.

3. Tương tác giữa các đối tượng


Như đã nói đến trong các phần trước, phương thức main phục vụ hai mục tiêu sử dụng:


  • Để thử nghiệm các lớp đã cài đặt 
  • Để khởi động ứng dụng Java (chạy code từ đây)


Khi ở trong các phương thức main nói trên, ta không thực sự ở môi trường hướng đối tượng, main chỉ tạo và chạy thử các đối tượng. Trong khi đó, ở một ứng dụng hướng đối tượng thực thụ, các đối tượng phải "nói chuyện" với nhau.


Một ứng dụng hướng đối tượng nói chung và ứng dụng Java nói riêng thực chất là các đối tượng nói chuyện với nhau.


"Nói chuyện" ở đây có nghĩa rằng các đối tượng gọi các phương thức của nhau.


Như ví dụ ở mục 2, bạn có thể tạo thêm đối tượng conBoA, conBoB, … Các đối tượng này sau khi được tạo hoàn toàn có thể sử dụng các phương thức như cow ban đầu.


Trong trường lớp đối tượng thuộc một lớp mới (chẳng hạn như conTrau), bạn phải khởi tạo 
conTrau trong phương thức của ConBo và gọi lại chính phương thức của conTrau.

Tổng kết


Như vậy, trong phần này mình đã giúp các bạn có được những kiến thức ban đầu về lớp và đối tượng trong Java. Tuy khá đơn giản, nhưng nó là những nét chạm khắc quan trọng cho để bắt đầu học lập trình hướng đối tượng sau này.


Để biết thêm về Java OOP hãy hóng Series các viết tiếp theo nhé.


> Hoặc bạn có thể tham gia HỌC JAVA WEB (Full stack) để đẩy nhanh quá trình học. Đi thực tập lấy kinh nghiệm sớm hơn.



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python

Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!