So sánh lớp và đối tượng

Bài học này chúng ta sẽ học Cách tạo một class và object trong lập trình Java hướng đối tượng (Java OOP).

So sánh lớp và đối tượng

Ví dụ thực tế về cách tạo Class và object trong Lập trình Java

Bài viết này, trước tiên mình sẽ giúp bạn hiểu cơ bản qua các ví dụ thực tế. Biết cách tạo class và object trong Java như thế nào.

\> Còn nếu bạn đã biết cơ bản và muốn tìm hiểu kỹ hơn thì đọc ngay bài viết Class và Object trong Java

1. Class trong Java là gì? Object trong Java bạn đã từng nghe đến chưa?

Các Class và các Object là những thành phần cơ bản của Lập trình hướng đối tượng (OOP).

Thường sẽ có một sự nhầm lẫn giữa các Class và các Object. Trong bài này, mình sẽ cố gắng giúp cho bạn hiểu được.

  • Class là gì? Cách tạo Class trong Java
  • Object là gì? Cách tạo Object trong Java
  • Sự khác biệt giữa Class và Object là gì
  • Các khái niệm của Class và Object
  • Ví dụ về Class và Object trong Java
  • Ví dụ về Class và Object: Phương thức main() bên ngoài class

Class trong Java là gì?

Trong Java một Class là một thực thể xác định đối tượng sẽ có những hành vi nào và những đối tượng sẽ có.

Nói cách khác, class chỉ là một bản kế hoạch hay một bộ chỉ dẫn để xây dựng các đặc điểm của đối tượng cụ thể sau này.

Cách tạo class trong Java:

