LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Võ Hồng Bảo Châu) - Chương 1
lượt xem 41
download
Tài liệu tham khảo dành cho giáo viên, sinh viên chuyên ngành công nghệ thông tin - Giáo trình lập trình hướng đối tượng.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Võ Hồng Bảo Châu) - Chương 1
- MỤC TIÊU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Nhận biết sự khác biệt giữa lập trình hướng thủ tục và lập trình hướng đối tượng. Chương 1: • Phân tích, thiết kế và hiện thực được một chương trình NHẬP MÔN LẬP TRÌNH theo phương pháp hướng đối tượng. • Nhận diện một số ngôn ngữ OOP. HƯỚNG ĐỐI TƯỢNG • Nhận biết các khái niệm cơ bản của OOP. Giáo viên: Võ Hồng Bảo Châu Khoa CNTT trường ĐH Lạc Hồng OOP-CHƯƠNG 1- NHẬP MÔN OOP 2 NỘI DUNG CHI TIẾT LẬP TRÌNH THỦ TỤC • POP- Procedure Oriented Programming. • LẬP TRÌNH THỦ TỤC – POP – Phân công việc những việc nhỏ hơn • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – OOP – Là các chương trình con Program • SƠ LƯỢC VỀ OOP – Thiết kế top-down – ĐỐI TƯỢNG struct XX • Kỹ thuật POP: {..... – HÀNH VI Data }; pick structure – THÔNG ĐIỆP nouns type Fun (XX x) – DỮ LIỆU {..... Problem }; – ĐẶC TÍNH pick Operation void main() verbs • GIẢI BÀI TOÁN VỚI OOP (function) { X x; Fun(x); Data structure + Algorithm = Program • TÓM TẮT }; OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 3 4 1
- NHƯỢC ĐIỂM CỦA POP NHƯỢC ĐIỂM CỦA POP • Diễn đạt “thiếu tự nhiên” • Khó mô tả những quan hệ phức tạp của thế giới tự nhiên. Biểu diễn dạng cấu trúc “phức tạp”, không phải là dễ dàng Có học sinh x đối với nhiều người. VietLyLich(x); “Viết lý lịch cho học sinh x” – Quan hệ giữa các dữ liệu được biểu diễn bằng cấu trúc lồng nhau hoặc một pointer. Tính phân lớp khó được phát hiện, có khó “x ơi, viết lý lịch đi em” x.VietLyLich(); khăn trong biểu diễn lẫn tính dễ hiểu. • Bảo mật kém do không thể giới hạn truy xuất đến một dữ liệu. Diễn đạt nào tự nhiên hơn? struct STUDENT void main() { char Name[21]; {STUDENT x = { “Hoa”, 19, 5}; “x ơi, viết lý lịch đi em” int Age; x.Age=1000; Bạn nghĩ sao về 2 int Score; x.Score=-20; tác vụ này? }; }; OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 5 6 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • OOP – Object Oriented Programming. • Chương trình là sự hoạt động của các đối tượng Giống Cần một phương pháp lập trình tự nhiên. khác giúp giải quyết những nhược điểm này. • Đối tượng thực thi một hoạt động tức là đối tượng thực OOP có những đặc điểm vượt hiện một hành vi mà đối tượng này có khả năng. trội so với POP và là hướng lập OOP • Một chương trình là một trật tự các lời yêu cầu đối tượng trình chủ đạo hiện nay. thực hiện hành vi của mình. Chương trình là một kích bản (script). OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 7 8 2
- ƯU ĐIỂM CỦA OOP • Từ những đối tượng, sự vật, sự kiện, ... tạo nên chương • Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên. trình Hiện thực Tự nhiên class PERSON • Thiết kế bottom-up {.... Person }; class MALE: PERSON is a is a Đối tượng = Dữ liệu + Hành vi tự { nhiên }; Male Female = + class FEMALE: PERSON { }; OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 9 10 ƯU ĐIỂM CỦA OOP ƯU ĐIỂM CỦA OOP • Có tính bảo mật cao: Bên ngoài không thể tùy tiện truy cập một dữ liệu thuộc tính. Tái sử dụng code Tái sử dụng code OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 11 12 3
- SỰ KHÁC BIỆT SƠ LƯỢC VỀ OOP Hướng đối tượng Theo thủ tục Đối tượng = Dữ liệu + Hành vi = + Rút tiền (withdraw), gửi tiền Khách hàng (customer), tiền (money), (deposit), chuyển tiền (transfer) tài khoản (account) OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 13 14 ĐỐI TƯỢNG Một đối tượng như là một hộp đen, mà object class girl chi tiết bên trong được dấu kín Các đối tượng giao tiếp với nhau thông qua việc truyền các thông điệp (messages) Mai Cúc Trúc Lan Thông điệp được nhận bởi các hành vi của đối tượng OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 15 16 4
- HÀNH VI (BEHAVIOR) • Thao tác (operation) DỮ LIỆU (data): • Phương thức (method) -Xinh đẹp -Dịu dàng • Hàm (function) -... • Thủ tục (procedure) HÀNH VI (behavior ): -mua sắm -làm việc nhà Mai -… OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 17 18 DỮ LIỆU (DATA) NHỮNG GÌ LÀ ĐỐI TƯỢNG • Thông tin (information) Vật có thể sờ mó được Như là xe hơi, máy in, ... (Tangible things) • Tính chất (property) Vai trò (Roles) Công nhân, người chủ, ... • Thuộc tính (attribute) • Trường (field) Sự việc xảy ra, tình tiết Chuyến bay, tràn số, ... (Incidents) Sự tương tác (Interactions) Ký kết thỏa ước, mua hàng, ... Sự mô tả (Specifications) Màu, hình dạng OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 19 20 5
- THÔNG ĐIỆP MỘT SỐ ĐẶC TÍNH • Gửi thông điệp: Yêu cầu 1 đối tượng thực thi một hành vi. • TÍNH ĐÓNG GÓI (ENCAPSULATION) • Thí dụ: • TÍNH THỪA KẾ (INHERITANCE) x là một HOCSINH < Name, Age> • TÍNH ĐA HÌNH (POLYMORPHISM) x.VietLyLich(); String S= x.getName(); int n= x.getAge(); OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 21 22 TÍNH ĐÓNG GÓI (ENCAPSULATION) TÍNH THỪA KẾ (INHERITANCE) • Dữ liệu và thao tác được nhóm lại với nhau Tạo ra một kiểu dữ liệu mới từ kiểu đã có Thực chất là sự ghép Nhằm sử dụng lại, và bổ sung Account chung những hiểu những gì cần thiết biết về thế giới thực Withdraw Thực chất là sự phân lớp Có sự đồng nhất giữa (classification) trong việc thiết Deposit dữ liệu và thao tác kế hệ thống theo hướng đối Transfer trên dữ liệu tượng OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 23 24 6
- TÍNH THỪA KẾ (INHERITANCE) TÍNH ĐA HÌNH (POLYMORPHISM) Theo ngôn ngữ lớp, sự thừa kế có nghĩa là một lớp • Nhiều đối tượng cùng chia sẻ đặc tính chung, nhưng có những tác động khác nhau. thừa kế các đặc tính của lớp khác. Đây chính là quan hệ “là một” (“is a”) • Có cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng khác nhau. • Thực chất là tính đa dạng (many form) A car is a vehicle • Để hiện thực được tính đa hình, ngôn ngữ đối tượng có A dog is an animal đặc tính như overload, override. A teacher is a person OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 25 26 Overloaded và Overridden methods ? NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Overloaded methods: • C++ ( Borland C++, Visual C++) – Nhằm cung cấp các dạng khác nhau của hành vi, nhưng vẫn có • Java cùng tên gọi. • C# ( C sharp) • Overridden methods: • Visual Basic. – Hiện thực lại hành vi đã có của tổ tiên – Phải có cùng tên và trùng mọi yếu tố tạo nên hành vi này. • ..... OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 27 28 7
- NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Fortran (1954) • C++, MS VC++: hỗ trợ cả POP lẫn OOP Lai OOP. Hỗ trợ Algol (1958) LISP (1957) đa thừa kế. Đối tượng là biến của chương trình. Hàm m ain() là POP. CPL (1963), U Cambridge • Java (Sun), C# (Microsoft): chỉ hỗ trợ OOP, hàm main phải Combined Programming Language Scheme (1975) nằm trong một lớp. Chỉ hỗ trợ đơn thừa kế. BCPL (1967), MIT Basic Combined Programming Language B (1969), Bell Labs C (1970), Bell Labs C++ (1983), Bell Labs Objective C Java (1995), Sun OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 29 30 Phương pháp giải bài toán theo OOP SO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNH Program • Viết chương trình nhập, xuất 1 học sinh. Thông tin cần quan tâm về 1 học sinh: Mã học sinh (8 ký tự), class XX tên học sinh (30 ký tự), điểm (int). { type1 prop1; pick properties type2 prop2; nouns • Danh từ: Học sinh cấu trúc HS ....... type Method1(...) { • Động từ: Problem Bao gói dữ liệu và } hành vi thành class ..... – Bắt đầu; }; – Nhập một hs Hàm Nhap(HS&hs) pick Operation – Xuất một hs Hàm Xuat(HS hs); void main() verbs (function, { XX x; // object variable method, – Ngưng. x.Method(...); behavior) }; OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 31 32 8
- Giải bài toán hướng POP với C++ Giải bài toán hướng OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 33 34 Đối chứng hai cách hiện thực TÓM TẮT • POP: Xem dữ liệu và tác vụ rời nhau. • Các nhược điểm của POP – Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên theo cac1h “không tự nhiên”. – Khó tái sử dụng code. – Bảo mật kém. Chương trình=cấu trúc dữ liệu + thuật toán OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 35 36 9
- TÓM TẮT TÓM TẮT • OOP: Xem dữ liệu và tác vụ là một thể thống nhất. TRONG OOP • Ưu điểm của OOP: • Đối tượng phải thuộc một lớp (class). – Mô tả các quan hệ giữa các đối tượng dữ liệu trong tự nhiên theo • OOP CÓ 3 ĐẶC TÍNH CƠ BẢN: cách “ tự nhiên”. – TÍNH ĐÓNG GÓI (ENCAPSULATION) – Dễ tái sử dụng code. – TÍNH THỪA KẾ (INHERITANCE) – Có cơ chế bảo mật dữ liệu. – TÍNH ĐA HÌNH (POLYMORPHISM) Đối tượng = Dữ liệu + Hành vi OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 37 38 CÂU HỎI PHẦN TỰ HỌC • Lập trình OOP cũng tương tự như lập trình POP nhưng mô tả bài toán dưới TỰ DIỄN TẢ THEO Ý BẢN THÂN dạng các class, các tác vụ xử lý dữ liệu thành các hành vi của class. • Khai báo class cũng tương tự như khai báo struct nhưng có khác struct ở chỗ • Trình bày phương pháp lập trình POP. đưa các tác vụ thao tác lên struct vào trong class và gọi chúng là các methods của lớp • Trình bày phương pháp lập trình OOP. struct StructName class ClassName • Nhận xét ưu và khuyết điểm của cả 2 phương pháp public private { { protected }; Modifier : Type1 Func1 () { } Type1 Func1 (StructName stru) Modifier : Type2 Func2 () { } { } Type2 Func2 (StructName stru) }; {} Chỉ có method public là toàn cục các hàm đều toàn cục OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 39 40 10
- BÀI TẬP TẠI LỚP BÀI TẬP TẠI LỚP • HÃY PHÂN TÍCH CÁC BÀI TẬP SAU, XÁC ĐỊNH ĐỐI TƯỢNG 4. Viết chương trình tính tổng, hiệu, tích, thương của 2 phân CẦN QUAN TÂM LÀ GÌ, THÀNH PHẦN DỮ LiỆU VÀ THÀNH số nhập từ bàn phím. In ra kết quả dưới dạng tối giản. PHẦN HÀNH VI CỦA CÁC ĐỐI TƯỢNG ĐÓ, TỪ ĐÓ XÂY 5. Viết chương trình giải phương trình bậc 1: ax+b=0 với a,b DỰNG THÀNH LỚP (CHƯA YÊU CẦU VIẾT CODE). là 2 số thực nhập từ bàn phím. 1) Nhập vào 3 số thực. Kiểm tra xem đó có phải là 3 cạnh của 6. Viết chương trình nhập hồ sơ học sinh của lớp học gồm: tam giác hay không. Nếu phải, hãy cho biết tam giác đó là tên, tuổi, điểm trung bình cả năm. tam giác gì (vuông, cân, đều, thường) và tính diện tích tam giác đó. – In ra tuổi lớn nhất, tuổi nhỏ nhất của lớp, – Học sinh có điểm trung bình lớn nhất, học sinh có điểm trung bình 2) Nhập vào 3 số ngày, tháng, năm. Kiểm tra xem ngày tháng nhỏ nhất. năm đó có hợp lệ không? Nếu có in ra ngày hôm sau. – In danh sách theo thự tự của tên. 3) Nhập vào 1 ma trận mxn. Tính tổng các phần tử nằm trên đường chéo chính. OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 41 42 BÀI TẬP TẠI LỚP BÀI CHUẨN BỊ TRƯỚC 7. Nhập vào tọa độ 2 điểm trong mặt phẳng. Tính và in ra tọa • ÔN LẠI NGÔN NGỮ LẬP TRÌNH C/C++ độ trung điểm của chúng. – Kiểu dữ liệu 8. Nhập vào thời gian bắt đầu chạy và thời gian đến của một – Biến, hằng, biểu thức, phép toán vận động viên. Cho biết thời gian chạy của vận động viên – Câu lệnh điều kiện: if, switch đó. – Câu lệnh lặp: for, while, do..while 9. Tính diện tích của hình tròn, hình vuông, hình chữ nhật, – Hàm: khai báo, truyền tham số, gọi hàm,… hình tam giác. – Mảng 1 chiều, 2 chiều 10. Nhập danh sách n học sinh gồm họ lót, tên, ngày sinh, – Chuỗi ký tự điểm văn, toán, lí, hoá. – Cấu trúc struct a) In ra màn hình họ tên của học sinh có điểm trung bình cao nhất. – Con trỏ b) In ra màn hình danh sách được xếp theo điểm trung • Làm bài tập về nhà bình giảm dần. OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 43 44 11
- THANK YOU OOP-CHƯƠNG 1- NHẬP MÔN OOP 45 12
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hướng dẫn sử dụng excel 2010 part 21
7 p | 387 | 150
-
LTHDT- Bài 10. Biểu đồ use case và biểu đồ hoạt động
32 p | 320 | 76
-
CHƯƠNG 5: CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ
9 p | 808 | 49
-
LTHDT- Bài 11. Biểu đồ tương tác
32 p | 271 | 44
-
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Võ Hồng Bảo Châu) - Chương 2
12 p | 114 | 27
-
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Võ Hồng Bảo Châu) - Chương 3
12 p | 102 | 23
-
Bài giảng Lập trình Java cơ bản: Chương 3 - GV. Võ Hoàng Phương Dung
55 p | 136 | 20
-
Bài giảng Lập trình Java cơ bản: Chương 1 - GV. Võ Hoàng Phương Dung
62 p | 148 | 20
-
Tài Liệu Học Ngôn Ngữ Lập Trình C#_p10
29 p | 96 | 19
-
Bài giảng Lập trình ứng dụng mạng: Bài 2 - GV. Võ Tấn Dũng
66 p | 111 | 18
-
Bài giảng Lập trình Java cơ bản: Chương 5 Nhập xuất - GV. Võ Hoàng Phương Dung
19 p | 116 | 16
-
Bài giảng Lập trình ứng dụng mạng: Bài 7 - GV. Võ Tấn Dũng
60 p | 87 | 12
-
Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT
37 p | 114 | 10
-
Learning Perl - Dữ liệu vô hướng part 2
5 p | 78 | 10
-
Nhập môn JavaScript: Phần 2 - ĐH Quốc gia Hà Nội
40 p | 83 | 8
-
Bài giảng Nhập môn lập trình Java: Bài 3 - Võ Tấn Dũng
54 p | 95 | 7
-
Bài giảng Nhập môn Java: Bài 3 – Võ Tấn Dũng
54 p | 90 | 6
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn