intTypePromotion=1
ADSENSE

Bài giảng Lập trình hướng đối tượng: Lớp và đối tượng - Lê Viết Mẫn

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:73

9
lượt xem
0
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình hướng đối tượng: Lớp và đối tượng" cung cấp cho người học các kiến thức: Primitives vs Objects, lập trình hướng đối tượng, lớp và đối tượng, một số vấn đề khác. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Lớp và đối tượng - Lê Viết Mẫn

  1. Lớp và đối tượng v 3.0 - 09/2018 Lê Viết Mẫn - lvman@hce.edu.vn 1 Lớp và đối tượng
  2. chúng ta đã học... Programs = Data Structure + Algorithms Cấu trúc chương trình Tuần tự Rẽ nhánh Lặp Hàm Tổ chức dữ liệu Kiểu dữ liệu bool char short int long float double string array Lê Viết Mẫn - lvman@hce.edu.vn 2 Lớp và đối tượng
  3. chúng ta sẽ học... Programs = Object-Oriented Programming Cấu trúc chương trình Tuần tự Rẽ nhánh Lặp Hàm Tổ chức dữ liệu Kiểu dữ liệu bool char short int long float double string array class Lê Viết Mẫn - lvman@hce.edu.vn 3 Lớp và đối tượng
  4. cụ thể... Bank Account - nameCustomer : string - accountBalance : int = 0 chuyển mô hình thành code + deposit() + withdraw() sử dụng C# + transfer() Lê Viết Mẫn - lvman@hce.edu.vn 4 Lớp và đối tượng
  5. Nội dung 1. Primitives vs Objects 2. Lập trình Hướng đối tượng 3. Lớp và đối tượng 4. Một số vấn đề khác 4.1. Từ khoá this 4.2. Cấu tử 4.3. Các thành phần static 4.4. Thuộc tính, thuộc tính tự động 4.5. Biến thành phần chỉ đọc Lê Viết Mẫn - lvman@hce.edu.vn 5 Lớp và đối tượng
  6. Primitives vs Objects Lê Viết Mẫn - lvman@hce.edu.vn 6 Lớp và đối tượng
  7. Primitive data • Dạng dữ liệu cơ bản nhất, được lưu trữ trực tiếp trong bộ nhớ bool sbyte byte float char short ushort double int uint decimal long ulong • Thuộc vào kiểu trị int x = 17; x 17 “value semantics” int y = x; y 17 stack • Toán tử: +, -, /, * • Toán tử kết hợp: ++, --, +=, *= Lê Viết Mẫn - lvman@hce.edu.vn 7 Lớp và đối tượng
  8. Object data • Cách lưu trữ nhiều dữ liệu và các xử lý cho dữ liệu đó trong cùng một thành phần string Array List • Thuộc vào kiểu tham chiếu “reference semantics” 0 1 2 int[] x = new int[3]; x 0x0a10 0 0 0 int[] y = x; y 0x0a10 stack heap • Hàm/Phương thức “hello”.Equals(“world”) [1, 2, 3].Reverse() Lê Viết Mẫn - lvman@hce.edu.vn 8 Lớp và đối tượng
  9. null • Có nghĩa là “no object” • “giá trị 0” cho các object string[] strArr = new string[5]; 0 1 2 3 4 strArr 0x0a1b null null null null null stack heap • NullReferenceException strArr[0].Length • “” là không phải null “”.Length // trả ra 0 Lê Viết Mẫn - lvman@hce.edu.vn 9 Lớp và đối tượng
  10. Lập trình Hướng đối tượng Lê Viết Mẫn - lvman@hce.edu.vn 10 Lớp và đối tượng
  11. Lập trình Hướng đối tượng • Tất cả mọi thứ trong C# đều là đối tượng (object) và có kiểu (class) • Các đối tượng là sự trừu tượng hoá dữ liệu, chứa: • đặc tính (attribute) - nơi lưu trữ dữ liệu • phương thức (method), là giao diện cho phép tương tác với đối tượng, định nghĩa hành vi nhưng che dấu cài đặt • Có thể tạo các thể hiện (instance) của đối tượng “hello world” [1, 2, 3] 1234 true • Có thể huỷ/xoá các đối tượng Lê Viết Mẫn - lvman@hce.edu.vn 11 Lớp và đối tượng
  12. Định nghĩa lớp Lớp & đối tượng trong C# Định nghĩa lớp Sử dụng từ khoá class Định nghĩa một kiểu dữ liệu mới Đặc tính Các biến thành phần (gọi tắt là biến) Hành vi Phương thức / hàm Có hai loại hàm với hai cách triệu gọi khác nhau : • Hàm không tĩnh - Gọi từ đối tượng Bitmap bm = new Bitmap(20, 20); bm.Save("bitmap.png"); • Hàm tĩnh (từ khoá static) - Gọi từ lớp Console.Write("Please enter a number :"); Lê Viết Mẫn - lvman@hce.edu.vn 12 Lớp và đối tượng
  13. Định nghĩa lớp Sử dụng lớp Lớp & đối tượng trong C# Định nghĩa lớp Sử dụng từ khoá class Định nghĩa một kiểu dữ liệu mới Đặc tính Các biến thành phần (gọi tắt là biến) Hành vi Phương thức / hàm Có hai loại hàm với hai cách triệu gọi khác nhau : • Hàm không tĩnh - Gọi từ đối tượng Bitmap bm = new Bitmap(20, 20); bm.Save("bitmap.png"); • Hàm tĩnh (từ khoá static) - Gọi từ lớp Console.Write("Please enter a number :"); Tạo một đối tượng Khai báo một biến có kiểu dữ liệu nào đó và ghi dữ của một lớp liệu vào biến đó Sử dụng từ khoá new Bitmap bm = new Bitmap(20, 20); Lê Viết Mẫn - lvman@hce.edu.vn 13 Lớp và đối tượng
  14. Hai mặt của lớp • Thiết kế lớp (người lập trình lớp) • Cài đặt một lớp tốt nhất có thể mà không lo lắng về cách nó sẽ được sử dụng • Cung cấp dữ liệu thích hợp • Cung cấp các hàm thích hợp • Cung cấp các đặc tính tổng quát cho các lớp chung, đặc tính riêng biệt cho các lớp chuyên biệt • Sử dụng lớp (người lập trình ứng dụng) • Tập trung vào các giao diện public • Lớp đó có thể làm gì, chứ không phải nó làm việc đó thế nào Lê Viết Mẫn - lvman@hce.edu.vn 14 Lớp và đối tượng
  15. Quy tắc thiết kế lớp • Nghĩ về từ “trách nhiệm” • Lớp có trách nhiệm gì trong việc duy trì dữ liệu này ? • Lớp có trách nhiệm gì trong việc thực hiện tính toán đó hay cung cấp dịch vụ đó (lớp nào nên định nghĩa hàm đó) ? • Cài đặt che dấu dữ liệu • Thông thường, dùng private cho dữ liệu • Thông thường, dùng public cho các hàm • Che dấu các hàm “trợ giúp” (dùng private) • Chỉ cho phép truy xuất dữ liệu thông qua các hàm public (những hàm này là giao diện public của lớp) Lê Viết Mẫn - lvman@hce.edu.vn 15 Lớp và đối tượng
  16. Giao diện public • Người sử dụng sử dụng một đối tượng mà không cần biết nó xử lý thế nào ở bên trong • Dữ liệu là không thấy được từ bên ngoài • Các thuật toán là cũng không thấy được từ bên ngoài • Chỉ có các đặc tính, giao diện public là đưa ra cho bên ngoài • Bao gồm các đặc tính không phải private • Thường là các hàm thành viên public • Giao diện public là con đường duy nhất để đạt đến sự đóng gói của đối tượng Lê Viết Mẫn - lvman@hce.edu.vn 16 Lớp và đối tượng
  17. Lớp và đối tượng Lê Viết Mẫn - lvman@hce.edu.vn 17 Lớp và đối tượng
  18. Lớp UML → Lớp C# • Tên lớp Person • ảo - name : string + height : int • Đặc tính (field) # weight : int • Biến thành phần -instance count : int = 0 • Thuộc tính (property) + Person() • Các biến cấp lớp + Person(name:string) • static • + payTaxes() : void Hành vi + catchBus(direction : int) : void • Cấu tử (constructor) + takeLongLunch() : bool • Huỷ tử (destructor) • Hàm thành phần (method) Lê Viết Mẫn - lvman@hce.edu.vn 18 Lớp và đối tượng
  19. Lớp UML → Lớp C# • Tên lớp Person • ảo - name : string + height : int • Đặc tính (field) # weight : int • Biến thành phần -instance count : int = 0 • Thuộc tính (property) + Person() • Các biến cấp lớp + Person(name:string) • static • + payTaxes() : void Hành vi + catchBus(direction : int) : void • Cấu tử (constructor) + takeLongLunch() : bool • Huỷ tử (destructor) • Hàm thành phần (method) Lê Viết Mẫn - lvman@hce.edu.vn 19 Lớp và đối tượng
  20. Lớp UML → Lớp C# • Tên lớp Person • ảo - name : string + height : int • Đặc tính (field) # weight : int • Biến thành phần -instance count : int = 0 • Thuộc tính (property) + Person() • Các biến cấp lớp + Person(name:string) • static • + payTaxes() : void Hành vi + catchBus(direction : int) : void • Cấu tử (constructor) + takeLongLunch() : bool • Huỷ tử (destructor) • Hàm thành phần (method) Lê Viết Mẫn - lvman@hce.edu.vn 20 Lớp và đối tượng
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2