Nó cũng có thể thực hiện các hành động như khởi động,dừng xe, hoặc chuyển số.Mỗi đối tượng có trạng thái riêng dữ liệu và hành vi riêng phương thức.Điều này giúp tạo ra tính cá nhân và đ
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
TIỂU LUẬN NGUYÊN LÝ NGÔN NGỮ LẬP TRÌNH Tên tiểu luận:
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Giảng viên hướng dẫn:
Họ và tên: 1 Trần Văn Thành
2 Nguyễn Thế Mạnh
3 Lê Thanh Của Lớp: CNTT 18.2
Hà Nội - 2023
Trang 2MỤC LỤC
1 Liệt kê các ngôn ngữ lập trình hướng đối tượng 3
2 Tư duy lập trình theo hướng đối tượng 4
2.1 Đối tượng (Object): 4
2.2 Lớp (Class): 4
2.3 Kế thừa (Inheritance): 5
2.4 Đóng gói (Encapsulation): 6
2.5 Đa hình (Polymorphism): 6
2.6 Trừu tượng (Abstraction): 7
3 Các đặc trưng của lập trình hướng đối tượng 8
3.1 Lớp (Class): 8
3.2 Đối tượng (Object): 9
3.3 Kế thừa (Inheritance): 10
3.4 Đa hình (Polymorphism): 10
3.5 Trừu tượng (Abstraction): 11
3.6 Tính đóng gói (Encapsulation): 12
3.7 Giao diện (Interface): 13
3.8 Đóng gói dữ liệu (Data Encapsulation): 14
3.9 Tính trạng thái (State): 14
3.10 Tính chất (Behavior): 15
4 Ví dụ cụ thể bằng chương trình (code) mô tả cho từng đặc trưng của lập trình hướng đối tượng 16
Trang 31 Liệt kê các ngôn ngữ lập trình hướng đối tượng
- Java:
Đặc điểm: Java là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ và
đa năng Nó chạy trên máy ảo Java (JVM), cho phép khả năng di động và đa nền tảng
Ứng dụng phổ biến: Phát triển ứng dụng di động (Android), ứng dụng web, ứng dụng máy tính, và hệ thống phân tán
- Python:
Đặc điểm: Python là một ngôn ngữ lập trình dễ đọc và dễ học Nó hỗ trợ lập trình hướng đối tượng và có nhiều thư viện phong phú
Ứng dụng phổ biến: Phân tích dữ liệu, trí tuệ nhân tạo, phát triển web, tự động hóa công việc
- C++:
Đặc điểm: C++ là một ngôn ngữ lập trình mở rộng từ C, hỗ trợ lập trình hướng đối tượng và lập trình hệ thống
Ứng dụng phổ biến: Phát triển ứng dụng máy tính, trò chơi video, hệ thống nhúng, phần mềm hiệu suất cao
- C#:
Đặc điểm: C# là một ngôn ngữ lập trình của Microsoft, phát triển đặc biệt cho nền tảng Windows Nó kết hợp lập trình hướng đối tượng và sự tiện ích
Ứng dụng phổ biến: Phát triển ứng dụng Windows, ứng dụng trò chơi, và ứng dụng di động (sử dụng Xamarin)
- Ruby:
Đặc điểm: Ruby là một ngôn ngữ linh hoạt với cú pháp đọc gần với tiếng Anh Nó hỗ trợ lập trình hướng đối tượng và phát triển nhanh chóng
Ứng dụng phổ biến: Phát triển ứng dụng web (sử dụng Ruby on Rails),
tự động hóa nhiệm vụ
- PHP:
Đặc điểm: PHP là một ngôn ngữ lập trình được thiết kế cho phát triển web Nó hỗ trợ lập trình hướng đối tượng từ phiên bản 5 trở đi
Trang 4Ứng dụng phổ biến: Phát triển trang web động, hệ thống quản lý nội dung (CMS) như WordPress
- Swift:
Đặc điểm: Swift là ngôn ngữ lập trình do Apple phát triển, tập trung vào việc xây dựng ứng dụng iOS, macOS và watchOS
Ứng dụng phổ biến: Phát triển ứng dụng di động và ứng dụng máy tính cho hệ điều hành Apple
- Kotlin:
Đặc điểm: Kotlin là ngôn ngữ lập trình hướng đối tượng và hàm, được Google hỗ trợ cho phát triển ứng dụng Android và là lựa chọn thay thế cho Java trên nền tảng JVM
Ứng dụng phổ biến: Phát triển ứng dụng Android, phát triển ứng dụng máy tính
2 Tư duy lập trình theo hướng đối tượng
Tư duy lập trình theo hướng đối tượng (OOP) là một phương pháp lập trình mà bạn tập trung vào việc xây dựng và quản lý các đối tượng Dưới đây là một số khía cạnh quan trọng của tư duy lập trình theo hướng đối tượng
2.1 Đối tượng (Object):
Là một khái niệm cơ bản trong lập trình hướng đối tượng (OOP) Đối tượng là một thực thể cụ thể của một lớp (class) Nó chứa dữ liệu (thuộc tính) và có thể thực hiện các hành động (phương thức) liên quan đến lớp đó
Ví dụ, nếu bạn có một lớp "Xe hơi," thì một đối tượng cụ thể của lớp này có thể
là một chiếc xe hơi nhất định Đối tượng "Xe hơi" có thể có các thuộc tính như màu sắc, số loại, và hãng sản xuất Nó cũng có thể thực hiện các hành động như khởi động, dừng xe, hoặc chuyển số
Mỗi đối tượng có trạng thái riêng (dữ liệu) và hành vi riêng (phương thức) Điều này giúp tạo ra tính cá nhân và đa dạng trong chương trình, vì các đối tượng có thể khác nhau về giá trị thuộc tính và cách thực hiện các hành động
Đối tượng là khái niệm quan trọng trong OOP, và chúng tạo ra mô hình thực tế của thế giới trong mã nguồn
2.2 Lớp (Class):
Trang 5Là một khái niệm quan trọng trong lập trình hướng đối tượng (OOP) Nó là bản thiết kế hoặc khuôn mẫu cho việc tạo ra các đối tượng Lớp định nghĩa cấu trúc và hành vi chung mà các đối tượng thuộc về lớp đó sẽ thừa hưởng
- Một lớp bao gồm:
+ Thuộc tính (Attributes): Là các biến dữ liệu mà các đối tượng của lớp đó có.
Thuộc tính định nghĩa các đặc điểm, trạng thái của đối tượng Ví dụ, trong một lớp
"Sinh viên," các thuộc tính có thể bao gồm tên, tuổi, và điểm số
+ Phương thức (Methods): Là các hành động hoặc phương thức mà các đối
tượng của lớp đó có thể thực hiện Phương thức định nghĩa cách đối tượng có thể tương tác và hoạt động Ví dụ, trong lớp "Sinh viên," có thể có phương thức như "nộp bài tập" hoặc "xem điểm số."
Lớp là một khái niệm trừu tượng, nó chỉ định cấu trúc và hành vi chung của các đối tượng mà sẽ được tạo từ nó Để sử dụng lớp, bạn cần tạo đối tượng từ lớp đó Mỗi đối tượng là một phiên bản cụ thể của lớp và có thể có giá trị thuộc tính riêng và thực hiện các phương thức riêng, như đã định nghĩa trong lớp
2.3 Kế thừa (Inheritance):
Là một trong những khái niệm quan trọng trong lập trình hướng đối tượng (OOP) Nó cho phép lớp con (subclass) kế thừa các thuộc tính và phương thức từ lớp cha (superclass) đã tồn tại Khái niệm này có một số điểm quan trọng:
Lớp cha (Superclass) và lớp con (Subclass): Lớp cha là lớp mà bạn muốn kế thừa từ, và lớp con là lớp mà bạn tạo ra để kế thừa từ lớp cha Lớp con được xây dựng trên cơ sở của lớp cha
Kế thừa thuộc tính và phương thức: Khi bạn kế thừa từ lớp cha, lớp con tự động
kế thừa các thuộc tính và phương thức của lớp cha Điều này giúp tái sử dụng mã nguồn và xây dựng mối quan hệ "là-một" giữa các lớp Ví dụ, nếu bạn có lớp cha
"Động vật" với thuộc tính "tên" và phương thức "di chuyển," bạn có thể tạo lớp con
"Chó" kế thừa từ lớp cha và có thể sử dụng thuộc tính "tên" và phương thức "di chuyển" mà không cần viết lại
Mở rộng và thay đổi: Lớp con có thể mở rộng hoặc thay đổi thuộc tính và phương thức được kế thừa từ lớp cha Điều này cho phép bạn thích nghi lớp con cho nhu cầu cụ thể của nó mà không ảnh hưởng đến lớp cha Ví dụ, trong lớp con "Chó," bạn có thể thêm thuộc tính "màu lông" và phương thức "sủa."
Trang 6Kế thừa giúp tạo sự tái sử dụng mã nguồn, giảm sự lặp lại, và tạo mối quan hệ giữa các lớp trong cấu trúc của ứng dụng Nó là một công cụ quan trọng để xây dựng phân cấp và hiện thực hóa các khái niệm trong OOP
2.4 Đóng gói (Encapsulation):
Là một trong các nguyên tắc quan trọng của lập trình hướng đối tượng (OOP)
Nó đề cập đến việc bao gói dữ liệu (thuộc tính) và các phương thức (hành vi) liên quan vào một đối tượng và che dấu chúng khỏi sự truy cập trái phép từ bên ngoài đối tượng
- Một số điểm quan trọng về đóng gói:
+ Tính riêng tư (Privacy): Đóng gói cho phép bạn xác định mức độ riêng tư
của dữ liệu và phương thức trong một lớp Bạn có thể quyết định xem liệu thuộc tính hoặc phương thức nên được truy cập từ bên ngoài lớp hay không Điều này giúp ngăn chặn việc truy cập trái phép và thay đổi dữ liệu quan trọng
+ Kích hoạt (Encapsulation): Bạn có thể sử dụng phương thức để kiểm soát
cách dữ liệu được đọc hoặc ghi Thay vì trực tiếp truy cập thuộc tính, bạn sẽ sử dụng các phương thức công khai (public methods) để tương tác với dữ liệu Điều này cho phép bạn thực hiện kiểm tra và xử lý trước khi dữ liệu được truy cập hoặc thay đổi
+ Tạo giao diện (Interface): Đóng gói giúp bạn tạo ra giao diện công khai cho
các đối tượng, mà người khác có thể sử dụng mà không cần biết cách nội bộ của đối tượng hoạt động Điều này tạo sự rõ ràng và đơn giản hóa việc sử dụng các đối tượng
+ Bảo vệ tính toàn vẹn (Integrity): Bằng cách che giấu và kiểm soát truy cập
đến dữ liệu, đóng gói giúp đảm bảo tính toàn vẹn của dữ liệu Không ai có thể truy cập và thay đổi dữ liệu một cách ngẫu nhiên, điều này giúp ngăn chặn lỗi và làm cho ứng dụng ổn định hơn
Đóng gói giúp tạo tính rõ ràng, an toàn và dễ bảo trì trong lập trình hướng đối tượng Nó là một trong những nguyên tắc quan trọng để tạo mã nguồn có cấu trúc và
dễ quản lý
2.5 Đa hình (Polymorphism):
Là một khái niệm quan trọng trong lập trình hướng đối tượng (OOP) và nó cho phép các đối tượng cùng lớp xử lý các phương thức cùng tên một cách khác nhau, tùy theo kiểu của đối tượng Điều này mang lại tính linh hoạt trong việc xử lý đối tượng
Trang 7và hỗ trợ việc tạo mã nguồn chung có khả năng hoạt động với nhiều loại đối tượng khác nhau
Các điểm quan trọng về đa hình bao gồm:
Phương thức cùng tên: Đa hình cho phép nhiều lớp có thể có phương thức cùng
tên, nhưng cách mà mỗi lớp thực hiện phương thức đó có thể khác nhau
Gọi phương thức dựa trên kiểu đối tượng: Đa hình cho phép bạn gọi một
phương thức trên một đối tượng mà không cần biết cụ thể kiểu của đối tượng Điều này giúp tạo mã nguồn linh hoạt và tái sử dụng
Kế thừa và đa hình: Đa hình thường kết hợp với kế thừa Các lớp con có thể
thay đổi hoặc mở rộng phương thức được kế thừa từ lớp cha, giúp chúng thích nghi với nhiệm vụ cụ thể của chúng
Giao diện (Interfaces) và đa hình: Đa hình cũng thường xuất hiện trong việc sử
dụng giao diện, nơi các lớp khác nhau có thể triển khai giao diện theo cách riêng, nhưng có thể gọi qua cùng một giao diện để tương tác với các đối tượng
Ví dụ, nếu bạn có một lớp "Hình" với phương thức "tính diện tích," bạn có thể
có nhiều lớp con như "Hình tròn" và "Hình vuông," mỗi lớp con có thể triển khai phương thức "tính diện tích" theo cách riêng Bất kỳ đối tượng thuộc các lớp con này đều có thể được gọi để tính diện tích mà không cần quan tâm đối tượng thuộc lớp nào
Đa hình giúp tạo sự linh hoạt trong mã nguồn và cho phép bạn tạo mã nguồn chung có khả năng hoạt động với nhiều loại đối tượng khác nhau, làm tăng tính tái sử dụng và hiệu suất của ứng dụng
2.6 Trừu tượng (Abstraction):
Là một nguyên tắc quan trọng trong lập trình hướng đối tượng (OOP) mà cho phép bạn ẩn đi chi tiết cụ thể của một đối tượng và tập trung vào các khía cạnh quan trọng và cần thiết Trừu tượng giúp tạo ra một lược đồ tập trung vào các đặc điểm quan trọng của đối tượng mà bạn quan tâm, trong khi ẩn đi những chi tiết không quan trọng hoặc phức tạp
Các điểm quan trọng về trừu tượng bao gồm:
Ẩn chi tiết: Trừu tượng cho phép bạn ẩn đi chi tiết cụ thể của một đối tượng
trong lớp và chỉ tiết lộ những phần quan trọng Điều này làm cho việc sử dụng đối tượng trở nên dễ dàng và giảm sự phức tạp
Trang 8Tạo lược đồ tập trung: Trừu tượng giúp bạn tạo một lược đồ tập trung vào các
phương thức và thuộc tính quan trọng mà người sử dụng đối tượng cần biết Điều này làm cho việc sử dụng đối tượng dễ dàng và giúp người lập trình tập trung vào mục tiêu cụ thể
Tạo mã nguồn tái sử dụng: Trừu tượng giúp tạo mã nguồn có khả năng tái sử
dụng Bằng cách tạo các lớp trừu tượng và giao diện, bạn có thể sử dụng chúng để tạo các đối tượng cụ thể theo nhu cầu
Giảm sự phức tạp: Trừu tượng giúp giảm sự phức tạp của mã nguồn bằng cách
ẩn đi chi tiết không quan trọng Điều này làm cho mã nguồn dễ đọc, dễ bảo trì và giảm nguy cơ gây lỗi
Ví dụ, trong một lớp "Xe hơi," bạn có thể trừu tượng hóa các phương thức như
"khởi động" và "dừng xe," trong khi ẩn đi các chi tiết cụ thể về cách động cơ hoạt động Điều này giúp người sử dụng đối tượng "Xe hơi" tập trung vào các hoạt động quan trọng mà họ cần quan tâm, mà không cần biết cách cụ thể từng chi tiết của động cơ
Trừu tượng là một nguyên tắc quan trọng trong việc thiết kế mã nguồn có cấu trúc và hiệu quả
3 Các đặc trưng của lập trình hướng đối tượng
3.1 Lớp (Class):
Là một mẫu hoặc bản thiết kế cho việc tạo ra các đối tượng Nó định nghĩa cấu trúc và hành vi chung cho các đối tượng thuộc cùng một loại hoặc lớp Dưới đây là một số điểm quan trọng về lớp:
Lớp là một khái niệm trừu tượng: Lớp không phải là một thực thể cụ thể mà chỉ
định nghĩa cách tạo ra đối tượng Nó là một mẫu cho các đối tượng cụ thể
Lớp bao gồm thuộc tính và phương thức: Lớp chứa các thuộc tính (các biến để
lưu trữ dữ liệu) và phương thức (các hàm để xử lý dữ liệu và thực hiện các hành động)
Tạo đối tượng: Khi bạn định nghĩa một lớp, bạn có thể sử dụng nó để tạo ra các
đối tượng cụ thể (instances) Mỗi đối tượng có thể có giá trị khác nhau cho các thuộc tính của lớp
Kế thừa: Lớp có thể kế thừa các thuộc tính và phương thức từ các lớp khác.
Điều này giúp tái sử dụng mã nguồn và xây dựng phân cấp
Trang 9Làm cho mã nguồn có cấu trúc: Sử dụng lớp giúp bạn tạo ra mã nguồn có cấu
trúc và tổ chức Nó giúp tách biệt các thành phần khác nhau của ứng dụng
Mô phỏng thế giới thực: Lớp thường được thiết kế để mô phỏng các thực thể
hoặc khái niệm từ thế giới thực Ví dụ, lớp "Xe hơi" có thể có thuộc tính như "màu sắc" và phương thức như "khởi động."
Lớp là một trong những nguyên tắc quan trọng nhất trong OOP và giúp bạn tổ chức mã nguồn một cách hiệu quả và tái sử dụng mã nguồn một cách dễ dàng
3.2 Đối tượng (Object):
Đối tượng (Object) trong lập trình hướng đối tượng (OOP) là phiên bản cụ thể được tạo ra từ một lớp (class) Đối tượng bao gồm dữ liệu (thuộc tính) và phương thức (hành vi) để xử lý dữ liệu đó Dưới đây là một số điểm quan trọng về đối tượng:
Cụ thể của lớp: Đối tượng là một thể hiện cụ thể của một lớp Mỗi đối tượng có
thể có giá trị khác nhau cho các thuộc tính của lớp
Dữ liệu (Thuộc tính): Đối tượng có các thuộc tính để lưu trữ dữ liệu Đây có thể
là các biến, thông tin, hoặc trạng thái của đối tượng Ví dụ, một đối tượng "Sinh viên"
có thể có thuộc tính như tên, tuổi, và điểm số
Phương thức (Hành vi): Đối tượng có các phương thức để thực hiện các hành
động và xử lý dữ liệu Ví dụ, một đối tượng "Sinh viên" có thể có phương thức như
"nộp bài tập" hoặc "xem điểm số."
Tính trạng thái (State): Đối tượng biểu diễn trạng thái của nó thông qua các
thuộc tính Trạng thái này có thể thay đổi theo thời gian và dựa vào các tương tác và hành động của đối tượng
Hành vi (Behavior): Đối tượng có hành vi được xác định bởi các phương thức
của nó Các phương thức này mô tả cách đối tượng hoạt động và tương tác với môi trường
Thể hiện duy nhất: Mỗi đối tượng là một thể hiện duy nhất của lớp, với trạng
thái và dữ liệu riêng biệt Điều này cho phép bạn tạo nhiều đối tượng từ cùng một lớp
Tương tác: Đối tượng có khả năng tương tác với các đối tượng khác thông qua
gọi phương thức hoặc truy cập thuộc tính của chúng
Thể hiện quan trọng trong OOP: Đối tượng biểu diễn trạng thái và hành vi của
thực thể trong thế giới thực Chúng giúp tạo sự trừu tượng và mô hình hóa các khái niệm và quan hệ trong ứng dụng
Trang 10Tạo sự đồng nhất: OOP giúp tạo sự đồng nhất trong việc tương tác với các đối
tượng, vì các đối tượng thường tuân theo cùng một giao diện hoặc phong cách lập trình
3.3 Kế thừa (Inheritance):
Là một trong các nguyên tắc quan trọng trong lập trình hướng đối tượng (OOP) Nó cho phép bạn tạo lớp con (subclass) dựa trên lớp cha (superclass) đã tồn tại Dưới đây là các điểm quan trọng về kế thừa:
Lớp cha và lớp con: Lớp cha (hoặc lớp cơ sở) là lớp đã tồn tại, còn lớp con
(hoặc lớp dẫn xuất) là lớp mới mà bạn tạo dựa trên lớp cha
Tính chất "là-một": Kế thừa tạo mối quan hệ "là-một" giữa lớp cha và lớp con.
Lớp con là một phiên bản đặc biệt của lớp cha và có thể thừa hưởng các thuộc tính và phương thức của lớp cha
Tái sử dụng mã nguồn: Kế thừa cho phép bạn tái sử dụng mã nguồn của lớp
cha trong lớp con Điều này giúp giảm sự lặp lại và làm cho mã nguồn dễ bảo trì hơn
Mở rộng và thay đổi: Lớp con có thể mở rộng hoặc thay đổi hành vi và thuộc
tính được kế thừa từ lớp cha Điều này cho phép bạn tùy chỉnh lớp con để phù hợp với nhu cầu cụ thể của ứng dụng
Phân cấp đa cấp (Hierarchical Inheritance): Bạn có thể tạo nhiều lớp con dựa
trên cùng một lớp cha, tạo thành một cấu trúc phân cấp Điều này giúp tổ chức mã nguồn một cách có hệ thống
Phân cấp đa hình (Polymorphism): Kế thừa là một trong các nguyên tắc cơ bản
cho đa hình Điều này cho phép các đối tượng thuộc lớp con có thể được sử dụng thay thế cho đối tượng thuộc lớp cha, tùy thuộc vào ngữ cảnh
Cẩn thận với quyền truy cập: Khi kế thừa, bạn cần quản lý quyền truy cập cho
các thuộc tính và phương thức để đảm bảo tính bao đóng gói và bảo mật dữ liệu
Kế thừa là một công cụ mạnh mẽ trong OOP, giúp tạo sự cấu trúc và sự tổ chức
trong mã nguồn và giúp tiết kiệm thời gian và công sức khi phát triển ứng dụng
3.4 Đa hình (Polymorphism):
Là một khái niệm quan trọng trong lập trình hướng đối tượng (OOP) Nó cho phép các đối tượng thuộc các lớp khác nhau có thể hiểu và xử lý các tương tác theo cách riêng biệt Dưới đây là một số điểm quan trọng về đa hình: