đặt vấn đề đó trong mối liên hệ với các vấn đề khác. - Để tạo được sự hứng thú người học nên bắt đầu từ dễ đến khó, từ đơn giản đến phức tạp, từ xa đến gần, từ cụ thể đến khái quát, trừu tượng. - Người học phải rèn luyện kỹ năng đọc và nghiên cứu tài liệu. Ngoài ra cần tìm hiểu địa chỉ các cuốn tài liệu khác liên quan để tham khảo.
THÔNG TIN LIÊN HỆ Nguyễn Xuân Bách; ĐT: 0987735788; Email: NguyenXuanBach@daihochalong.vn Chủ biên Nguyễn Xuân Bách 6 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG BÀI 1 ĐỐI TƯỢNG NỘI DUNG CHÍNH Lịch sử phát triển các phương pháp lập trình Khái niệm, thuật ngữ trong lập trình hướng đối tượng Các tính chất nền tảng của lập trình hướng đối tượng Mô hình hóa một vấn đề dưới dạng đối tượng 1. LỊCH SỬ PHÁT TRIỂN CÁC PHƯƠNG PHÁP LẬP TRÌNH 1. Lập trình tuyến tính Lập trình tuyến tính là một phương pháp, kỹ thuật lập trình truyền thống. Chương trình sẽ chỉ có một hàm và được thực hiện tuần tự từ đầu tới cuối.
- Ưu điểm : o Chương trình đơn giản, dễ hiểu - Nhược điểm: o Mọi dữ liệu trong chương trình đều là biến toàn cục do đó dễ dàng bị thay đổi bởi một phần nào đó trong chương trình. o Khó khăn trong việc gỡ lỗi chương trình. o Để thực hiện lại một đoạn lệnh thì bắt buộc phải sao chép (copy) đoạn lệnh đó đến vị trí trong chương trình mà chúng ta muốn thực hiện. Lập trình hướng cấu trúc Lập trình hướng cấu trúc là một kỹ thuật lập trình truyền thống, trong đó chương trình được chia thành các hàm (chương trình con).
Các đặc điểm chính của phương pháp lập trình hướng cấu trúc : 7 TRƯỜNG ĐẠI HỌC HẠ LONG - Tập chung vào công việc cần thực hiện (thuật toán) - Chương trình lớn được chia thành các chương trình con, mỗi chương trình con có thể gọi tới một hoặc nhiều lần theo thứ tự bất kỳ. - Phần lớn các hàm sử dụng dữ liệu chung. - Dữ liệu trong hệ thống được chuyển từ hàm này sang hàm khác. - Hàm biến đổi dữ liệu từ dạng này sang dạng khác.
- Sử dụng cách tiếp cận từ trên xuống (top-down) trong thiết kế chương trình 1. Lập trình hướng đối tượng Lập trình hướng đối tượng cho phép chúng ta phân tích các bài toán thành các thực thể được gọi là các đối tượng và xây dựng các dữ liệu, các hàm xung quanh các đối tượng này. Dữ liệu được liên kết với các hàm thành các vùng riêng mà chỉ có các hàm đó tác động lên, các hàm bên ngoài không được truy cập vào. Các đối tượng có thể tác động và trao đổi thông tin với nhau thông qua các thông điệp.
Các đặc điểm của phương pháp lập trình hướng đối tượng : - Tập trung vào dữ liệu thay cho các hàm - Chương trình được chia thành các đối tượng - Cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng gắn với cấu trúc dữ liệu đó. - Dữ liệu được đóng gói lại, được che giấu và không cho phép các hàm ngoại lai truy nhập tự do. - Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm. - Có thể dễ dàng bổ sung dữ liệu và các hàm mới vào đối tượng nào đó khi cần thiết.
- Chương trình được thiết kế theo cách tiếp cận từ dưới lên (bottom - up). 8 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1. PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1. Khái niệm Lập trình hướng đối tượng là cách lập trình mà lập trình viên không chỉ định nghĩa cấu trúc kiểu dữ liệu mà còn khai báo ra các phương thức tính toán để áp dụng cho cấu trúc dữ liệu đó.
Bằng cách này, cấu trúc kiểu dữ liệu đó trở thành một đối tượng bao gồm dữ liệu và các phương thức thực thi. Nói cách khác, lập trình viên tạo ra quan hệ giữa những đối tượng với nhau và có thể thừa kế lại các đối tượng khác. Khi viết chương trình theo phương pháp hướng đối tượng ta phải trả lời các câu hỏi: Chương trình liên quan tới những lớp đối tượng (khái niệm của mục 1.2/b) nào? Mỗi đối tượng cần có những dữ liệu và thao tác nào? Các đối tượng quan hệ với nhau như thế nào trong chương trình? Từ đó ta thiết kế các lớp đối tượng và tổ chức trao đổi thông tin giữa các đối tượng, ra lệnh để đối tượng thực hiện các nhiệm vụ thích hợp.1 : Với đối tượng chuỗi kí tự, chúng ta có các thông tin sau : - Dữ liệu: mảng các kí tự. - Thao tác: tính chiều dài, nối hai chuỗi.
Với đối tượng stack : - Dữ liệu: số nguyên hay kí tự , hay một kiểu dữ liệu đã định nghĩa. - Thao tác: khởi tạo stack, đưa một phần tử vào đỉnh, loại bỏ phần tử ở đỉnh… 1. Các thuật ngữ cơ bản a. Đối tượng (Object) Đối tượng là sự kết hợp giữa dữ liệu và thủ tục thao tác trên dữ liệu đó.
Đối tượng = Dữ liệu + Phương thức 9 TRƯỜNG ĐẠI HỌC HẠ LONG Trong thế giới hiện nay, đối tượng là những thực thể tồn tại có trạng thái và hành vi.2: Quyển vở, cái bút, sinh viên, học sinh là những đối tượng Đối tượng trong lập trình hướng đối tượng bao gồm 2 thành phần chính: Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng Phương thức (Method): là những hành vi mà đối tượng có thể thực hiện Để dễ hình dung, ta có một ví dụ thực tế về đối tượng là smartphone. Đối tượng này sẽ có: Thuộc tính: màu sắc, bộ nhớ, hệ điều hành… Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm… Tiếp cận hướng đối tượng, đây là kĩ thuật cho phép biểu diễn tự nhiên các đối tượng thực tế với đối tượng bên trong chương trình. Lớp đối tượng (Class) Những thuộc tính và những hành động chung của một thực thể được nhóm lại để tạo nên một đơn vị duy nhất gọi là một lớp (class). Một lớp là một mô hình khái niệm về một thực thể.
Nó mang tính cách tổng quát chứ không mang tính cách đặc thù. Khi định nghĩa một lớp, chúng ta muốn phát biểu rằng một lớp sẽ phải có một tập hợp các thuộc tính và các hành động riêng. Tiếp nối ví dụ ở phần đối tượng (object) phía trên, ta có lớp (class) smartphone gồm 2 thành phần: Thuộc tính: màu sắc, bộ nhớ, hệ điều hành… Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm… Các đối tượng của lớp này có thể là: iPhone, Samsung, Oppo, Huawei… 1. Ưu điểm của lập trình hướng đối tượng - Tính đóng gói làm giới hạn phạm vi sử dụng của các biến, nhờ đó việc quản lý giá trị của biến dễ dàng hơn, việc sử dụng mã an toàn hơn.
- Phương pháp này làm cho tốc độ phát triển các chương trình mới nhanh hơn vì mã được tái sử dụng và cải tiến dễ dàng. 10 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG - Phương pháp này tiến hành tiến trình phân tích, thiết kế chương trình thông qua việc xây dựng các đối tượng có sự tương hợp với các đối tuợng thực tế. Điều này làm cho việc sửa đổi dễ dàng hơn khi cần thay đổi chương trình. CÁC TÍNH CHẤT CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG a.
Tính đóng gói (Encapsulation) Tính đóng gói cho phép che giấu thông tin và những tính chất xử lý bên trong của đối tượng. Các đối tượng khác không thể tác động trực tiếp đến dữ liệu bên trong và làm thay đổi trạng thái của đối tượng mà bắt buộc phải thông qua các phương thức công khai do đối tượng đó cung cấp. Tính chất này giúp tăng tính bảo mật cho đối tượng và tránh tình trạng dữ liệu bị hư hỏng ngoài ý muốn. Tính kế thừa (Inheritance) Đây là tính chất được sử dụng khá nhiều.
Tính kế thừa cho phép xây dựng một lớp mới (lớp Con), kế thừa và tái sử dụng các thuộc tính, phương thức dựa trên lớp cũ (lớp Cha) đã có trước đó. Các lớp Con kế thừa toàn bộ thành phần của lớp Cha và không cần phải định nghĩa lại. Lớp Con có thể mở rộng các thành phần kế thừa hoặc bổ sung những thành phần mới.3: Lớp Cha là smartphone, có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành… Các lớp Con là iPhone, Samsung, Oppo cũng có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành… c. Tính đa hình (Polymorphism) Tính đa hình trong lập trình lập trình hướng đối tượng cho phép các đối tượng khác nhau thực thi chức năng giống nhau theo những cách khác nhau.4: Ở lớp smartphone, mỗi một dòng máy đều kế thừa các thành phần của lớp cha nhưng iPhone chạy trên hệ điều hành iOS, còn Samsung lại chạy trên hệ điều hành Android.
11 TRƯỜNG ĐẠI HỌC HẠ LONG d. Tính trừu tượng (Abstraction) Tính trừu tượng là một tiến trình ẩn các chi tiết trình triển khai và chỉ hiển thị tính năng tới người dùng. Tính trừu tượng cho phép bạn loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cần thiết của đối tượng trong lập trình.5: Để gửi tin nhắn, chúng ta sử dụng điện thoại, soạn thảo nội dung rồi nhấn gửi đi. Còn quy trình xử lý tin nhắn gửi như thế nào thì ta chưa đề cập đến … Như vậy, tính trừu tượng là che giấu thông tin thực hiện từ người dùng, họ chỉ biết tính năng được cung cấp: chỉ biết thông tin đối tượng thay vì cách nó sử dụng như thế nào.
CÂU HỎI VÀ BÀI TẬP Câu 1: Trình bày lịch sử phát triển của các phương pháp lập trình. Câu 2: Nêu các đặc điểm của lập trình hướng đối tượng, so sánh sự khác nhau với các phương pháp lập trình khác. TÀI LIỆU THAM KHẢO BÀI 1 [1] Programming language evolution, 2017, https://herbertograca.com/ 2017/07/10/programming-language-evolution/ 12 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CĂN BẢN VỀ NGÔN NGỮ LẬP TRÌNH C# BÀI 2 NỘI DUNG CHÍNH Giới thiệu các ngôn ngữ lập trình hướng đối tượng Khái niệm, thuật ngữ, cú pháp câu lệnh trong ngôn ngữ lập trình C# 2. CÁC NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG HIỆN NAY 2.
Java Java là một trong những ngôn ngữ lập trình hướng đối tượng. Nó được sử dụng trong phát triển phần mềm, trang web, trò chơi hay ứng dụng trên các thiết bị di động. Java được khởi đầu bởi James Gosling và đồng nghiệp ở công ty Sun MicroSystem năm 1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và có tên là Oak.
Java được phát hành năm 1994, đến năm 2010 được công ty Oracle mua lại từ công ty Sun MicroSystem.