Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về lập trình hướng đối tượng OOP - Trần Minh Thái

Nội dung 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 Vì sao hướng đối tượng? Các đặc trưng cơ bản của lập trình hướng đối tượng Một số ngôn ngữ lập trình hướng đối tượng

pptx40 trang | Chia sẻ: candy98 | Lượt xem: 595 | Lượt tải: 0download
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: Tổng quan về lập trình hướng đối tượng 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. 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 05 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 Website: www.minhthai.edu.vn Nộ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ồngChương 1. Tổng quan về OOPNội dungLị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úcVì sao hướng đối tượng?Cá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ượngLịch sử của 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ênLịch sử của PPLT?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 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.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ế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ượ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