Khái niệm cơ bản
Object-Oriented Programming, Simplified - YouTube
-
-:
- 4 đặc điểm của lập trình hướng vật thể
- Biến là dữ liệu, hàm là thuật toán. Biến là danh từ, hàm là động từ
- Biểu thức (expression) là những thứ trả lại một giá trị nào đó
- Hoạt động trung tâm của lập trình hướng vật thể là phân loại
- Map, dictionary, associative array, hash, hash table là những cái tên cho cùng một thứ
- Nên để dư một dấu phẩy ở phần tử cuối cùng khi tạo vật thể hoặc mảng
- Việc hiển thị nội dung dữ liệu như thế nào là do công cụ quyết định, không phải ngôn ngữ quyết định
- Đặc điểm cơ bản của lập trình hướng vật thể là truyền tin
-
Hàm:
- Callback là những hàm được dùng như đối số của hàm khác và đã xác định sẵn đối số truyền vào cho nó rồi
- f(a)(b) để gọi hàm f(a) có chứa hàm con f1(b)
- Giao diện là cái khuôn của phương thức
- Hàm cũng là vật thể
- Hàm vô danh, hàm mũi tên, lambda là những cái tên khác nhau cho cùng một thứ
- Việc tách một khối code thành một hàm khiến cho việc đọc từng dòng trở thành đọc từng bước
- Ý tưởng của lập trình hướng vật thể là gom nhiều hàm và dữ liệu vào trong một đơn vị gọi là vật thể
- Để tránh phụ thuộc lòng vòng (circular dependency) có thể dùng hàm
-
IDE:
- Có những plugin chỉ có trên VS Code
- IDE
- Prettier là để làm cho dễ nhìn. Linter là để hạn chế dính bug khi dự án mở rộng
- Sự khác biệt giữa IDE và trình soạn thảo văn bản nằm ở việc compile code. Nên chính xác mà nói thì không có IDE để viết JS cho máy khách
- Vim
- Bấm dấu . để mở VS Code bản web ngay trên GitHub
- Bấm F12 để biết thêm thông tin về biến
- Các biểu tượng dùng trong VS Code
- Dùng snippet để viết tắt code
- Giao diện VS Code
- Hằng là xanh lợt, biến là xanh đậm
- launch.json dùng để thiết lập debugger
- Nhiều người có thể cùng chỉnh sửa cùng lúc như Google Docs
- Phím tắt trong VS Code
- Plugin hay cho người mới
- setting.json giúp tuỳ chỉnh thiết lập theo ý mình
- Video hướng dẫn
- VS Code nhiều khi không tìm hết file được do tên quá dài
- Đường dẫn trong launch.json là cwd
- Language server là thứ khiến cho IDE hỗ trợ tốt hơn việc lập trình
-
Kiểu:
- Hệ thống kiểu chỉ giúp đảm bảo có sự nhất quán, chứ không đảm bảo là ra đúng ý
- Kiểu động là kiểu được kiểm tra vào lúc chạy. Kiểu tĩnh là kiểu được kiểm tra lúc biên dịch (trước lúc chạy)
- Kiểu động làm cho việc học lập trình dễ hơn. Kiểu yếu giúp ngôn ngữ được tự do ép kiểu để đoán ý người dùng dễ hơn
- Sự xuất hiện của language server giúp ta có thể bắt kiểu trước cả lúc biên dịch cho những ngôn ngữ chỉ bắt kiểu lúc chạy
- Thời điểm xét kiểu quyết định độ động tĩnh của nó. Cách kiểu được xét quyết định độ mạnh yếu của nó
-
Mô đun:
- API là giao diện của một chương trình
- Giao diện là cách để sử dụng vật thể mà không cần biết bên trong nó có gì
- Khi import một hàm thì cả file chứa hàm đó sẽ được chạy. Các import của file đó cũng sẽ chạy theo, dù là để import vào một hàm khác mình không import
- Nên tách bạch code hỗ trợ cho client và server vào những mô đun khác nhau
- Package và library là những cái tên khác nhau cho cùng một thứ
- Việc dùng export chính là đang tạo API. API là các vật thể được export
-
Vật thể, lớp:
- Dùng lớp khi ta có logic nghiệp vụ thực sự cần được thực thi. Dùng giao diện để tạo ràng buộc kiểu cho biến
- Không cần biết vật thể chứa dữ liệu gì, chỉ cần quan tâm nó làm được gì
- Lớp là một cái khuôn để tạo các vật thể cho nhanh
- Mảng giống vật thể nhưng tất cả các thuộc tính đều là số. Từ điển giống vật thể nhưng tất cả các thuộc tính đều là chuỗi
- Những vật thể đơn giản dùng để tra cứu dữ liệu theo từ khoá gọi là từ điển
- Từ điển là vật thể được dùng để tra cứu dữ liệu theo từ khoá chứ không phải là để thao tác và thay đổi thuộc tính bằng phương thức
- Các vật thể tương tác với nhau qua phương thức và không trực tiếp làm thay đổi giá trị của nhau
- Phương thức cho ta biết mình có thể làm gì với vật thể
- Phương thức là một thuộc tính của vật thể
- Phương thức phải gắn lên một vật thể cụ thể nào đó để có tác dụng
- this, self là cách để nói rằng hành động mà phương thức sẽ làm sẽ phải gắn lên một vật thể cụ thể của lớp, thứ mà bây giờ chưa được tạo ra
- Thay vì ta thao túng trực tiếp dữ liệu, ta điều khiển vật thể qua phần giao tiếp của nó với bên ngoài
- Thuộc tính nguyên thủy là những thuộc tính có sẵn mình không cần tạo
- Việc đóng gói (encapsulation) giúp ta không cần quan tâm vật thể lưu dữ liệu thế nào, mà chỉ cần quan tâm tới thuộc tính và phương thức của nó
- Vật thể là dạng dữ liệu có những thuộc tính thành phần
- Vật thể ngoài tự nhiên không chứa hướng dẫn để sử dụng nó. Vật thể trong máy tính có hướng dẫn sử dụng nó
-
Việc thực thi:
- Compile time là lúc chuyển từ ngôn ngữ lập trình mà người hiểu sang ngôn ngữ máy chỉ có máy mới hiểu. Runtime là lúc máy chạy mã máy
- Compiler của ngôn ngữ này thường được viết bằng ngôn ngữ khác
- Các compiler được tạo ra từ các compiler
- Lỗi runtime là lỗi logic, khi chạy mới thấy. Lỗi compile time là lỗi cú pháp, khi biên dịch là thấy ngay
- Code giống như các nốt nhạc, động cơ giống như nhạc công, còn môi trường thực thi giống như nhạc cụ
- Runtime là lúc chạy mã máy, runtime environment là môi trường thực thi. Nhưng nhiều lúc runtime environment được gọi tắt là runtime
- Ngôn ngữ và động cơ thường trùng tên
- Thường mọi người dùng compile time đồng nghĩa với devtime