LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVASCRIPT

Trước Lúc đọc bài viết này, bạn nên ôn lại kiến thức về object với prototype trong Javacript.Trước Khi đối chiếu về OOP. vào JavaScript, mình vẫn nhắclại sơ một số ít đặc điểm trongOOP..

Bạn đang xem: Lập trình hướng đối tượng javascript

Các tính chất của OOP

*

Trong xây dựng hướng đối tượng người sử dụng (OOP) có 4 tính chất là tính gói gọn (Encapsulation), tính thừa kế (Inheritance), tính đa hình (Polymorphism) cùng tính trừu tượng (Abstraction)

1.Encapsulation (Tính đóng gói):

Tính đóng là chuyên môn giúp bạn đậy giấu được số đông thông báo bên phía trong đối tượng người sử dụng. Mục đích chủ yếu của tính gói gọn là giúp tiêu giảm những lỗi khi cải tiến và phát triển công tác.Tính chất này không có thể chấp nhận được người tiêu dùng những đối tượng người sử dụng đổi khác tinh thần nội tại của một đối tượng. Chỉ bao gồm những cách tiến hành nội trên của đối tượng người dùng cho phép thay đổi tâm lý của chính nó. Việc chất nhận được môi trường thiên nhiên phía bên ngoài tác động lên những tài liệu nội tại của một đối tượng người tiêu dùng theo cách làm sao là hoàn toàn tùy thuộc vào bạn viết mã. Đây là tính chất đảm bảo an toàn sự trọn vẹn của đối tượng người sử dụng.

Các ích lợi chính mà lại tính đóng gói sở hữu lại:

Hạn chế được các tróc nã xuất không phù hợp lệ tới các nằm trong tính của đối tượng người tiêu dùng.Giúp cho tinh thần của đối tượng người dùng luôn luôn đúng.Giúp ẩn đi các lên tiếng không quan trọng về đối tượng người sử dụng.Cho phép bạn biến hóa cấu tạo bên phía trong lớp mà ko ảnh hưởng tới lớp không giống.

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

Kế quá vào lập trình sẵn phía đối tượng người dùng chính là thừa kế lại phần lớn nằm trong tính cùng phương thức của một tấm. Có nghĩa là trường hợp lớp A kế thừa lớp B thì lớp A sẽ sở hữu được phần lớn trực thuộc tính cùng cách làm của lớp B.Lớp được thừa kế phần nhiều nằm trong tính và thủ tục trường đoản cú lớp khác được hotline là dẫn xuất (Derived Class) tuyệt lớp Con (Subclass) với lớp bị lớp không giống kế thừa được call là lớp cơ sở (Base Class) hoặc lớp cha (Parent Class).

Các công dụng của tính kế thừa:

Giúp tái áp dụng lại code.Tăng kĩ năng mở rộng của công tác.

3.Polymorphism(Tính nhiều hình):

Tính nhiều hình diễn tả trải qua vấn đề gửi các thông điệp (message). Việc gửi các thông điệp này rất có thể so sánh như việc Điện thoại tư vấn các hàm bên trong của một đối tượng. Các cách tiến hành cần sử dụng trả lời cho 1 thông điệp sẽ phụ thuộc vào đối tượng người sử dụng mà lại thông điệp này được gửi đến sẽ có phản ứng không giống nhau. Người lập trình sẵn hoàn toàn có thể định nghĩa một đặc tính (chẳng hạn trải qua thương hiệu của những phương thức) cho một loạt các đối tượng người tiêu dùng sát nhau mà lại khi thực hiện thì cần sử dụng và một tên thường gọi mà lại sự thực hiện của từng đối tượng người tiêu dùng sẽ tự động hóa xẩy ra tương ứng theo công dụng của từng đối tượng người sử dụng mà lại không trở nên lầm lẫn.

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

Tính trừu tượng là một trong những đặc thù nhưng chỉ tập trung vào hồ hết khả năng của đối tượng người tiêu dùng cùng ẩn đi hầu như báo cáo ko quan trọng. Tính chất này giúp đỡ bạn trung tâm hơn vào hồ hết hào kiệt vậy vày cần quan tâm tới bí quyết mà lại nó được thực hiện.

