CHƯƠNG 1: NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
lượt xem 10
download
Phân tích, thiết kế và hiện thực được một chương trình theo phương pháp hướng đối tượng.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CHƯƠNG 1: NHẬP MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- 4/14/2010 CHƯƠNG 1: MỤC TIÊU NHẬP MÔN LẬP TRÌNH 2 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. 1 Phân tích, thiết kế và hiện thực được một chương trình theo phương pháp hướng đối tượng. Nhận diện một số ngôn ngữ OOP. Nhận biết các khái niệm cơ bản của OOP. GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP NỘI DUNG CHI TIẾT LẬP TRÌNH THỦ TỤC 3 4 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 SƠ LƯỢC VỀ OOP Program Thiết kế top-down ĐỐI TƯỢNG Kỹ thuật POP: struct XX {..... HÀNH VI Data }; pick THÔNG ĐIỆP structure nouns type Fun (XX x) DỮ LIỆU {..... Problem ĐẶC TÍNH }; pick GIẢI BÀI TOÁN VỚI OOP Operation void main() verbs (function) TÓM TẮT { X x; Fun(x); Data structure + Algorithm = Program }; GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 1
- 4/14/2010 NHƯỢC ĐIỂM CỦA POP NHƯỢC ĐIỂM CỦA POP 5 6 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 Có học sinh x phải là dễ dàng đố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 “x ơi, viết lý lịch đi em” x.VietLyLich(); nhau nhau hoặc một pointer. Tính phân lớp khó được phát hiện, có khó 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 Diễn đạt nào tự nhiên hơn? dữ liệu. 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ề int Score; x.Score=-20; 2 tác vụ này? }; }; GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 7 8 OOP – Object Oriented Programming. Chương trình là sự hoạt động của các đối tượng Giống tự Cần một phương pháp lập nhiên. trình khác giúp giải quyết Đối tượng thực thi một hoạt động tức là đối tượng thực hiện những nhược điểm này. một hành vi mà đối tượng này có khả năng. OOP có những đặc điểm vượt trội so với POP và là hướng Một chương trình là một trật tự các lời yêu cầu đối tượng OOP lập 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). GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 2
- 4/14/2010 ƯU ĐIỂM CỦA OOP 9 10 Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên. Từ những đối tượng, sự vật, sự kiện, ... tạo nên chương Hiện thực trình Tự nhiên class PERSON Thiết kế bottom-up {.... Person }; Đối tượng = Dữ liệu + Hành vi class MALE: PERSON is a is a tự { nhiên }; Male Female = + class FEMALE: PERSON { }; GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP ƯU ĐIỂM CỦA OOP 11 12 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 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 3
- 4/14/2010 SỰ KHÁC BIỆT SƠ LƯỢC VỀ OOP 13 14 Theo thủ tục Hướng đối tượng Đố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 (deposit), chuyển tiền (transfer) (money), tài khoản (account) GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP ĐỐI TƯỢNG 15 16 Một đối tượng như là một hộp đen, object class girl mà chi tiết bên trong được dấu kín Các 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) Trúc Mai Cúc Lan Thông điệp được nhận bởi các hành vi của đối tượng GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 4
- 4/14/2010 HÀNH VI (BEHAVIOR) 17 18 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) (p HÀNH VI (behavior ): -mua sắm -làm việc nhà Mai -… GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP DỮ LIỆU (DATA) NHỮNG GÌ LÀ ĐỐI TƯỢNG 19 20 Vật có thể sờ mó được Thông tin (information) Như là xe hơi, máy in, ... (Tangible things) Tính chất (property) Thuộc tính (attribute) Vai trò (Roles) Công nhân, người chủ, ... Trường (field) Sự việc xảy ra, tình tiết i Chuyến bay, tràn số, ... (Incidents) Sự tương tác Ký kết thỏa ước, mua (Interactions) hàng, ... Màu, hình dạng Sự mô tả (Specifications) GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 5
- 4/14/2010 THÔNG ĐIỆP MỘT SỐ ĐẶC TÍNH 21 22 Gửi thông điệp: Yêu cầu 1 đối tượng thực thi một TÍNH ĐÓNG GÓI (ENCAPSULATION) hành vi. TÍNH THỪA KẾ (INHERITANCE) Thí dụ: TÍNH ĐA HÌNH (POLYMORPHISM) x là một HOCSINH < Name, Age> x.VietLyLich(); String S= x.getName(); int n= x.getAge(); GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP TÍNH ĐÓNG GÓI (ENCAPSULATION) TÍNH THỪA KẾ (INHERITANCE) 23 24 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 Account Account Nhằm sử dụng lại, và bổ sung chung chung những hiểu những gì cần thiết ì hi biết về thế giới thực Withdraw Thực chất là sự phân lớp → Có sự đồng nhất Deposit (classification) trong việc giữa dữ liệu và thao thiết kế hệ thống theo hướng Transfer tác trên dữ liệu đối tượng GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 6
- 4/14/2010 TÍNH THỪA KẾ (INHERITANCE) TÍNH ĐA HÌNH (POLYMORPHISM) 25 26 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. Có cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng Đây chính là quan hệ “là một” (“is a”) 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ó đặc tính như overload, override. A dog is an animal A teacher is a person GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP Overloaded và Overridden methods ? NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 27 28 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. GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 7
- 4/14/2010 NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Fortran (1954)30 29 Algol (1958) C++, MS VC++: hỗ trợ cả POP lẫn OOP Lai OOP. LISP (1957) Hỗ trợ đa thừa kế. Đối tượng là biến của chương trình. Hàm main() là POP. CPL (1963), U Cambridge Combined Programming Language Scheme (1975) Java (Sun), C# (Microsoft): chỉ hỗ trợ OOP, hàm main phải 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 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP Phương pháp giải bài toán theo OOP SO SÁNH 2 CÁCH ViẾT CHƯƠNG TRÌNH 31 32 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 Xuất một hs Hàm Xuat(HS hs); Operation void main() verbs (function, Ngưng. { XX x; // object variable method, x.Method(...); behavior) }; GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 8
- 4/14/2010 Giải bài toán hướng POP với C++ Giải bài toán hướng OOP 33 34 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP Đối chứng hai cách hiện thực TÓM TẮT 35 36 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 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 9
- 4/14/2010 TÓM TẮT TÓM TẮT 37 38 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 OOP CÓ 3 ĐẶC TÍNH CƠ BẢN: theo 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 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP CÂU HỎI PHẦN TỰ HỌC 39 40 Lập trình OOP cũng tương tự như lập trình POP nhưng mô tả bài toán TỰ DIỄN TẢ THEO Ý BẢN THÂN dưới 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. Trình bày phương pháp lập trình POP. Khai báo class cũng tương tự như khai báo struct nhưng có khác struct ở chỗ đưa các tác vụ thao tác lên struct vào trong class và gọi Trình bày phương pháp lập trình OOP. chúng là các methods của lớp struct StructName class ClassName 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 GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 10
- 4/14/2010 BÀI TẬP TẠI LỚP BÀI TẬP TẠI LỚP 41 42 HÃY PHÂN TÍCH CÁC BÀI TẬP SAU, XÁC ĐỊNH ĐỐI Viết chương trình tính tổng, hiệu, tích, thương của 4. TƯỢNG CẦN QUAN TÂM LÀ GÌ, THÀNH PHẦN DỮ LiỆU 2 phân số nhập từ bàn phím. In ra kết quả dưới VÀ THÀNH PHẦN HÀNH VI CỦA CÁC ĐỐI TƯỢNG ĐÓ, dạng tối giản. TỪ ĐÓ XÂY DỰNG THÀNH LỚP (CHƯA YÊU CẦU VIẾT 5. Viết chương trình giải phương trình bậc 1: ax+b=0 CODE). với a,b 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 tam giác hay không. Nếu phải, hãy cho biết tam giác đó là gồm: 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, 2) Nhập vào 3 số ngày, tháng, năm. Kiểm tra xem ngày tháng Học sinh có điểm trung bình lớn nhất, học sinh có điểm trung năm đó có hợp lệ không? Nếu có in ra ngày hôm sau. bình nhỏ nhất. 3) Nhập vào 1 ma trận mxn. Tính tổng các phần tử nằm trên In danh sách theo thự tự của tên. đường chéo chính. GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP BÀI TẬP TẠI LỚP BÀI CHUẨN BỊ TRƯỚC 43 44 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 while do 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 Con trỏ cao nhất. Làm bài tập về nhà b) In ra màn hình danh sách được xếp theo điểm trung bình giảm dần. GV: Võ Hồng Bảo Châu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP OOP-CHƯƠNG 1- NHẬP MÔN OOP 11
- 4/14/2010 45 THANK YOU GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 1- NHẬP MÔN OOP 12
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nhập môn Lập trình: Phần 1
43 p | 133 | 21
-
Bài giảng Nhập môn lập trình - Chương 7: Mảng một chiều
49 p | 147 | 21
-
Bài giảng Nhập môn lập trình C: Chương 1 - Trần Thị Kim Chi
56 p | 133 | 14
-
Bài giảng Nhập môn lập trình C: Chương 7 - Trần Thị Kim Chi
55 p | 93 | 11
-
Bài giảng Nhập môn lập trình: Bài 1 - Tổng quan máy tính và phần mềm máy tính
42 p | 123 | 9
-
Bài giảng Nhập môn lập trình - Chương 1: Các khái niệm cơ bản về lập trình
20 p | 114 | 8
-
Bài giảng Nhập môn lập trình: Chương 1 - ThS. Cáp Phạm Đình Thăng
21 p | 97 | 8
-
Bài giảng Nhập môn Lập trình: Chương 1
42 p | 45 | 7
-
Bài giảng Nhập môn lập trình: Chương 1 - Trần Minh Thái
58 p | 103 | 7
-
Bài giảng Nhập môn lập trình: Basic Logics - Võ Quang Hoàng Khang
52 p | 63 | 6
-
Bài giảng Nhập môn lập trình: Chương 1 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM
20 p | 18 | 5
-
Bài giảng Lập trình hướng đối tượng với Java - Chương 1: Nhập môn Lập trình hướng đối tượng
25 p | 76 | 5
-
Bài giảng Nhập môn lập trình: Chương 7 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM
36 p | 15 | 5
-
Bài giảng Nhập môn lập trình: Bài 1 - Trần Duy Thanh
70 p | 188 | 5
-
Bài giảng Nhập môn lập trình - Bài 1: Các khái niệm cơ bản về lập trình
21 p | 127 | 4
-
Bài giảng Nhập môn Lập trình: Chương 8
28 p | 21 | 4
-
Bài giảng Nhập môn Lập trình: Chương 11
93 p | 32 | 4
-
Bài giảng Nhập môn lập trình: Bài 1 - TS. Ngô Hữu Dũng
47 p | 80 | 3
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