Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về cách tiếp cận hướng đối tượng - Châu Thị Bảo Hà
PP tiếp cận hướng đối tượng
Phương pháp phân tích và thiết kế theo hướng đối tượng
Phân tích: ngôn ngữ đặc tả mô hình UML
Thiết kế: dựa trên các mô hình phân tích, cài đặt ứng dụng/chương trình theo một ngôn ngữ lập trình hướng đối tượng.
Các bước phân tích thiết kế hướng đối tượng
Mô tả bài toán
Đặc tả yêu cầu
Trích chọn đối tượng
Mô hình hóa lớp đối tượng
Thiết kế tổng quan
Thiết kế chi tiết
So sánh sự khác biệt (tt)
Ưu nhược điểm
Phương pháp hướng đối tượng:
Hạn chế truy cập từ bên ngoài
Tiết kiệm tài nguyên
Khó theo dõi luồng dữ liệu
Không thiên hướng về giải thuật
Phương pháp cấu trúc:
Thiên hướng về giải thuật
Dễ theo dõi luồng giải thuật
Khi thay đổi cấu trúc thường phải viết lại giải thuật
Chương trình đơn giản dễ hiểu
32 trang |
Chia sẻ: thucuc2301 | Lượt xem: 754 | 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: Tổng quan về cách tiếp cận hướng đối tượng - Châu Thị Bảo Hà, để 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Ề CÁCH TIẾP CẬN HƯỚNG ĐỐI TƯỢNGMục tiêuNhận biết sự khác biệt giữa lập trình truyền thống và lập trình hướng đối tượng (OOP)Nhận diện một số ngôn ngữ OOPNhận biết các khái niệm cơ bản của OOPNội dung1.1. Phương pháp tiếp cận của lập trình truyền thống1.2. Phương pháp tiếp cận hướng đối tượng1.3. So sánh sự khác biệt giữa hai cách tiếp cận 1.4. Xu hướng phát triển của lập trình hướng đối tượng Chương trình sẽ được thực hiện tuần tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trìnhĐặc trưngĐơn giản: tuần tựĐơn luồng: chỉ một luồng xử lýƯu – Khuyết:Ưu: chương trình đơn giản, dễ hiểuKhuyết: không thể dùng phương pháp này cho những ứng dụng phức tạpNgày nay, chỉ tồn tại trong phạm vi các module nhỏ nhất của các phương pháp lập trình khác1.1. PP tiếp cận của LT truyền thốngLập trình tuyến tínhChương trình chính được chia nhỏ công việc thành các chương trình con, mỗi chương trình con thực hiện một công việc xác địnhChương trình chính sẽ gọi chương trình con theo kịch bản định trướcMỗi chương trình con có thể được gọi nhiều lần, bất kỳ, không theo thứ tự khai báoĐặc trưng: Chương trình = cấu trúc dữ liệu + giải thuậtƯu – Khuyết:Ưu: Chương trình dễ đọc dễ hiểu, tư duy giải thuật rõ ràngKhuyết: Khi thay đổi cấu trúc thì giải thuật cũng thay đổi theoPhù hợp với phạm vi trong mỗi module, không phù hợp với chương trình có nhiều module1.1. PP tiếp cận của LT truyền thống Lập trình cấu trúc1.1. PP tiếp cận của LT truyền thống Lập trình cấu trúc (tt)Bài toánCTDLTác vụ(hàm)Chương trìnhstruct XX{.....}type Fun (XX x){.....}void main(){ XX x; Fun(x);}Xđ danh từXđ động từDữ liệu và xử lý tách biệtKhông đảm bảo được tính nhất quán và các ràng buộc dữ liệuKhông tiết kiệm tài nguyênKhó bảo trì1.1. PP tiếp cận của LT truyền thốngHạn chếVí dụ:Chương trình là sự hoạt động của các đối tượng Giống tự nhiênMột chương trình là một trật tự các lời yêu cầu đối tượng thực hiện hành vi của mìnhĐóng gói dữ liệu nên hạn chế việc truy cập tự doSử dụng lại mã nguồn, hạn chế việc viết lại mã nguồn1.2. PP tiếp cận hướng đối tượng Sơ lược về OOPĐối tượng (object): dữ liệu + hành viĐối tượng phải thuộc một lớp (class)Một nhóm đối tượng được biễu diễn bởi một lớpLớp = data (biến, thuộc tính) + methods1.2. PP tiếp cận hướng đối tượng1.2. PP tiếp cận hướng đối tượngVí dụ 1: Class và Object1.2. PP tiếp cận hướng đối tượngVí dụ 2: Class và ObjectClass: BallAttributes: radius, colorBehavior: thrown, bounced, rolledObject1radius = 5color = redthrown, bounced, rolledObject3radius = 3color = greenthrown, bounced, rolledObject2radius = 10color = bluethrown, bounced, rolled1.2. PP tiếp cận hướng đối tượngGiải bài toán theo OOPVấn đềThuộc tínhTác vụ (hành vi)Chương trìnhclass XX { type1 prop1; type2 prop2; ....... type Method1(...) { } .....}void main(){ XX x; // object variable x.Method(...);}Xđ danh từXđ động từBao gói dữ liệu và hành vi thành class1.2. PP tiếp cận hướng đối tượngMô hình lớp đối tượngClassName- Attributes+ BehaviorsPropertiesDataFieldsVariablesInstance dataMethods1.2. PP tiếp cận hướng đối tượngVí dụ mô hình lớp đối tượngRectangle width height+ Calculate area+ Calculator perimeterStudent Student code Name Gender Birthday Birthplace Class Grade 1 Grade 2+ Calculate average+ View grade+ Pay tuitionTrừu tượng (Abtraction)Đóng gói (Encapsulation)Thừa kế (Inheritance)Đa hình (Polymophism)1.2. PP tiếp cận hướng đối tượngĐặc trưngTrừu tượng có nghĩa là làm việc với một cái gì đó mà chỉ cần biết làm thế nào để sử dụng mà không cần biết bên trong làm thế nào mà nó hoạt độngVí dụ:Hãy nêu 1 món đồ dùng trong nhà và mô tả cách sử dụng nó (vd/TV, máy giặt, laptop,). Sau đó thử mô tả các thành phần bên trong của món đồ này cũng như mô tả chi tiết kỹ thuật làm nó hoạt động Mô tả cách vận hành dễ hơn mô tả chi tiết chính xác làm sao nó hoạt động. Và hầu như mọi người thậm chí ko biết có những thành phần gì bên trong UD – những UD mà con người sd hàng ngày1.2. PP tiếp cận hướng đối tượngTính trừu tượngTrừu tượng tức là chung chung, không cụ thể. Đặc tính này được thể hiện trong lớp trừu tượng (abstract class)1.2. PP tiếp cận hướng đối tượngTính trừu tượngNhóm những gì có liên quan với nhau vào làm mộtChe dấu thông tin (information hiding)Đóng gói để che dấu một số thông tin và chi tiết cài đặt nội bộ để bên ngoài không nhìn thấyKhông cho phép người sử dụng đối tượng thay đổi trạng thái nội tại của một đối tượngChỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nóViệc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối tượng1.2. PP tiếp cận hướng đối tượngTính đóng góiLà cơ chế cho phép một lớp B có được các thuộc tính và hành vi của lớp A, như thể các thuộc tính và hành vi đó đã được định nghĩa tại lớp BĐiều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lạiVí dụ:1.2. PP tiếp cận hướng đối tượngTính thừa kếABVehicleCarAnimalDogCatMouseTính đa hình là khả năng một đối tượng có thể tham chiếu đến nhiều loại đối tượng khác nhau tại những thời điểm khác nhauThể hiện thông qua việc gửi các thông điệp (message)Ví dụ:1.2. PP tiếp cận hướng đối tượngTính đa hìnhHolyday day;day = new Holyday();day.celebrate();day = new Christmas();day.celebrate();Holiday+ celebrate() : voidChristmas+ celebrate() : voidC++ (Borland C++, Visual C++)Hỗ trợ cả POP lẫn OOP Lai OOP. Đối tượng là biến của chương trình. Hàm main() là POPHỗ trợ đa thừa kếJava, C#, Visual BasicChỉ hỗ trợ OOP, hàm main phải nằm trong một lớpChỉ hỗ trợ đơn thừa kế1.2. PP tiếp cận hướng đối tượngNgôn ngữ lập trìnhPP truyền thốngPP hướng đối tượngĐi từ tổng quan rồi chia nhỏ thành các bài toán con, cụ thể hơnĐi từ chi tiết đến trừu tượng hóa ở mức caoCó ràng buộc giữa cấu trúc dữ liệu và các thủ tục hoặc hàm đi kèmDữ liệu được đóng gói để hạn chế truy cập tự do trực tiếp vào dữ liệuKhó sử dụng lại mã nguồnCho phép sử dụng lại mã nguồn để tiết kiệm tài nguyênPhù hợp với các bài toán nhỏ, có luồng dữ liệu rõ ràngThường được áp dụng cho các bài toán lớn, phức tạp, có nhiều luồng dữ liệu khác nhau1.3. So sánh sự khác biệt giữa 2 cách tiếp cậnHướng thành phần (Component-oriented Programming)Hướng Agent (Agent-oriented Programming)Hướng Aspect (Aspect-oriented Programming)1.4. Xu hướng phát triển của LT HĐTXuất phát từ lập trình hướng đối tượngGiải quyết bài toán từ các thành phần (component) có tính độc lập với nhau, mỗi thành phần đảm nhiệm một công việc nhất địnhCác thành phần được lắp ghép với nhau để thỏa các yêu cầu phần mềmƯu điểmChia sẻ các thành phần đã xây dựngTiết kiệm công sức lập trình dựa trên các thành phần có sẵn1.4. Xu hướng phát triển của LT HĐT Hướng thành phầnLập trình hướng agent giống như hướng thành phần nhưng có mức trừu tượng cao hơnCác agent là các thành phần có khả năng hoạt động độc lậpCác agent có thể chủ động liên lạc với các agent khác khi cần1.4. Xu hướng phát triển của LT HĐT Hướng AgentMỗi thành phần thực hiện một luồng công việc hoặc một khía cạnh của vấn đềPhần mềm được xây dựng từ việc tổng hợp các luồng công việcCho phép đóng gói những hành vi có liên quan đến nhiều lớp1.4. Xu hướng phát triển của LT HĐT Hướng AspectƯu điểm của lập trình HĐT?Phân biệt lớp và đối tượng?Khi xây dựng lớp đối tượng, cần xác định những gì?Tổng kếtExamplesList attributes and behaviors of studentsStudent code, name, gender, birthday, birthplace, class, grade 1, grade 2,Calculate average grade, view grade, pay tuition,Suppose that you write a program to calculate area and perimeter of a rectangle. Find objects and list attributes and behaviors of themObject: RectangleAttributes: width, heightBehaviors: Calculate area, calculator perimeterExamples (cont.)Suppose that you want to write a program to monthly pay the employees of a company. Paying employees based on products they made, in addition, you have to compute Social Security and Medicare taxes. Find objects and list attributes and behaviors of themObject: EmployeeAttributes: employee number, name, address, social security number, products, Behaviors: compute employee pay, compute employee Social Security, compute Medicare taxes, mail employee a paycheck once a month,Phương pháp phân tích và thiết kế theo hướng đối tượngPhân tích: ngôn ngữ đặc tả mô hình UMLThiết kế: dựa trên các mô hình phân tích, cài đặt ứng dụng/chương trình theo một ngôn ngữ lập trình hướng đối tượng.Các bước phân tích thiết kế hướng đối tượngMô tả bài toánĐặc tả yêu cầuTrích chọn đối tượngMô hình hóa lớp đối tượngThiết kế tổng quanThiết kế chi tiết1.2. PP tiếp cận hướng đối tượng1.3. So sánh sự khác biệt (tt)Ưu nhược điểmPhương pháp hướng đối tượng:Hạn chế truy cập từ bên ngoàiTiết kiệm tài nguyênKhó theo dõi luồng dữ liệuKhông thiên hướng về giải thuậtPhương pháp cấu trúc:Thiên hướng về giải thuậtDễ theo dõi luồng giải thuậtKhi thay đổi cấu trúc thường phải viết lại giải thuậtChương trình đơn giản dễ hiểu
Các file đính kèm theo tài liệu này:
- oop_01_tong_quan_lthdt_4162_1807371.pptx