LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GV: Nguyễn Thanh Tùng Mail: tung.vn Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN NỘI DUNG CHÍNH Giới thiệu lập trình hướng đối tượng Các khái niệm cơ bản của ngôn ngữ C# Lớp và đối tượng Xây dựng ứng dụng trên WinForm Tính thừa kế và tính đa hình Liên hệ giữa các lớp đối tượng Lập trình hướng đối tượng 2 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Bài 1: GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Lập trình hướng thủ tục Lập trình hướng đối tượng So sánh giữa lập trình hướng thủ tục và lập trình hướng đối tượng Lập trình Hướng đối tượng 3 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN I. Lập trình hướng thủ tục 1/ Đặc điểm: Chương trình = Cấu trúc dữ liệu + Giải thuật 2/ Ưu điểm: + Chương trình dể đọc, dể hiểu + Tư duy rõ ràng. 3/ Nhược điểm: + Không phù hợp với việc xây dựng các chương trình lớn + Không hỗ trợ việc tái sử dụng mã nguồn. Lập trình Hướng đối tượng 4 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN II.
Lập trình hướng đối tượng 1/ Đặc điểm: Chương trình = { tập các đối tượng } 2/ Lập trình hướng đối tượng có đầy đủ các tính chất của lập trình cấu trúc và có thêm các tính chất sau: + Tính đóng gói + Tính kế thừa + Tính đa hình 3/ Lập trình hướng đối tượng đã khắc phục những nhược điểm đã có của lập trình cấu trúc. Lập trình Hướng đối tượng 5 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN III. So sánh Lập trình hướng đối tượng Lập trình cấu trúc + Áp dụng cho những bài + Áp dụng cho những bài toán lớn và có nhiều luồng toán nhỏ và có các luồng dữ dữ liệu phức tạp khác nhau. + Dữ liệu bị hạn chế truy + Dữ liệu được truy cập tự cập trực tiếp từ bên ngoài.
do nên mất an toàn dữ liệu. + Tiếp cận bài toán dựa vào + Tiếp cận bài toán dựa vào mô hình “Bottom-Up” mô hình “Top-Down” Lập trình Hướng đối tượng 6 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Bài 2: CÁC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ C# Tạo ứng dụng dạng Console Kiểu dữ liệu, biến và hằng Các phép toán và biểu thức Truyền tham số sang hàm Kiểu struct và kiểu DateTime Kiểu chuỗi và kiểu mảng Lập trình Hướng đối tượng 7 I. Tạo ứng dụng dạng Console 1/ Khởi động phần mềm Microsoft Visual Studio 2010. 2/ Chọn menu File/ New/ Projects -> chọn mục Console Application.
3/ Chương trình chính của ứng dụng: Lập trình hướng đối tượng 8 II. Kiểu dữ liệu, biến và hằng 1/ Kiểu dữ liệu cơ bản: + Kiểu ký tự: char + Kiểu số nguyên: int, long, … + Kiểu số thực: float, double, … + Kiểu luận lý: bool 2/ Biến: khai báo và sử dụng biến giống như C++ Ví dụ: int a;//khai báo biến a 3/ Hằng: khai báo và sử dụng hằng giống C++ Ví dụ: const int MAX=100; Lập trình hướng đối tượng 9 III. Các phép toán và biểu thức Tương tự như C++ 1/ Phép toán số học: +, -, *, /, % 2/ Phép toán quan hệ: >, <, >=, <=, ==, != 3/ Phép toán luận lý: !, &&, || 4/ Phép gán: = Lập trình hướng đối tượng 10 IV. Truyền tham số sang hàm 1/ Viết hàm tương tự C++ 2/ Truyền tham số sang hàm: + Truyền tham trị: + Truyền tham số có sử dụng từ khóa ref + Truyền tham số có sử dụng từ khóa out Lập trình hướng đối tượng 11 V.
Kiểu struct và kiểu DateTime 1/ Kiểu struct: tương tự như C++ Ví dụ: Kiểu PHANSO chứa một phân số và có hàm tăng phân số lên 1 đơn vị. 2/ Kiểu DateTime: được xây dựng từ kiểu struct và dùng lưu trữ dữ liệu dạng ngày và giờ. (tra cứu trong thư viện MSDN) Lập trình hướng đối tượng 12 VI. Kiểu chuỗi và kiểu mảng 1/ Kiểu chuỗi: string + Kiểu String là kiểu được xây dựng từ kiểu class.
(tra cứu thư viện MSDN) + Lưu trữ một dãy ký tự Unicode. 2/ Kiểu mảng: array + Kiểu Array là kiểu được xây dựng từ kiểu class. (tra cứu thư viện MSDN) + Mảng một chiều: + Mảng hai chiều: Lập trình hướng đối tượng 13 VII. Kiểu enum + Kiểu enum là kiểu liệt kê.
+ Kiểu Enum là kiểu được xây dựng từ kiểu class. (tra cứu thư viện MSDN) +Ví dụ: Lập trình hướng đối tượng 14 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Bài 3: LỚP VÀ ĐỐI TƯỢNG Khái niệm đối tượng và lớp đối tượng Xây dựng lớp đối tượng Biểu diễn đối tượng và lớp đối tượng bằng UML Dữ liệu và phương thức static Định nghĩa các phép toán Lập trình Hướng đối tượng 15 I. Khái niệm đối tượng và lớp đối tượng Đối tượng là một thực thể trong chương trình đang thực thi. Đối tượng có hai thành phần chính là: • dữ liệu (thuộc tính-attribute/property) • hành vi (phương thức-method).
Lớp và đối tượng 16 I. Khái niệm đối tượng và lớp đối tượng Ví dụ: Đối tượng số phức (a+i*b) • Dữ liệu: a (phần thực), b (phần ảo) là những số thực. • Hành vi: là các phép toán trên số phức như cộng, trừ, nhân, chia hai số phức và trả về modul của số phức. Lớp và đối tượng 17 I.
Khái niệm đối tượng và lớp đối tượng Trạng thái của đối tượng là tập hợp các giá trị hiện có của các thành phần dữ liệu của đối tượng. Lớp đối tượng là tập hợp các đối tượng có chung các thành phần dữ liệu và các phương thức. Lớp và đối tượng 18 I. Khái niệm đối tượng và lớp đối tượng Tính đóng gói: Không cho phép người sử dụng đối tượng thay đổi trạng thái của đối tượng mà chỉ có những phương thức nội tại của đối tượng mới được phép thay đổi trạng thái của đối tượng.
Các thành phần của đối tượng được che dấu bên trong đối tượng và chỉ có những thành phần mà đối tượng cho phép người sử dụng đối tượng truy cập đến thì mới truy cập được. Lớp và đối tượng 19 I. Khái niệm đối tượng và lớp đối tượng Thuộc tính truy cập: • Thuộc tính truy cập riêng (private): chỉ truy cập được khi ở bên trong lớp đối tượng và không truy cập được khi ở bên ngoài lớp đối tượng. • Thuộc tính truy cập chung (public): truy cập được khi ở bên trong lớp đối tượng và cả khi ở bên ngoài lớp đối tượng.
Lớp và đối tượng 20 II. Xây dựng lớp đối tượng 1) Khai báo lớp đối tượng: class <tên lớp> { <các thành phần của lớp> } Lớp và đối tượng 21 II. Xây dựng lớp đối tượng Ví dụ: lớp số phức Lớp và đối tượng 22 II. Xây dựng lớp đối tượng 2) Tạo đối tượng: sử dụng từ khóa new Ví dụ: tạo đối tượng a thuộc lớp CSoPhuc CSoPhuc a = new CSoPhuc(); 3) Truy cập các thành phần của đối tượng: <tên đối tượng>.<tên thành phần của đối tượng> Ví dụ: a.setSophuc(2,3); Lớp và đối tượng 23 II.
Xây dựng lớp đối tượng 4) Định nghĩa phương thức: giống như định nghĩa hàm Ví dụ: Định nghĩa phương thức cập nhật thành phần dữ liệu của số phức. Lớp và đối tượng 24 II. Xây dựng lớp đối tượng 4) Định nghĩa Property: <thuộc tính truy cập> <kiểu property> <tên property> { get {…} set {…} } Lớp và đối tượng 25 II. Xây dựng lớp đối tượng Ví dụ: Định nghĩa Property cho phần thực của số phức.
Lớp và đối tượng 26 II. Xây dựng lớp đối tượng 5) Đối tượng this: Khi xây dựng một lớp đối tượng thì trong nó tồn tại sẵn một đối tượng và được gọi là đối tượng this. Ví dụ: định nghĩa phương thức cộng hai số phức. Lớp và đối tượng 27 II.
Xây dựng lớp đối tượng 6) Phương thức tạo lập (constructor): Phương thức tạo lập dùng để khởi tạo các giá trị ban đầu cho đối tượng như: • Cấp phát vùng nhớ cho các thành phần dữ liệu, • Khởi gán giá trị ban đầu cho đối tượng, • Thiết lập mối quan hệ giữa đối tượng với các đối tượng khác trong chương trình… Lớp và đối tượng 28 II. Xây dựng lớp đối tượng Cách xây dựng phương thức tạo lập: • Tên của phương thức tạo lập trùng với tên lớp, • Phương thức tạo lập không có Kiểu trả về (kể cả kiểu void), • Phương thức tạo lập có thể có tham số và cũng có thể không có tham số. Ví dụ: định nghĩa phương thức tạo lập cho lớp số phức. Lớp và đối tượng 29 II.
Xây dựng lớp đối tượng Phương thức tạo lập được tự động gọi ngay sau khi đối tượng được tạo ra. Lớp và đối tượng 30 II. Xây dựng lớp đối tượng 7) Phương thức hủy (Destructor): Phương thức hủy dùng “dọn dẹp” đối tượng trước khi đối tượng bị hủy. Phương thức hủy không có Kiểu trả về và cũng không có tham số.
Tên của phương thức hủy trùng với tên lớp mà đặt thêm ký tự ‘~’ phía trước. Trong lớp đối tượng có nhiều nhất một phương thức hủy. Lớp và đối tượng 31 II. Xây dựng lớp đối tượng Ngôn ngữ C# cung cấp cơ chế thu dọn rác tự động (Garbage Collection) Khi gọi phương thức GC.Collect() thì việc thu gom rác được thực hiện.
Lớp và đối tượng 32 III. Biểu diễn đối tượng và lớp đối tượng bằng UML 1) Biểu diễn lớp đối tượng Lớp và đối tượng 33 III. Biểu diễn đối tượng và lớp đối tượng bằng UML 2) Biểu diễn đối tượng Ví dụ : CSoPhuc a = new CSoPhuc(); a.setSophuc(2,3); Lớp và đối tượng 34 IV. Dữ liệu và phương thức static Dữ liệu static: là thành phần dữ liệu không thuộc vào bất kỳ đối tượng nào mà chỉ phụ thuộc vào lớp đối tượng.
Phương thức static: là phương thức được sử dụng thao tác trên các thành phần dữ liệu static hay những thành phần dữ liệu không phải thành phần dữ liệu của đối tượng. Lớp và đối tượng 35 IV. Dữ liệu và phương thức static Khai báo các thành phần static của lớp: đặt thêm từ khóa static trước dòng khai báo. Truy cập các thành phần static: <tên lớp>.<tên thành phần static> Lớp và đối tượng 36 IV.
Dữ liệu và phương thức static Ví dụ: Lớp và đối tượng 37 V. Định nghĩa phép toán Trong C# cho phép người dùng định nghĩa các phép toán chồng lên những phép toán đã được xây dựng. Những phép toán xây dựng trong C# phải là thành phần static. Lớp và đối tượng 38 V.
Định nghĩa phép toán Ví dụ: định nghĩa phép toán cộng hai số phức và sử dụng phép toán đó.