Trong đó:

  • class: Là từ khóa để tạo class
  • <class_name>: Là tên class bạn định tạo nó sẽ được viết theo quy tắc PascalCase (Viết liên và viết HOA chữ cái đầu tiên của từng từ)
  • field: Các biến đối tượng
  • method: Các phương thức

    Object trong Java là gì?

    Một Object (đối tượng) nó chứa trong đó bao gồm các method (phương thức) và properties (thuộc tính) để tạo ra một kiểu dữ liệu hữu ích.

    Object

    xác định hành vi của class. Khi bạn gửi một thông điệp vào một object, có nghĩa là bạn đang yêu cầu gọi các object hoặc thực hiện một trong những phương thức của nó.

    Từ một quan điểm của lập trình hướng đối tượng, một đối tượng có thể là một cấu trúc dữ liệu (data structure), một biến (variable) hoặc một chức năng (function).

    Object được phân bổ vị trí bộ nhớ. Các Object được thiết kế như class phân cấp.

    Cách tạo Object trong Java:

    <class_name> ReferenceVariable = new <class_name>();

    Trong đó:

    • <class_name>: Là kiểu dữ liệu của đối tượng bạn định tạo
    • ReferenceVariable: Là tên tham chiếu của đối tượng
    • new: Từ khóa để tạo đối tượng
    • <class_name>(): Là class mà bạn tạo đối tượng từ nó

      2. Điểm khác biệt giữa Class và Object trong Java OOP

      Một Class là một Blueprint (kế hoạch) hay Prototype (nguyên mẫu) xác định biến và các phương thức (hay function) chung với tất cả các đối tượng cùng loại.

      Một Object (đối tượng) là một

      cụ thể, thể hiện của một Class.

      Các đối tượng thường được dùng để mô tả đối tượng trong thế giới thực mà bạn thấy hàng ngày.

      3. Hiểu về khái niệm Class và Object trong Java với ví dụ cụ thể

      Hãy lấy một ví dụ về việc phát triển Hệ thống Quản lý Chó.

      Bạn sẽ cần nhiều thông tin về những con chó giống như các

      loài khác nhau của những con chó, tuổi, kích thước....

      Bạn cần phải mô hình hóa con chó vào phần mềm.

      So sánh lớp và đối tượng

      Mô hình hóa thực thể vào phần mềm

      Và câu hỏi là: Làm thế nào để xây dựng một hệ thống như vậy?

      Đầu tiên, chúng ta hãy làm một bài tập.

      Bạn có thể xem hình ảnh khác nhau ba giống chó bên dưới đây.

      So sánh lớp và đối tượng

      3 giống chó khác nhau - Ví dụ về Class và Object trong Java

      Bây giờ, ngay tại đây! Hãy liệt kê ra sự khác biệt của chúng

      Một số sự khác biệt bạn có thể liệt kê ra có lẽ là:

      • Giống
      • Tuổi
      • Kích cỡ
      • Màu sắc.

      Nếu bạn suy nghĩ thêm một phút, sự khác biệt này cũng là đặc điểm chung của những con chó này.

      Những đặc điểm (giống, tuổi, kích cỡ, màu) có thể tạo thành một dữ liệu cho các dữ liệu của object (gọi là Data member)

      So sánh lớp và đối tượng

      Các đặc điểm khác biệt của giống chó - Data member trong Java

      Tiếp theo, hãy liệt kê các hành vi phổ biến trong những con chó này như:

      • Ăn
      • Ngủ
      • Ngồi
      • Chạy

      Và đây sẽ là hành động của object trong phần mềm.

      Và, đến đoạn này, chúng ta đã xác định được các điều sau đây:

      So sánh lớp và đối tượng

      Mô hình hóa giống chó bằng class Dog

      Bây giờ, cho các giá trị khác nhau cho data member (giống, kích thước và màu) trong class, bạn sẽ nhận được các object chó khác nhau.

      So sánh lớp và đối tượng

      Gán các đặc điểm cho data member để tạo ra các giống chó khác nhau

      Bạn có thể thiết kế bất kỳ chương trình nào sử dụng cách tiếp cận của Lập trình hướng đối tượng (OOP)

      Trong khi tạo ra một class, bạn phải thực hiện theo nguyên tắc.

      5 nguyên tắc khi tạo class trong Java:

      • Single Responsibility Principle (SRP)
      • Open Closed Responsibility (OCP)
      • Liskov Substitution Responsibility (LSR)
      • Interface Segregation Principle (ISP)
      • Dependency Inversion Principle (DIP)

      Tìm hiểu thêm về SOLID trong Java

      Nếu bạn mới bắt đầu học Java. Hãy để mọi thứ đơn giản nhất.

      Bài này thì bạn chỉ cần biết là có 5 nguyên tắc

      tạo class là được.

      4. Ví dụ thực tế về cách tạo Class và Object trong Java

      Chúng ta sẽ tạo Class Dog như đã phân tích ở trên:

      public class Dog {

      // Tạo các biến

      String breed;

      String size;

      int age;

      String color;

      // Phương thức lấy thông tin giống chó

      public String getInfo() {

      return ("Breed is: "+breed+" Size is: "+size+" Age is: "+age+" Color is: "+color);

      }

      // Tất cả sẽ được thực thi từ trong hàm Main

      public static void main(String[] args) {

      // Tạo ra giống 1 con chó giống maltese

      Dog maltese \= new Dog();

      // Gán các đặc điểm cho con chó này

      maltese.breed \= "Maltese";

      maltese.size \= "Small";

      maltese.age \= 2;

      maltese.color \= "white";

      // In ra thông tin con chó maltese

      System.out.println(maltese.getInfo());

      }

      }

      Kết quả chúng ta nhận được sẽ là:

      Breed is: Maltese Size is: Small Age is: 2 Color is: White

      Lưu ý rằng, Chúng ta đã tạo class là Dog để mô tả các điểm chung về chó.

      Tuy nhiên chưa gán giá trị cho nó.

      Tiếp nữa là chúng ta tạo một phương thức để lấy thông tin giống chó.

      Sau đó, từ class Dog, chúng ta tạo ra một giống chó mới là <class_name>`0 và gán cho nó các đặc điểm đã khai báo trong class `Dog.

      5. Ví dụ về Class và Object: Tạo phương thức main() ở class khác

      Trong ví dụ trên, chúng ta đang tạo ra phương thức `<class_name>`2 bên trong cùng class.

      Bây giờ, chúng ta tạo ra các Class và xác định phương thức `<class_name>`2 ở trong class khác.

      Đây là một cách làm tốt hơn so với cách trước:

      Lưu tên file là `<class_name>`4

      // Tạo class Dog chịu trách nhiệm khai báo

      // các biến và phương thức

      class Dog {

      // Tạo các biến

      String breed;

      String size;

      int age;

      String color;

      // Phương thức lấy thông tin

      public String getInfo() {

      return ("Breed is: "+breed+" Size is: "+size+" Age is: "+age+" Color is: "+color);

      }

      }

      // Tạo class mới chỉ chịu trách nhiệm thực thi

      public class Execute{

      public static void main(String[] args) {

      Dog maltese \= new Dog();

      maltese.breed \= "Maltese";

      maltese.size \= "Small";

      maltese.age \= 2;

      maltese.color \= "white";

      System.out.println(maltese.getInfo());

      }

      }

      Kết quả chúng ta sẽ nhận được là tương tự như cách làm trên.

      Breed is: Maltese Size is: Small Age is: 2 Color is: White

      Tuy nhiên ở đây chúng ta đã áp dụng nguyên tắc S khi tạo class là: Mỗi class chỉ chịu một trách nhiệm duy nhất.

      • Class Dog: Chịu trách nhiệm mô hình hóa các giống chó
      • Class Execute: Chị trách nhiệm thực thi, tạo ra giống chó cụ thể

        Bạn đã hiểu về Class và Object chưa?

        Như vậy, chỉ qua ví dụ tạo ra các giống chó, mình đã giúp bạn hiểu cơ bản về Class trong Java là gì, Object mặt mũi như thế nào, Cách tạo Class trong Java...

        • Class trong Java là một thực thể quyết định làm thế nào một đối tượng sẽ cư xử và những đối tượng sẽ có.
        • Một Object trong Java là một phần trong đó bao gồm phương thức và thuộc tính để làm cho loại dữ liệu đó hữu ích.
        • Một hệ thống class học cho phép chương trình có thể xác định một class mới dựa trên class cha bằng cách sử dụng một kỹ thuật như inheritance, overriding and augmenting.

        Chúng ta sẽ liên tục sử dụng Class và Object trong Lập trình Java hướng đối tượng, Java Web. Vì thế bạn sẽ hiểu chúng hơn qua các ví dụ sau này.

        Đâu là sự khác nhau giữa đối tượng và lớp?

        Lớp là một nhóm đối tượng có các đặc điểm tương tự nhau. Đối tượng là một thực thể trong thế giới thực như bút, laptop,… Một lớp chỉ cần được khai báo một lần. Đối tượng có thể được tạo ra nhiều lần theo yêu cầu.

        Trong Java lớp và đối tượng khác nhau như thế nào?

        Đị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ể đó.

        Khi sử dụng từ khóa new để tạo một đối tượng nó được tạo ra ở đâu?

        Từ khóa new được sử dụng để cấp phát bộ nhớ cho đối tượng. Nói rõ hơn đó là: Lúc ta định nghĩa ra một đối tượng, chúng ta chỉ mới tạo ra nó trong "kế hoạch", trong "tưởng tượng".

        Đối tượng object được xem như thế nào của lớp class )?

        Đối tượng (Object) là một thực thể cụ thể của một lớp (Class) trong Java. Nó bao gồm các thuộc tính và phương thức và được sử dụng để đại diện cho một đối tượng thực tế trong thế giới thực.