Lập trình là viết ra những dòng lệnh để các thiết bị máy tính nói chung thực thi và viết ra một kết quả. Trong đó, người ra lệnh dùng ngôn ngữ lập trình( là ngôn ngữ mà các thiết bị máy tính có thể đọc và hiểu được) để ra lệch cho máy móc.

1. Lập trình hướng đối tượng là gì?

    • Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) : sử dụng lớp ( class) là một bản thiết kế trước gốm các thuộc tính và chức năng đóng gói bên trong. Từ class có thể xây dựng nên đối tượng( object) có các thuộc tính khác nhau.
    • Đối tượng( object): chứa các thuộc tính và chức năng. Nhà cửa, xe hơi, máy tính.. đều là ví dụ thực tế của đối tượng. Chúng có một số thuộc tính và phương thức cụ thể để thực hiện một số hành động.
    • Lớp( class): Lớp mô phỏng các Object. Chúng xác định các thuộc tính và chức năng của các Object. Ví dụ: Máy tính xách tay là một class và máy tính xách tay của bạn là một đối tượng tạo ra từ class đó.

2. Tính chất của OOP chính

  • Tính trừu tượng(Abstraction):

    • Đây là khả năng của chương trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết. Mỗi đối tượng có thể hoàn tất các công việc một cách nội bộ. Nó báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác. Tính chất này thường được gọi là sự trừu tượng của dữ liệu.
    • Một chương trình Java cũng là một ví dụ tuyệt vời về tính trừu tượng. Ở đây java đảm nhận việc chuyển đổi các câu lệnh đơn giản sang ngôn ngữ máy và ẩn đi các chi tiết triển khai bên trong.
  • Tính đóng gói (Encapsulation)

    • Tính đóng gói là quy trình giữ và che giấu một hoặc nhiều thành phần với một gói vật lý hoặc logic. Trong phương pháp lập trình hướng đối tượng, nó ngăn truy cập vào chi tiết triển khai bên trong của đối tượng hay một thư viện.
    • Tính đóng gói được triển khai bằng cách sử dụng các từ khóa chỉ định truy cập (access modifiers). Một chỉ định truy cập định nghĩa phạm vi và sự ẩn hiện của các thành phần trong class. Các từ khóa bao gồm public, private, protected,…

public class Student {
   private String name;
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name
   }
}
  • Tính đa hình( Polymorphism):

    • Đa hình là khái niệm trong đó một đối tượng có thể tồn tại và hoạt động khác nhau trong các tình huống khác nhau.
    • Ví dụ khi định nghĩa đối tượng “HinhTron” thì có phương thức tên giống nhau là “info”. Khi gọi phương thức này thì phụ thuộc vào số lượng tham số mà giá trị thể hiện khác nhau.
package jmaster.io;

public class HinhTron { public void info(){ System.out.println("Ìnfo"); } public void info(int r){ System.out.println("Info voi 1 params"); } public void info(int r, String pi){ System.out.println("Info voi 2 params"); } }

 

  • Tính kế thừa (Inheritance):

    • Kế thừa cho phép một đối tượng có thể sử dụng lại các đặc tính mà đối tượng khác đã có. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Đối tượng đang được kế thừa được gọi là lớp cha và đối tượng kế thừa lớp cha được gọi là lớp con.
package jmaster.io;
   class Person {//super class
        public void info(){
               System.out.println("Info Person");
        }
   }
   class Student extends Person{ //sub class
        public void study(){
              System.out.println("Student Study");
        }
   }
    public class Test {
        public static void main(String args[]){
              Student a = new Student();
              a.info();
              a.study();
       }
    }
  • Tính liên kết (Association):

    • Tính liên kết dùng để xác định mối quan hệ giữa các đối tượng. Sự liên kết xác định tính đa dạng giữa các đối tượng. Ví dụ đối tượng Giáo viên và Học sinh. Có một mối quan hệ một-nhiều giữa giáo viên và học sinh (một giáo viên có thể có một hoặc nhiều học sinh). Tương tự, một học sinh có thể có mối quan hệ một-nhiều với các đối tượng giáo viên. Tuy nhiên, cả đối tượng học sinh và giáo viên đều độc lập với nhau, không ai sở hữu ai.

3. Quy tắc viết code OOP

Khi chúng ta viết code Java OOP cần vận dụng các tính chất trên để có thể tạo ra bộ source code tối ưu với các tiêu chí sau:

  • DRY (Don’t Repeat Yourself): Sử dụng lại code đã có. Không lặp code nếu chức năng như nhau, nên sử dụng lại code vận dụng tính chất OOP 
  • Đóng gói các class để tối đa độc lập cũng như có thể liên kết và mở rộng dễ dàng.
  • Dễ dàng quản lý code và lỗi sau này.
  • Dễ dàng nâng cấp.