Nội dung
Khái niệm về phương pháp lập trình
Tổng quan các phương pháp lập trình
Giới thiệu những đặc điểm và những vấn đề mới trong phương pháp lập trình hướng đối tượng
Phương pháp lập trình (PPLT)?
Xây dựng phần mềm bao gồm rất nhiều công đoạn: phân tích & thiết kế, cài đặt, kiểm tra/thử nghiệm và bảo trì
Cài đặt (programming/coding) chỉ là 1 phần trong quá trình trên
C++/C#/Java/v.v… là NNLT để viết chương trình
PPLT là hệ thống hướng dẫn các giai đoạn cần thiết, cấu trúc của một chương trình
PPLT là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơn
40 trang |
Chia sẻ: candy98 | Lượt xem: 641 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình hướng đối tượng - Chương 1: Giới thiệu OOP- Trần Minh Thái, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 1. Giới thiệuTRẦN MINH THÁIEmail: minhthai@huflit.edu.vnWebsite: www.minhthai.edu.vn Cập nhật: 08 tháng 06 năm 2016Lập trình Hướng đối tượng (Object Oriented Programming)Tài liệu tham khảo Trần Minh Thái, Bài giảng & bài tập Lập trình hướng đối tượng trên Web site: www.minhthai.edu.vn Scott Robert Ladd, C++ kỹ thuật và ứng dụng (Nguyễn Hùng biên dịch) Trần Văn Lăng, Lập trình hướng đối tượng với C++ Stroustrup, Bjarne, The C++ Programming Language, Reading, MA: Addison-Wesley (1993) Bruce Eckel, Thinking in C++ 2nd edition, Vol.1&2 Dietel & Dietel. C++ How to Program, 3rd editionNội dung học phầnChương 1. Giới thiệu lập trình hướng đối tượng (3 tiết)Chương 2. Giới thiệu ngôn ngữ C++ (6 tiết)Chương 3. Lớp và đối tượng (9 tiết)Chương 4. Đa năng hoá toán tử (6 tiết)Chương 5. Kế thừa đơn và đa kế thừa (9 tiết)Chương 6. Đa hình (6 tiết)Chương 7. Phân tích, thiết kế và hiện thực chương trình theo hướng đối tượng (6 tiết)Chương 1. Giới thiệu OOPNội dungKhái niệm về phương pháp lập trìnhTổng quan các phương pháp lập trìnhGiới thiệu những đặc điểm và những vấn đề mới trong phương pháp lập trình hướng đối tượngPhương pháp lập trình (PPLT)?Xây dựng phần mềm bao gồm rất nhiều công đoạn: phân tích & thiết kế, cài đặt, kiểm tra/thử nghiệm và bảo trìCài đặt (programming/coding) chỉ là 1 phần trong quá trình trênPhương pháp lập trình?C++/C#/Java/v.v là NNLT để viết chương trìnhPPLT là hệ thống hướng dẫn các giai đoạn cần thiết, cấu trúc của một chương trìnhPPLT là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơnCác yêu cầu chính của phần mềmTính tái sử dụng (reusability)Tính mở rộng (extensibility)Tính mềm dẻo (flexibility)Các phương pháp lập trìnhLập trình tuyến tínhLập trình có cấu trúcLập trình hướng đối tượng1960 – 19701980Thời gian đầu(1) Lập trình tuyến tínhKhông mang tính thiết kếTiêu biểu là ngôn ngữ Basic, FortranChương trình là một dãy các lệnhLập trình là viết các lệnh trong dãy lệnh(1) Lập trình tuyến tính: Đặc điểmChương trình đơn giản, số dòng lệnh ítThực hiện trình tự từ đầu đến cuốiKhông có cấu trúcDùng các lệnh “goto/ gosub” để nhảy đến một vị trí nào đó trong chương trình(2) Lập trình có cấu trúcChương trình là một hệ thống các thủ tục/ hàm. Mỗi thủ tục/ hàm là một dãy các lệnhLập trình là xây dựng các thủ tục/ hàmKết quả là hệ thống cấu trúc và mối quan hệ giữa các hàm/ thủ tụcTiêu biểu là ngôn ngữ Pascal, C(2) Lập trình có cấu trúcKhái niệm trừu tượng hóa (abstraction) theo chức năng: Làm được gì, không quan tâm chi tiết bên trongPhân chia công việc thành các chức năng đơn giản hơn gọi là lập trình đơn thể (module)(2) Lập trình có cấu trúc: Đặc điểmƯu điểmĐơn giản hóa quá trình thiết kế và cài đặtDễ đọc chương trình, hiểu chi tiết bài toánCác chương trình con tương đối độc lập, dễ phân công cho từng nhóm(2) Lập trình có cấu trúc: Đặc điểmKhuyết điểmKhi thay đổi dữ liệu thì phải thực hiện các thay đổi ở mọi đơn thể có tác động trên chúngHàm và dữ liệu không có quan hệ với nhauHàm không hạn chế truy nhập tới các biến toàn cục(2) Lập trình có cấu trúc: Đặc điểmKhuyết điểmSai sót trong việc trao đổi thông tin giữa các thành viên trong nhóm có thể mất nhiều thời gian để sửa chữa chương trìnhPhần xử lý nằm rải rác và phải hiểu rõ cấu trúc dữ liệuKhó bảo trì chương trình(3) Lập trình Hướng đối tượng(Object-oriented Programming)Tư duy mới, tiếp cận theo hướng đối tượng để giải các bài toán trên máy tínhThiết kế và phát triển phần mềm dựa trên kiến trúc lớp và đối tượngMục tiêuLoại bỏ những thiếu sót của tiếp cận theo thủ tụcTiếp cận theo hướng trừu tượng hoá (abstraction)Dữ liệu được xem là phần trung tâm và được bảo vệHàm gắn kết với dữ liệu(3) Lập trình Hướng đối tượng(Object-oriented Programming)Mục tiêuPhân tách bài toán thành nhiều đối tượng và yêu cầu chúng thực hiện hành động của mìnhTăng cường khả năng sử dụng lạiTiếp cận bottom-up(3) Lập trình Hướng đối tượng(Object-oriented Programming)Ưu điểmCung cấp một cấu trúc module rõ ràng: Giao diện định nghĩa rõ ràng và chi tiết cài đặt ẩnDuy trì và sửa đổi mã nguồn dễ dàngCung cấp framework tốt với các thư viện mã nguồn(3) Lập trình Hướng đối tượng(Object-oriented Programming)Sự trừu tượng hóa (Abstraction)?Trừu tượng hóa Giao diện – Cài đặtCái gì – Thế nàoPhân tích – Thiết kếCác kỹ thuật trừu tượngĐóng gói (encapsulation)Ẩn thông tin (information hiding)Thừa kế (inheritance)Đa hình (polymorphism)Sự trừu tượng hoáThực thểThuộc tínhHành độngThế giới thựcTrừu tượng hóaPhần mềmThuộc tínhPhương thứcSự trừu tượng hoáThế giới thựcPPLTNgôn ngữ lập trìnhĐối tượng trong thế giới thựcĐối tượngBiến có kiểu cấu trúcKhái niệm chung về đối tượngLớp đối tượngKiểu dữ liệu cấu trúcCác thông tin được quan tâm về 1 đối tượngThuộc tínhThành phần thuộc tính của kiểu cấu trúcCác khả năng của đối tượngPhương thứcCác phương thứcPhân công giữa các đối tượngYêu cầuGọi thực hiện phương thứcĐối tượng (Object)?Đối tượng trong thế giới thực(Real Object)Thực thể cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận đượcCó trạng thái (state) và hành động (behaviour)Một đối tượng có tên gọi và chu trình sống: sinh ra, hoạt động và mất đi6.25Đối tượng Phần mềm(Software Object)Dùng để biểu diễn các đối tượng thế giới thựcTrạng thái: thuộc tính (attribute/ property)Hành động: phương thức (method) Đối tượng Phần mềmĐối tượng (object) là một thực thể phần mềm bao bọc các thuộc tính và các phương thức liên quan.Đối tượng phần mềmĐối tượng phần mềm Xe ĐạpThuộc tính được xác định bởi giá trị cụ thể gọi là thuộc tính thể hiện. Một đối tượng cụ thể được gọi là một thể hiện.Lớp (class)?Nhiều đối tượng cùng loại lớpNhiều đối tượng cùng loại chia sẻ những đặc điểm chungLớp (class)?Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểuVD: lớp XeDap là một thiết kế chung cho nhiều đối tượng xe đạp được tạo ra Lớp định nghĩa các thuộc tính và các phương thức chung cho tất cả các đối tượng của cùng một loại nào đóLớp (class)?Một đối tượng là một thể hiện cụ thể của một lớpVD: mỗi đối tượng xe đạp là một thể hiện của lớp XeDapMỗi thể hiện có thể có những thuộc tính thể hiện khác nhauVD: một xe đạp có thể đang ở bánh răng thứ 5/ một xe khác có thể là đang ở bánh răng thứ 36.30Ví dụKhai báo cho lớp XeDapĐối tượng của lớp XeDapThuộc tính & Phương thức của lớpThuộc tính (attribute) là dữ liệu trình bày các đặc điểm về một đối tượngPhương thức (method) có liên quan tới những việc mà đối tượng có thể làm. Một phương thức đáp ứng một chức năng tác động lên dữ liệu của đối tượng (thuộc tính)Thông điệp & Truyền thông điệpThông điệp (message) là một yêu cầu một hoạt độngĐối tượng nhận thông điệpTên của phương thức thực hiệnCác tham số mà phương thức cầnTruyền thông điệp: một đối tượng gọi một hay nhiều phương thức của đối tượng khác để yêu cầu thông tinTính đóng gói (Encapsulation)Che giấu việc thực thi chi tiết của một đối tượngẨn thông tin (Information Hiding)Thuộc tính được lưu trữ hay phương thức được cài đặt như thế nào được che giấu khỏi các đối tượng khácTính thừa kế (Inheritance)Animals6.36Tính thừa kế (Inheritance) Cho phép các lớp được định nghĩa kế thừa từ các lớp khác VD: lớp xe đạp leo núi và xe đạp đua là những lớp con (subclass) của lớp xe đạpThừa kế nghĩa là các phương thức và các thuộc tính được định nghĩa trong một lớp có thể được thừa kế hoặc được sử dụng lại bởi lớp khácTính Đa Hình (Polymorphism) Một hành động cùng tên có thể được thực hiện khác nhau bởi các đối tượng/các lớp khác nhau. Ngữ cảnh khác kết quả khácĐường ThẳngHình TrònĐiểmHình VuôngVẽMột số ngôn ngữ lập trình HĐT C++ C#, VB.Net, J#, VC++ Java JavaScript PHP Các bước thiết kế đối tượng Bước 1: Xây dựng sơ đồ đối tượngXác định các lớp đối tượngXác định các quan hệ giữa các lớp Bước 2: Thiết kế các lớp Thiết kế thuộc tính, các hành động Bước 3: Cài đặt các lớp Bước 4: Sử dụng các lớp để tạo ra các đối tượngQ&A