Kĩ thuật lập trình - Chương 1: Tổng quan về Lập trình hướng đối tượng
Trừu tượng hóa
Giao diện – Cài đặt
Cái gì – Thế nào
Phâ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)
55 trang |
Chia sẻ: huyhoang44 | Lượt xem: 788 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Chương 1: Tổng quan về Lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 1. Tổng quan về Lập trình hướng đối tượngTRẦN MINH THÁIEmail: minhthai@huflit.edu.vnWebsite: www.minhthai.edu.vn Cập nhật: 11 tháng 02 năm 2017LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (Object Oriented Programming)Tài liệu tham khảoTrần Minh Thái, Bài giảng & Bài tập Lập trình hướng đối tượng trên Website: www.minhthai.edu.vn Liang, Y. Daniel, “Introduction to Java programming”, 6th edition, Pearson Prentice Hall, 2007Richard L. Halterman, “Object Oriented Programming in Java”, 2008Bruce Eckel, “Thinking in Java”, 4th edition, 2006J. Barker, “Beginning Java Objects – From concept to code”, 2nd edition, 2005C.S.Horsmann, G. Cornell, “Core Java 2”, 2002Nội dung học phầnChương 1. Tổng quan về lập trình hướng đối tượngChương 2. Ngôn ngữ lập trình JavaChương 3. Lập trình Hướng đối tượng với JavaChương 4. Vào ra trong JavaChương 5. Lập trình giao diện với JavaChương 6. Lập trình đa luồngĐánh giá môn họcThực hiện đồ án và vấn đáp (1 – 2 sinh viên/ đồ án)Quyển báo cáo (file word): 3đChương trình: 4đVấn đáp: 3đĐiểm trừ: Vắng 01 buổi trừ 0.5đĐiểm cộng (Tối đa 2đ): Thảo luận, bài tập tại lớp (+0.25đ/lần)Thời gian nộp và vấn đáp: Sau khi kết thúc môn học 2 tuầnĐăng ký nhóm và đề tàiThời gian: Chậm nhất ngày 24/02/2017Cách thức đăng ký: Điền thông tin theo mẫu trên web www.minhthai.edu.vn Các đề tài:Ứng dụngGameCác tiện íchCấu trúc quyển báo cáoThứ tự nội dung (trình bày ở các trang khác nhau)Trang bìaTrang bìa lótPhần mục lụcDanh mục các từ viết tắtDanh mục các bảng biểuDanh mục các hình vẽNội dung của các chươngKết luậnTài liệu tham khảoĐịnh dạng báo cáoDùng công cụ soạn thảo MS WordKhổ giấy: A4Canh lề: Trái: 3 cm; Trên, dưới, phải: 2 cm Độ giãn dòng: 1.5Font chữ: Times New RomanKích thước font chữ: Tên chương: 15 (in đậm, canh center), tiêu đề: 13 (in đậm, canh left), nội dung: 13 (in thường, canh justify)Đánh số nội dung: Sử dụng số tự nhiên (tối đa 3 cấp). Ví dụ: Chương 1, mục 1: 1.1, cấp 2 của 1.1 là 1.1.1, cấp 3 là 1.1.1.1Lưu ý: Các mục lục, danh mục các bảng, danh mục các hình, đánh tài liệu tham khảo phải dùng tool tự động của MS WordNội dung các chươngTối thiểu phải gồm các chương sauMở đầuPhân tíchThiết kếThử nghiệm kết quảChương 1. Tổng quan về OOPNội dungVì sao học lập trình hướng đối tượng?Lịch sử các phương pháp lập trình Phương pháp lập trình hướng cấu trúc, thủ tụcCác đặc trưng cơ bản của lập trình hướng đối tượngMột số ngôn ngữ lập trình hướng đối tượngVì sao học lập trình hướng đối tượng?Object Oriented Programming (OOP) là phương pháp lập trình quan trọngTất cả ngôn ngữ hiện đại đều object oriented hay hỗ trợ object và classCác framework, library, API hiện đại đều object oriented.NET Framework Class Library (C#), Java API classes (Java), Laravel (PHP), Rails (Ruby), STL (C++), Django (Python), Android, Bất kỳ ai bắt đầu công việc phát triển phần mềm nên làm quen với OOP và OO modelingCÁC PHƯƠNG PHÁP LẬP TRÌNHPhương pháp lập trình (PPLT)Các hướng dẫn, các bước để viết một chương trình trên máy tínhCó cách “nhìn” về việc xây dựng các chương trình máy tínhCác phương pháp lập trình:Tuyến tính (Imperative)Có cấu trúc (Structured) Thủ tục (Procedural)Hướng đối tượng (Object oriented)Chức năng (Functional)Khai báo (Declarative)Lịch sử của PPLTXâ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ênLịch sử của PPLTC++/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)Tính an toàn (security)Các phương pháp lập trình chí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 đầuLậ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ệnhLậ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ìnhCó những đoạn lệnh được viết lặp đi lặp lại nhiều lầnLập trình có cấu trúcLà dạng mở rộng của lập trình tuyến tínhChương trình có tổ chức, cấu trúc lệnh logic hơnĐặc điểm:Các cấu trúc lệnh: lệnh điều kiện, lệnh lặpTrừ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 trongLoại bỏ/ hạn chế lệnh gotoLập trình có cấu trúcKhuyết điểm:Khó phân công cho nhiều người cùng viếtDữ liệu được “thả tự do”Có những đoạn lệnh được viết lặp đi lặp lại nhiều lầnLập trình thủ tụ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, CLập trình thủ tụcPhâ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)Tiếp cận theo phương pháp top-downLập trình thủ tụ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ómLập trình thủ tụ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ụcLập trình thủ tụ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ìnhLậ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ượngInheritanceOOPPolymorphismEncapsulationReusabilityExtensibilitySecurityFlexibilityMụ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ệuLậ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 tái sử dụng codeTiếp cận bottom-upLậ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ồnLập trình Hướng đối tượng(Object-oriented Programming)LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGSự 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áĐối tượngThuộc tínhHành viThế 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ứcTương tác giữa các đối tượngTruyền thông điệpGọ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 vi (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.36Đố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.KHÁI NIỆM LỚP (class) VÀ ĐỐI TƯỢNG (object)Lớp?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?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Đối tượng?Một đối tượng là một thể hiện (instance) 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 giá trị thuộc tính khác nhauVD: một xe đạp có thể đang chạy ở vận tốc 15 mph/ một xe khác có thể là đang chạy ở vận tốc 10 mph6.42Ví dụKhai báo cho lớp XeDapĐối tượng của lớp XeDapCác thành phần trong 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)Tương tác giữa các đối tượngThô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 tinCÁC ĐẶC TÍNH CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGCác đặc tính của hướng đối tượngTính đóng gói (Encapsulation)Ẩn thông tin (Information Hiding)Giao tiếp (Interface)Tính thừa kế (Inheritance)Tính đa hình (Polymorphism)Tính đóng góiChe giấu việc thực thi chi tiết của một đối tượngTính đóng góiGiao tiếp: Cung cấp các phương thức cần thiết để sử dụng đối tượngẨn thông tinCách thức 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ếAnimals6.51Tính thừa kế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 Cùng một hành động có thể được thực hiện khác nhau bởi các đối tượng/các lớp khác nhauNgữ 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ượngBướ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ớpBước 2: Thiết kế các lớp Thiết kế thuộc tính, các hành độngBướ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
Các file đính kèm theo tài liệu này:
- lap_trinh_dung_javachuong1_tongquanvelthuongdoituong_8615.pptx