Trong phạm vi nội dung bài viết này, bọn họ vẫn bàn về 3công năng củaOOP (tính đóng gói, tính thừa kế, tính đa hình), đối chiếu giải pháp hiện thựcchúng vào Java vàJavaScript.

OOP. trong Java

Như chúng ta sẽ biết, Java là một ngôn ngữ phía đối tượng người dùng, vì thế Việc hiện nay các đặc tính OOP hết sức dễ dàng và đơn giản và nkhô nóng gọn gàng, dễ dàng nắm bắt.

1. Tính đóng góp gói

Tính bao đóng góp trong Java biểu đạt bằng phương pháp nhằm phạm vi truy vấn của những trực thuộc tính là private cùng truy hỏi xuất cho tới những thuộc tính này trải qua cách làm public (Hotline là các setter, getter).

Xem thêm: Sữa Dưỡng Thể Trắng Da Vaseline Giá Bao Nhiêu Tiền Chất Lượng, Giá

Ví dụ:

class Student private String name; private int age; private double gpa; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public double getGpa() return gpa; public void setGpa(double gpa) this.gpage authority = gpa; Với giải pháp có tác dụng này đọc tin của đối tượng người tiêu dùng đã được ẩn đi, các bạn chỉ hoàn toàn có thể tiếp xúc cùng với đối tượng người dùng thông qua những thủ tục. Điều này cũng tương tự như với thực tế. lấy ví dụ như khi bạn chạm mặt một fan lạ thì bạn chẳng thể biết được những thuộc tính của bạn này (số điện thoại, sở thích, ...), của cả khi chúng ta hỏi thì người này cũng chưa chắc đang trả lời cho mình đúng sự thật (giống như thủ tục không trả về giá trị thực thuộc tính cơ mà trả về một quý hiếm khác).

2. Tính kế thừa

Trong Java, để thừa kế một lớp các bạn dùng tự khóa extends.

Ví dụ:

class Person private String name; private int age; public void setName(String name) this.name = name; public String getName() return name; public void setAge(int age) this.age = age; public int getAge() return age; class Student extends Person private double gpa; public void setGpa(double gpa) this.gpage authority = gpa; public double getAge() return gpa; class Entry public static void main(String<> args) Student s = new Student(); s.setName("Khoa"); s.setAge(19); s.setGpa(10); System.out.println("Name: " + s.getName()); System.out.println("Age: " + s.getAge()); System.out.println("GPA: " + s.getGpa()); Kết trái lúc chạy chương trình:

Name: KhoaAge: 19GPA: 10.0Có thể thấy rằng lớp Student đã có được thừa hưởng số đông cách tiến hành của lớp Person.

3. Tính đa hình

Tính nhiều hình vào code bên dưới 3 hình thức: hấp thụ chồng cách làm, ghi đnai lưng cách làm với nhiều hình thông qua các đối tượng người dùng nhiều hình(polymorphic objects).

ví dụ như về tính đa hình với nạp chồng pmùi hương thức:Pmùi hương thức cộng sẽ có được những "forms" là cộng 2 số nguyên ổn, cùng 2 số thực, cùng 3 số ngulặng, v.v.. Có thể thấy cùng là cách tiến hành cộng nhưng mà lại có nhiểu kiểu khác nhau buộc phải trên đây đó là bộc lộ của tính đa hình.

package OOP;class Calculator public int add(int a, int b) return a + b; public double add(double a, double b) return a + b; public int add(int a, int b, int c) return a + b + c; public class Entry public static void main(String<> args) Calculator s = new Calculator(); System.out.println(s.add(1, 2)); System.out.println(s.add(2.1, 2.4)); System.out.println(s.add(1, 2, 3)); Kết quả Khi chạy chương thơm trình:

34.56

OOPhường. vào Javascript

Javascript thì không giống, không như Java, họ rất cần được vận dụng một vài ba mẹo nhỏ để thực hiện những đặc tính này.

1. Tính đóng gói

Trong Javascript, nhằm thực hiện tính bao đóng góp, ta có thể tạo nên 1 Constructor Function,đóng gói toàn cục những trường với hàm vào 1 object. Thông thường, các bạn xuất xắc knhị báo nlỗi sau:

