- Khóa học Offline tại Hà Nội
- Khóa học Java Online tại Udemy
- Giới thiệu Java
- Java là gì?
- Lịch sử Java
- Tổng quan
- Cài đặt Java
- Cách thiết lập Path
- Chương trình Hello World
- Phân tích chương trình Hello World
- Cú pháp Java cơ bản
- JDK, JRE và JVM
- Biến trong Java
- Kiểu dữ liệu
- Toán tử
- Các kiểu vòng lặp
- Lệnh if, switch
- Đối tượng Number
- Đối tượng Character
- Khái niệm OOP
- Lớp và Đối tượng
- Phương thức
- Nạp chồng phương thức (Overloading)
- Constructor
- Từ khóa static
- Từ khóa this
- Tính kế thừa (IS-A)
- Quan hệ (HAS-A)
- Ghi đè phương thức (Overriding)
- Kiểu trả về Covariant
- Từ khóa super
- Từ khóa final
- Tính đa hình
- Dynamic Binding
- Toán tử instanceof
- Tính trừu tượng
- Lớp abstract
- Interface
- Lớp abstract vs Interface
- Java Package
- Các kiểu Modifier
- Non-Access Modifier
- Access Modifier
- Tính bao đóng
- Lớp Object
- Nhân bản đối tượng
- Mảng (Array)
- Lớp Wrapper
- Gọi bởi giá trị
- Từ khóa strictfp
- Date & Time
- Regular Expression
- File và I/O
- ByteArrayInputStream
- DataInputStream
- ByteArrayOutputStream
- DataOutputStream
- Lớp File
- Lớp FileReader
- Lớp FileWriter
- Đối tượng String
- Immutable String
- So sánh chuỗi
- Nối chuỗi
- Chuỗi con
- Phương thức của lớp String
- Lớp StringBuffer
- Lớp StringBuilder
- String vs StringBuffer
- StringBuilder vs StringBuffer
- Phương thức toString()
- Lớp StringTokenizer
- Exception là gì
- Khối try-catch
- Khối finally
- Từ khóa throw
- Từ khóa throws
- ExceptionHandling vs MethodOverriding
- Custom Exception
- Cấu trúc dữ liệu
- Enumeration Interface
- Lớp BitSet
- Lớp Vector
- Lớp Stack
- Lớp Dictionary
- Lớp Properties
- Java Collection
- Collection Interface
- List Interface
- Set Interface
- SortedSet Interface
- MapEntry Interface
- Lớp ArrayList
Khái niệm hướng đối tượng (OOP) trong Java
[Khái niệm hướng đối tượng OOP trong Java]Chương này, chúng ta sẽ tìm hiểu các khái niệm cơ bản về Hướng đối tượng (OOP). Lập trình hướng đối tượng bao gồm nhiều khái niệm như tính kế thừa, gắn kết dữ liệu (Data Binding), tính đa hình, …
Simula được xem như là ngôn ngữ lập trình hướng đối tượng đầu tiên. Là một hệ lập trình mà ở đó mọi thứ được biểu diễn dưới dạng một đối tượng, và được biết đến như là ngôn ngữ hướng đối tượng thực sự. Tuy nhiên, Smalltalk mới được xem như là ngôn ngữ lập trình hướng đối tượng thực sự đầu tiên.
Lập trình hướng đối tượng
Object (đối tượng) nghĩa là một thực thể trong thế giới thực, chẳng hạn như bàn, quả bóng, con bò, … Lập trình hướng đối tượng là một phương pháp để thiết kế một chương trình bởi sử dụng các lớp và các đối tượng. Nó làm đơn giản hóa việc duy trì và phát triển phần mềm bằng việc cung cấp một số khái niệm:
Đối tượng: Một thực thể có trạng thái và hành vi. Ví dụ như xe đạp, bàn, ghế, … Nó có thể mang tính vật lý hoặc logic.
Lớp: Một tập hợp các đối tượng. Nó là một thực thể logic.
Tính kế thừa: Khi một đối tượng đạt được các thuộc tính và các hành vi của đối tượng cha, thì đó là tính kế thừa. Điều này làm tăng tính tái sử dụng cho code. Nó được sử dụng để đạt được tính đa hình tại runtime.
Tính đa hình: Khi một tác vụ được thực hiện theo nhiều cách khác nhau được gọi là tính đa hình. Ví dụ: như vẽ hình chữ nhật hoặc hình tam giác, … Trong Java, chúng ta sử dụng nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding) để có tính đa hình. Một ví dụ khác: con mèo kêu meooo, còn chú chó thì sủa goooo.
Tính trừu tượng: Đó là ẩn các chi tiết nội tại và hiển thị tính năng. Ví dụ, với cuộc gọi điện thoại, chúng ta không biết tiến trình xử lý nội tại là như thế nào. Trong Java, chúng là sử dụng lớp abstract và abstract interface để có tính trừu tượng.
Tính bao đóng: Đó là gắn kết code và dữ liệu cùng với nhau vào trong một đơn vị unit đơn. Ví dụ: có thể bạn đã biết đến viên thuốc con nhộng (hay đơn giản hơn là gói bột giặt), các viên thuốc (hạt bột giặt) khác nhau được đóng gói.
Một lớp Java là một ví dụ về tính bao đóng. Java Bean là lớp bao đóng thực sự, vì tất cả thành viên dữ liệu là private.
Lợi thế của OOP khi so với ngôn ngữ lập trình hướng thủ tục (procedure-oriented)
OOP giúp việc thiết kế, phát triển và bảo trì dễ dàng hơn trong khi với lập trình hướng thủ tục thì việc quản lý code là khá khó khăn nếu lượng code tăng lên. Điều này làm tăng hiệu quả có quá trình phát triển phần mềm.
OOP cung cấp Data Hiding (ẩn dữ liệu) trong khi đó trong hướng thủ tục một dữ liệu toàn cục có thể được truy cập từ bất cứ đâu.
OOP cung cấp cho bạn khả năng để mô phỏng các sự kiện trong thế giới thực một cách hiệu quả hơn. Chúng ta có thể cung cấp giải pháp cho các vấn đề trong thế giới thực nếu chúng ta sử dụng Lập trình hướng đối tượng.
Điểm khác nhau giữa OOP và OBP (Object-base programming)
Lập trình dựa trên đối tượng có tất cả đặc điểm của OOP ngoại trừ tính kế thừa. JavaScript và VBScript là các ví dụ về các ngôn ngữ lập trình dựa trên đối tượng.
Bài học Java phổ biến tại vietjack.com: