Object-Oriented Programming Flashcards

1
Q

THE 4 FUNDAMENTAL OOP PRINCIPLES

A

Abstraction: Về cơ bản có nghĩa là bỏ qua hoặc ẩn đi những chi tiết không quan trọng .

Encapsulation: Về cơ bản có nghĩa là giữ một số thuộc tính và phương thức riêng tư bên trong Class để chúng không thể truy cập từ bên ngoài Class

Inheritance :Kế thừa làm cho tất cả các thuộc tính và phương thức của một lớp nhất định có sẵn cho một lớp con , tất nhiên sau đó tạo thành một hệ thống phân cấp giữa hai lớp này . ( Sử dụng lại logic chung cho cả hai lớp này )

Polymorphism: Tính đa hình có nghĩa là một lớp con có thể ghi đè lên một phương thức mà nó kế thừa từ một lớp cha .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
1
Q

What is Object-Oriented Programming

A

OOP is a programming paradigm based on the concept of objects

Các đối tượng có thể chứa dữ liệu ( mà chúng ta gọi là thuộc tính ) và code ( mà chúng ta gọi là methods )

Vì vậy, trong các đối tượng OOP là các đoạn mã hoặc khối mã độc lập , giống như các ứng dụng nhỏ của riêng chúng ta

Objects are building blocks of applications, and interact with one another;

Mô hình này được phát triển với mục tiêu tổ chức mã , do đó , để làm cho nó linh hoạt và dễ bảo trì hơn

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Setters and Getters

A

Về cơ bản là các hàm lấy và đặt một giá trị nhưng được thể hiện dưới dạng một giá trị

class PersonCl {
constructor(fullName, birthYear) {
this.fullName = fullName;
this.birthYear = birthYear;
}

calcAge() {
console.log(2037 - this.birthYear);
}

get age() {
return 2037 - this.birthYear;
}

//Set property that already exists
set fullName(name) {
if (name.includes(‘ ‘)) this._fullName = name;
else alert(${name} is not a full name);
}

get fullName(){
return this._fullName
}

}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Protected Properties and Methods

A

Sử dụng dấu “ _ “ trước các đối tượng mình muốn bảo vệ

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Project Architecture

A

Kiến trúc là tất cả về việc tạo cho dự án một cấu trúc .
Và do đó , trong cấu trúc đó , chúng ta có thể phát triển chức năng .

Quan trọng nhất của kiến trúc dự án là quyết định vị trí và cách lưu trữ dữ liệu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Private Class Fields and Methods

A

// 1) Public fields
locale = navigator.language;

// 2) Private fields
#movements = [];

Chú Ý : Phải có dấu chấm phẩy . Và nó không có mặt trên Prototypes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

OOP in JavaScript : Prototypes

A

Trong JavaScript chúng ta có một thứ gọi là nguyên mẫu và tất cả các đối tượng ( Object ) trong JavaScript đều được liên kết với một đối tượng nguyên mẫu nhất định .

Vì vậy , mỗi đối tượng có một nguyên mẫu (prototypes )

Đối tượng nguyên mẫu ( Prototypes Object ) chứa tất cả các đối tượng được liên kết với nguyên mẫu đó có thể truy cập và sử dụng . Và hành vi này thường được gọi là Prototypes inheritance

Prototypes inheritance : Có nghĩa là tất cả các đối tượng được liên kết với một đối tượng nguyên mẫu nhất định có thể sử dụng các phương pháp và thuộc tính được xác định trên nguyên mẫu đó

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Inheritance Between “Classes”: Object.create

A

// Inheritance Between “Classes” : Object.create()
const PersonProto = {
calcAge() {
console.log(2037 - this.birthYear);
},
init(firstName, birthYear) {
this.firstName = firstName;
this.birthYear = birthYear;
},
};

const steven = Object.create(PersonProto);

const StudentProto = Object.create(PersonProto);
StudentProto.init = function (firstName, birthYear, course) {
PersonProto.init.call(this, firstName, birthYear);
this.course = course;
};

StudentProto.introduce = function () {
console.log(My name is ${this.firstName} and I study ${this.course});
};

const jay = Object.create(StudentProto);
jay.init(‘Jay’, 2010, ‘Computer Science’);
jay.introduce();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Inheritance Between “Classes”: Constructor Functions

A

const Person = function (firstName, birthYear) {
// Instance properties
this.firstName = firstName;
this.birthYear = birthYear;
};

Person.prototype.calcAge = function () {
console.log(2037 - this.birthYear);
};

const Student = function (firstName, birthYear, course) {
Person.call(this, firstName, birthYear);
this.course = course;
};

// Linking prototypes
Student.prototype = Object.create(Person.prototype);

Student.prototype.introduce = function () {
console.log(My name is ${this.firstName} and I study ${this.course});
};

const mike = new Student(‘Mike’, 2020, ‘Computer Science’);

mike.introduce();
mike.calcAge();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

ES6 Classes

A

Class chỉ là một loại hàm đặc biệt => có class expression và class declaration

Đầu tiên , các lớp không được Hoisted
( có thể sử dụng chúng trước khi chúng được khai báo trong mã )
Nhưng trong Class thì không
2. Class are first-class citizes

  1. Classes are ecuted in strict mode
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Chaining Methods

A

Thêm
return this
thì việc xâu chuỗi sẽ thực hiện được

How well did you know this?
1
Not at all
2
3
4
5
Perfectly