function Person(firstName, lastName) this.firstName = firstName; this.lastName = lastName; this.showName = function() console.log(this.firstName + " " + this.lastName); ;var psn1 = new Person("Khoa", "Nguyen");// những property knhì báo vào biến đổi this hoàn toàn có thể bị truy hỏi xuất từ bỏ bên ngoài// object không hề bao đóng nữapsn1.firstName = "changed";console.log(ps1.firstName); // changedVới những knhì báo này, tính bao đóng không được bảo đảm. Các property hoàn toàn có thể bị truy cập, thayđổi trường đoản cú bên ngoài. Tại đây, ta phảisử dụng trở thành viên bộ.

function Person(firstName, lastName) var fstName = firstName; var lstName = lastName; this.setFirstName = function(firstName) fstName = firstName; ; this.getFirstName = function() return fstName; ; this.setLastName = function(lastName) lstName = lastName; ; this.getLastName = function() return lstName; ;var person1 = new Person("Khoa", "Nguyen");console.log(person1.fstName); // Undefined, tất yêu truy vấn đượcconsole.log(person1.getFirstName()); // KhoaCác đổi mới cục bộ này chỉ có thể truy xuất trong Constructor Function, nó tương tự với những trường private vào Java.

Trong javascript, không có bí quyết như thế nào để tạo nên các ngôi trường protected (Chỉ rất có thể truy vấn tự class kế thừa) nlỗi JavaC#được.

2. Tính kế thừa

Trong Javascript không tồn tại tự khóa extends tương tự như class, vậy nênPrototype (và Prototype chains) là sự tiến hành tính kế thừa đối tượng người sử dụng của Javascript.

Ví dụ:

function Person() this.firstName = "Per"; this.lastName = "son"; this.sayName = function() return this.firstName + " " + this.lastName ;// Viết một Constructor Function khácfunction SuperMan(firstName, lastName) this.firstName = firstName; this.lastName = lastName;// Ta mong mỏi SuperMan đang kế thừa các ở trong tính của Person// Sử dụng prototype nhằm kế thừaSuperMan.prototype = new Person();// Tạo một object new bằng Constructor Function var sm = new SuperMan("Khoa", "Nguyen");sm.sayName(); // Khoa Nguyen. Hàm này thừa kế từ bỏ prototype của PersonLúc trình thông dịch JS bình chọn thuộc tính đối tượng khái niệm mang đến nó, trước tiên nó kiểm chất vấn object trước. Nếu object không tồn tại trực thuộc tính được tư tưởng, nó đã kiểm traprototypecủa đối tượng người dùng với thuộc nằm trong tính, giả dụ nó được kiếm tìm thấy, nó vẫn trả về trực thuộc tính đó.Nó khác với OOPhường vào Java là prototype object hoàn toàn có thể truy cập vào đối tượng người dùng tạo thành trước vào sau cùng bất kỳ lúc nào có sự biến đổi làm sao trên prototype

function Bread() ; // constructor functionlet brownBread = new Bread(); // object of type "Bread"let sodaBread = new Bread(); // object of type "Bread"Bread.prototype.toast = function() console.log("I am toasting!"); ; // set the function on a toast property on the prototype// inherited prototype is accessible!brownBread.toast(); // I am toasting!sodaBread.toast(); // I am toasting!

3. Tính nhiều hình và trừu tượng

Đối với tính đa hình và tính trừu tượng, câu hỏi vận dụng 2 tính chất này trong Javascript là không cụ thể. Do kia mình sẽ không còn trình bày trong bài viết này

Việc vận dụng lập trình sẵn hướng đối tượng vào JavaScript là kha khá cực nhọc. Tuy nhiên, nếu bạn nắm vững hồ hết kỹ năng và kiến thức cơ bản mà mình đã trình bày bên trên phía trên, thì mình tin có lẽ rằng các bạn sẽ dễ dãi đọc thêm và vận dụng lập trình hướng đối tượng người sử dụng trong JavaScript.

Tạm kết

vì vậy vào nội dung bài viết này, họ vẫn thuộc tò mò vềOOP trongjavascript.Quý Khách thấy nỗ lực nào về JS, hãy đưa ra rất nhiều chủ ý trong quy trình thực hiện js nhé. Nếu chúng ta thấy nội dung bài viết có ích hãy rate 5* với cốt truyện mang đến phần lớn tín đồ ttê mê khảo!

Hãy giữ lại comment nhằm bản thân rất có thể triển khai xong phiên bản thân rộng sau đây. Cám ơn các bạn!