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

Người ta nói rằng sẽ là developer thì trước sau cũng nên đụng mang lại lập trình phía đối tượng.Lập trình hướng đối tượng là mô hình lập trình phổ biến chuyển nhất và được đánh giá cách viết code tiêu chuẩn cho hầu như các lập trình sẵn viên. Lập trình phía đối tượng hiện nay được sử dụng trong tương đối nhiều ngôn ngữ lập trình: Typescript, Dart, Python, Java, Ruby,...Vậy lập trình sẵn hướng đối tượng có gì sệt biệt, hãy cùng bắt đầu với có mang nhé.

Bạn đang xem: Oop

Lập trình phía đối tượng (hay OOP) là một mô hình lập trình dựa trên khái niệm về Class cùng Object.Nó được thực hiện để tách bóc một chương trình ứng dụng thành những phần 1-1 giản, hoàn toàn có thể tái sử dụng.

Có nhiều ngôn từ lập trình hướng đối tượng người sử dụng như C ++, Java, Python,..2) các khái niệm cơ bản

Các định nghĩa cơ phiên bản trong OOP bao gồm:

ClassObjectĐóng gói (Encapsulation)Kế quá (Inheritance)Đa hình (Polymorphism)Trừu tượng (Abstraction)

Hiểu được 6 định nghĩa này (kết phù hợp với thực hành) nghĩa là chúng ta đã cố được cơ bản của lập trình hướng đối tượng.

*
Trong các ví dụ bên dưới, tôi sử dụng ngữ điệu Java.

2.1) Class

Ta hiểu Class là 1 trong những kiểu dữ liệu do người tiêu dùng định nghĩa. Vào Class có các thuộc tính (attribute) cùng phương thức (method)

public class Nguoi // THUỘC TÍNH:String hoVaTen; // họ cùng tênint tuoi; // tuổiString gioiTinh; // giới tínhString diaChi; // địa chỉboolean giau; // có giàu không// PHƯƠNG THỨC:void an() // code//void ngu() // ...void xemTV() // ...

2.2) Object

Nếu Class là một trong những khuôn mẫu thì Object đó là thể hiện của khuôn mẫu mã đó.Từ class Nguoi bên trên, làm sao ta tạo ra một đứa bạn Will Smith, 20 tuổi, bên giàu?

Nguoi nguoi1 = new Nguoi(); // khởi tạo ra Objectnguoi1.hoVaTen = "Will Smith"; // set giá trị đến thuộc tính hoVaTennguoi1.tuoi = 20; // set quý hiếm ...nguoi1.gioiTinh = "Nam"; // ...nguoi1.diaChi = "Mĩ";nguoi1.giau = true;Để dễ dàng nhớ, tôi thường coi Class là một bản vẽ của ngôi nhà, còn Object là những ngôi bên cụ thể, được xây thực sự.

2.3) Đóng gói

Một trong những điểm đáng chăm chú về tính đóng gói đó là các thuộc tính sẽ có được thuộc tính phạm vi (hay access modifier) là private cùng ta cần tạo getter, setter cho các thuộc tính đó:

public class Nguoi private String hoVaTen; private int tuoi; private String gioiTinh; private String diaChi; private boolean giau; public String getHoVaTen() return hoVaTen;public void setHoVaTen(String hoVaTen) this.hoVaTen = hoVaTen;public int getTuoi() return tuoi;public void setTuoi(int tuoi) this.tuoi = tuoi;public String getGioiTinh() return gioiTinh;public void setGioiTinh(String gioiTinh) this.gioiTinh = gioiTinh;public String getDiaChi() return diaChi;public void setDiaChi(String diaChi) this.diaChi = diaChi;public boolean isGiau() return giau;public void setGiau(boolean giau) this.giau = giau;// CÁC PHƯƠNG THỨC ...Setter dùng để làm set giá chỉ trị mang lại thuộc tính, getter dùng để mang ra quý giá của thuộc tính.

Xem thêm: Xem Phim Gì Để Luyện Nghe Tiếng Anh Bằng 10 Bộ Phim Kinh Điển ‹ Go Blog

Vì vậy lúc gán giá trị cho các thuộc tính của Object, code tất cả sự núm đổi:

Nguoi nguoi1 = new Nguoi(); // khởi sinh sản Objectnguoi1.hoVaTen = "Will Smith"; // đã báo lỗi bởi vì không thể truy vấn thuộc tính privatenguoi1.setHoVaTen("Will Smith"); // ko lỗiCác keyword private, protected, public được call là những access modifier. Thường thì với thuộc tính ta vẫn để access modifier là private, còn với cách làm sẽ để public.

2.4) Kế thừa

Giống như phụ thân có vật gì thì con bao gồm cái đó, thừa kế giúp class con có được những nằm trong tính, phương thức của class cha.

public class LapTrinhVien extends Nguoi private String chucVu; // chức vụprivate float luong; // lương mặt hàng thángprivate boolean biTri; // bị đau trĩ nội trĩ ngoại hay chưa// getter, setter ...Lúc này, các thuộc tính vào Class Nguoi phải biến đổi access modifier tự private quý phái protected thì Class LapTrinhVien bắt đầu được vượt hưởng những thuộc tính đó:

public class Nguoi protected String hoVaTen; protected int tuoi; protected String gioiTinh; protected String diaChi; protected boolean giau; // getter, setter, ...Lúc này, Class LapTrinhVien sẽ có được dạng:

public class LapTrinhVien extends Nguoi protected String hoVaTen; protected int tuoi; protected String gioiTinh; protected String diaChi; protected boolean giau; private String chucVu; // chức vụprivate float luong; // lương hàng thángprivate boolean biTri; // bị đau trĩ nội trĩ ngoại hay chưa// những phương thức tự class Nguoi ...// getter, setter ...Nói phổ biến là class thân phụ có nằm trong tính và phương thức gì, thì class con tất cả cái đấy.

2.5) Đa hình

Chó, mèo, vịt đều phải có phương thức kêu, cơ mà mèo kêu "meo meo", chó kêu "gâu gâu", vịt kêu "quạc quạc".

*

Một hành vi được triển khai theo những cách khác biệt tuỳ vào hoàn cảnh, đó gọi là Đa hình.

Ta có thể đạt được nhiều hình theo kiểu ghi đè phương thức (Method Overriding), hoặc nạp ông xã phương thức (Method Overloading).Sau đây là ví dụ về ghi đè phương thức:

class DongVatpublic void keu() System.out.println("Kêu");class đến extends DongVat
Overridepublic void keu() System.out.println("Quạc quạc");Còn đây là ví dụ về nạp ông xã phương thức:

class Nguoi public void chao() System.out.println("Xin chào");public void chao(String hoTen) System.out.println("Xin chào, " + hoTen);public void chao(String hoTen1, String hoTen2) System.out.println("Xin chào, " + hoTen1 + " va " + hoTen2);Và khi điện thoại tư vấn Object, ta hoàn toàn có thể gọi 3 cách làm cùng thương hiệu với những loại tham số không giống nhau, và công dụng cũng khác nhau:

Nguoi nguoi = new Nguoi();nguoi.chao();nguoi.chao("Will Smith");nguoi.chao("Will Smith", "Chris Rock");Kết quả:

*

2.6) Trừu tượng

Ta có thể lấy ví dụ về tính chất trừu tượng như sau: khi chúng ta dùng điều khiển và tinh chỉnh TV, bạn chỉ cần phải biết bấm nút thì nó sẽ đưa kênh cho chính mình chứ bạn không nhất thiết phải hiểu phía sau chiếc tinh chỉnh đó rất nhiều gì xảy ra.Một lấy ví dụ khác, với chiếc xe ô tô, khi chúng ta nhấn phanh, chúng ta chỉ cần phải biết là khi nhấn phanh thì xe đang dừng chứ chúng ta không cần thân mật nguyên lý vận động đằng sau tác dụng phanh đó ra sao.Nói cách khác, ta chỉ để ý đến "What it does" chứ không hề cần quan tâm "How it does".Trong Java, ta hoàn toàn có thể đạt được Trừu tượng theo 2 cách: abstract class với interface.

Với abstract class, những phương thức sẽ không tồn tại phần thân, nhưng chỉ có phần khai báo. Các class nào thừa kế từ nó sẽ tiến hành phần thân của phương thức.

abstract class Vehicle abstract void start () ; abstract void stop (); abstract void accelerate (); abstract void brake (); class oto extends Vehicle void start () //code here… void stop () //code here… void accelerate () //code here… void brake () System.out.println("Car braked"); class xe đạp extends Vehicle void start () //code here… void stop () //code here… void accelerate () //code here… void brake () //code here…class Scooter extends Vehicle void start () //code here… void stop () //code here… void accelerate () //code here… void brake () //code here…Khi sử dụng, ta hoàn toàn có thể khởi tạo ra Object dạng như sau:

Vehicle oto = new Car();car.brake();Kết quả:

*
Class xe đạp và Scooter cũng hoàn toàn có thể làm tương tự.

2.7) một số trong những khái niệm khác

ConstructorInterfaceToán tử thisToán tử superThuộc tính phạm viQuan hệ IS-AQuan hệ HAS-A3) Kết

Hi vọng bài viết đã giúp bạn có được ánh nhìn tổng quan tiền và đầy đủ khái niệm cơ bản của lập trình phía đối tượng.Với những bạn mới học tập lập trình phía đối tượng, lời khuyên của tớ là không nên đọc không ít lý thuyết, hãy code thật nhiều. Tiếp đến quay lại với những khái niệm, bạn sẽ vỡ ra các thứ hơn, gọi sâu hơn.Lập trình hướng đối tượng hiện thời được dùng rất nhiều trong các công nghệ và ngôn ngữ lập trình: Angular áp dụng Typescript, Flutter áp dụng Dart, Python, Java ,... Vị vậy rất đáng để chúng ta đầu từ thời hạn và công sức.