Tài Liệu Lập Trình Hướng Đối Tượng Full

102 221 0
Tài Liệu Lập Trình Hướng Đối Tượng Full

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đây là tài liệu lập trình hướng đối tượng dành cho những bạn học sinh, sinh viên và những người đam mê lập trình. Chúng tôi đã tổng hợp toàn bộ kỹ thuật lập trình từ căn bản đến nâng cao, bao gồm 12 bài trong đó.

8/24/2011 Nội dung Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 01 Tổng quan OOP Lập trình hướng đối tượng Công nghệ hướng đối tượng Ngôn ngữ lập trình Java Ví dụ tập Nội dung 1.1 Lịch sử phát triển NNLT Lập trình hướng đối tượng Công nghệ hướng đối tượng Ngôn ngữ lập trình Java Ví dụ tập  a Hợp ngữ (Assembly language): 1.1 Lịch sử phát triển NNLT (2)  1.1 Lịch sử phát triển NNLT (3) b NNLT cấu trúc/thủ tục:  c NNLT hướng đối tượng: 8/24/2011 1.2 Đối tượng gì?  Đối tượng giới thực Đối tượng giới thực  Là thực thể cụ thể mà thông thường sờ, nhìn thấy hay cảm nhận Đối tượng phần mềm Đối tượng Đối tượng phần mềm Mô hình hóa đối tượng 10 Tương tác đối tượng Car Tom House Đối tượng phần mềm Xe Đạp Reality Tree Object-oriented modeling Model drives House Car lives in Tree Tom 11 12 8/24/2011 Gọi hàm vs Gửi thông điệp   Thông điệp vs Phương thức Gọi hàm (Call function)  Thông điệp  Phương thức Gửi thông điệp 13 Lớp-Ví dụ Lớp Xe đạp Hướng cấu trúc vs Hướng ĐT?  Hướng cấu trúc:  Hướng đối tượng: 14 Khai báo cho lớp XeDap Đối tượng lớp XeDap 15 Công nghệ đối tượng (OT) Nội dung 16 Lập trình hướng đối tượng Công nghệ hướng đối tượng Ngôn ngữ lập trình Java Ví dụ tập (Object Technology - A Manager’s Guide, Taylor, 1997) 17 18 8/24/2011 2.1 Lịch sử phát triển OT 2.2 OT sử dụng đâu?  Simula C ++ The UML Late 1980s 1967 Các hệ thống Client/Server phát triển Web 1996 1972 1991 2004 Smalltalk Java UML 19 20 2.2 OO sử dụng đâu? (2) Hệ nhúng (embedded system) Hệ thống thời gian thực (real-time) Phân cấp Mô-đun hóa Hướng đối tượng Đóng gói  Trừu tượng hóa  2.3 Các nguyên lý OO 21 22 b Đóng gói (Encapsulation) a Trừu tượng hóa (Abstraction) Tăng cường tính mềm dẻo 23 24 23 8/24/2011 c Mô đun hóa (Modularity) d Phân cấp (Hierarchy) Tài sản Gia tăng mức độ trừu tượng hóa Tài khoản ngân hàng Chứng khoán Giảm mức độ trừu tượng hóa Tiết kiệm Tiên gửi Cổ phiếu Bất động sản Các loại giấy tờ có giá trị 25 26 25 26 Nội dung 3.1 Java gì? Lập trình hướng đối tượng Công nghệ hướng đối tượng Ngôn ngữ lập trình Java Ví dụ tập  Java ngôn ngữ lập trình HĐT phát triển Sun Microsystems Green Team and James Gosling (the leader) 27 3.2 Các ấn Java 3.1 Java gì?   28 Ngày nay, nhắc đến Java, không nhắc đến ngôn ngữ mà công nghệ, tảng phát triển Java có cộng đồng phát triển mạnh mẽ 29 30 8/24/2011 Lịch sử phát triển J2SE           Lịch sử phát triển J2SE (2) JDK 1.1.4 (Sparkler): 12 tháng 9, 1997 JDK 1.1.5 (Pumpkin): tháng 12, 1997 JDK 1.1.6 (Abigail): 24 tháng 4, 1998 JDK 1.1.7 (Brutus): 28 tháng 9, 1998 JDK 1.1.8 (Chelsea): tháng 4, 1999 J2SE 1.2 (Playground): tháng 12, 1998 J2SE 1.2.1 (none): 30 tháng 3, 1999 J2SE 1.2.2 (Cricket): tháng 7, 1999 J2SE 1.3 (Kestrel): tháng 5, 2000 J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001      J2SE 1.4.0 (Merlin) 13 tháng 2, 2002 J2SE 1.4.1 (Hopper) 16 tháng 9, 2002 J2SE 1.4.2 (Mantis) 26 tháng 6, 2003 J2SE (1.5.0) (Tiger) 29 tháng 9, 2004 Java SE (Mustang), 11 tháng 12, 2006    Các cập nhật đưa vào năm 2007 Bản cập nhật đưa tháng năm 2008 Java SE (Dolphin), 4/2008 31 32 3.3 Mô hình dịch Java 3.2 Nền tảng Java (Java platform)  a Mô hình biên dịch truyền thống: 33 34 3.3 Mô hình dịch Java (2)  b Mô hình dịch Java: 3.3 Mô hình dịch Java (3)  Máy ảo Java (Java Virtual Machine):  35 Máy ảo Java trái tim ngôn ngữ Java 36 8/24/2011 3.4 Các tính Java  3.4 Các tính Java (2) Java thiết kế:    Ngôn ngữ lập trình mạnh, đầy đủ tính hướng đối tượng Dễ học, cú pháp tương tự C++ …  Mạnh mẽ  Hướng đối tượng 37 38 3.4 Các tính Java (3)  Đơn giản  Network capable 3.4 Các tính Java (3)  Java có 50 từ khóa 39 40 3.4 Các tính Java (4)  3.4 Các tính Java (5) Bảo mật 41  Đa luồng (Multi-threaded)  Khả chuyển (Portable) 42 8/24/2011 3.4 Các tính Java (6)  3.5 Các kiểu chương trình Java Các môi trường phát triển  Java Development Kit  Integrated Development Environments (IDEs):  Ứng dụng (Application)  Applet 43 44 Nội dung 3.5 Các kiểu chương trình Java (2)  Ứng dụng Web (Web application) Lập trình hướng đối tượng Công nghệ hướng đối tượng Ngôn ngữ lập trình Java Ví dụ tập 45 46 Ví dụ - HelloWorld Ví dụ (tiếp) // HelloWorld.java // Chuong trinh hien thi dong chu “Hello World” public class HelloWorld { /* Phuong thuc main se duoc goi dau tien bat cu ung dung Java nao*/ public static void main(String args[]){ System.out.println( “Hello World!" ); } // ket thuc phuong thuc main } // ket thuc lop HelloWorld    Chú thích (Comment) Java phân biệt chữ hoa chữ thường Từ khóa có sẵn Java:    47 class: Khai báo lớp public: Quy định phạm vi truy cập Tên lớp chứa hàm main phải trùng với tên file java 48 8/24/2011 Biến môi trường Cài đặt chạy thử chương trình Java      Bước 1: Cài đặt j2sdk1.5/6/7, cài đặt biến môi trường (nếu dùng cmd) Bước 2: Cài trình soạn thảo TextPad/JCreator/NetBean/Eclipse… Bước 3: Lập trình/Viết mã nguồn Bước 4: Dịch  cmd: javac HelloWorld.java  Textpad: Ctrl +  JCreator: F7 Build  Build Project/File Bước 5: Chạy chương trình  cmd: java HelloWorld.class  Textpad: Ctrl +  JCreator: F5 Run  Run Project/File   PATH = …;C:\Program Files\Java\jdk1.6\bin CLASSPATH = C:\Program Files\Java\jdk1.6\lib;.;C:\Program Files\Java\jdk1.6\include 49 50 Ví dụ - GUI import javax.swing.JOptionPane; public class FirstDialog{ public static void main(String[] args){ JOptionPane.showMessageDialog(null, ”Xin chao ban!”); System.exit(0); } } 51 52 Ví dụ – Nhập, xuất liệu import javax.swing.JOptionPane; public class HelloNameDialog{ public static void main(String[] args){ String result; result = JOptionPane.showInputDialog(“Hay nhap ten ban:”); JOptionPane.showMessageDialog(null, ”Xin chao “+ result + “!”); System.exit(0); } } 53 8/24/2011 Mục tiêu học  Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội   LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 02 Cú pháp Java    Nêu quy ước đặt tên chương trình Java, tạo định danh hợp lệ Mô tả kiểu liệu Java cách sử dụng Các toán tử Giải thích phạm vi biến Sử dụng câu lệnh điều khiển, cấu trúc điều kiện, cấu trúc lặp rẽ nhánh Khai báo, khởi tạo biến mảng Java Nội dung Nội dung Định danh Các kiểu liệu Toán tử Cấu trúc điều khiển Mảng Định danh Các kiểu liệu Toán tử Cấu trúc điều khiển Mảng Định danh  Định danh (2) Định danh:  Quy ước với định danh (naming convention): 8/24/2011 1.2 Lợi ích biểu đồ use case  1.2 Lợi ích biểu đồ use case (2) Giống hợp đồng người phát triển phần mềm khách hàng Communication End User Domain Expert Identification Use Case Verification Users Nội dung 2.1 Tác nhân (actor) Tổng quan biểu đồ use case Các thành phần biểu đồ use case Biểu đồ hoạt động Actor 10 Ví dụ tác nhân Tìm kiếm tác nhân hệ thống 11  Đặt câu hỏi để tìm tác nhân  Thông tin tác nhân? 12 8/24/2011 2.2 Use case  Những điều nên tránh tạo UC Use case mô tả chức hệ thống Use Case 13 14 2.3 Mối liên hệ (relationship)    2.3.1 Mối liên hệ actor với Mối liên hệ actor với Mối liên hệ actor use case Mối liên hệ use case với  Generalization  Giao tiếp 15 16 2.3.2 Mối liên hệ actor với use case (2) 2.3.2 Mối liên hệ actor với use case  Thiết lập quan hệ Tác nhân Use Case    Association Actor Chiều quan hệ chiều tín hiệu gửi Từ tác nhân tới Use Case Từ Use Case tới tác nhân: Use Case 17 18 8/24/2011 a Quan hệ generalization 2.2.3 Mối liên hệ use case  Được sử dụng để vài tính chất chung nhóm tác nhân UC 19 20 b Quan hệ c Quan hệ 21 22 Đọc biểu đồ use case Nội dung View Report Card Course Catalog Register for Courses Maintain Professor Information Maintain Student Information Student Login Tổng quan biểu đồ use case Các thành phần biểu đồ use case Biểu đồ hoạt động Registrar Select Courses to Teach Close Registration Professor Submit Grades Billing System 23 24 8/24/2011 Biểu đồ hoạt động Biểu đồ hoạt động (2) Flow of Events This use case starts when the Registrar requests that the system close registration Activity The system checks to see if registration is in progress If it is, then a message is displayed to the Registrar and the use case terminates The Close Registration processing cannot be performed if registration is in progress Activity Boolean constraint Activity Activity Activity For each course offering, the system checks if a professor has signed up to teach the course offering and at least three students have registered If so, the system commits the course offering for each schedule that contains it Activity Boolean constraint 25 26 AD for Register for course use case Initial activity Decision Activity/Action Select Course Concurrent Threads (Tiến trình song song) [ delete course ] Gọi AD khác Delete Course [ add course ] Synchronization Bar (Fork) Guard Condition (Điều kiện ràng buộc) Check Schedule [ checks completed ] Assign to Course Check Pre-requisites [ checks failed ] Resolve Conflicts Thanh đồng (phân nhánh) Synchronization Bar (Join) Thanh đồng (Kết hợp) Transition (Chuyển dịch) Update Schedule Final activity 27 28 8/24/2011 Mục tiêu Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 11 Biểu đồ tương tác     Mô tả mục đích Biểu đồ tương tác Có khả phân loại Biểu đồ tương tác Nắm thành phần biểu đồ trình tự biểu đồ giao tiếp So sánh biểu đồ biểu đồ giao tiếp Nội dung Biểu đồ tương tác Biểu đồ trình tự Biểu đồ giao tiếp Các đối tượng cần phải cộng tác  Nội dung Biểu đồ tương tác Biểu đồ trình tự Biểu đồ giao tiếp Các đối tượng tương tác thông điệp Các đối tượng trở nên vô nghĩa chúng không cộng tác với Thông điệp getCourseOfferings(forSemester) : Car buyer :RegistrationController :CourseCatalogSystem 8/24/2011 Biểu đồ tương tác gì? Biểu đồ tương tác (Interaction diagram)  Mô hình hóa phương diện động hệ thống  Thể tương tác đối tượng     Các biểu đồ tương tác  Biều đồ trình tự  Biểu đồ giao tiếp (Sequence diagram) (Communication diagram) (Timing Diagram) (Interaction Overview Diagram) Biểu đồ tương tác  Biểu đồ thời gian  Biểu đồ tương tác tổng quan Biểu đồ thời gian Biểu đồ Biểu đồ tương tác tổng quan Biểu đồ giao tiếp Biểu đồ thời gian biểu diễn trạng thái line (dòng)  Biểu đồ tương tác tổng quan Biểu đồ thời gian biểu diễn trạng thái area (khu vực) 8/24/2011 Biểu đồ trình tự (Sequence Diagram – SD) Nội dung Biểu đồ tương tác Biểu đồ trình tự Biểu đồ giao tiếp  Là loại biểu đồ tương tác Ví dụ: SD for “Register for Course”, “Create a Schedule” sub-flow : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem Biểu đồ trình tự: Đối tượng :RegisterForCoursesForm : Course Catalog :RegistrationController SWTSU Catalog : CourseCatalogSystem 1: create schedule( ) 2: get course offerings( ) 3: get course offerings(forSemester) 4: get course offerings( ) Các đối tượng nặc danh (Anonymous object) Đối tượng có tên (named object) 5: display course offerings( ) 6: display blank schedule( ) Đường sống (Lifeline) ref Select Offerings Biểu đồ trình tự: Tác nhân :RegisterForCoursesForm : Student :RegistrationController SWTSU Catalog : CourseCatalogSystem Biểu đồ trình tự: Thông điệp :RegisterForCoursesForm : Course Catalog :RegistrationController : Student SWTSU Catalog : CourseCatalogSystem : Course Catalog 1: create schedule( ) 2: get course offerings( ) 3: get course offerings(for Semester) 4: get course offerings( ) Các tác nhân cụ thể (Actor instance) 5: display course offerings( ) 6: display blank schedule( ) Thông điệp gọi (Reflexive/self-call Message) Thông điệp (Message) Trả (Return) 8/24/2011 Biểu đồ trình tự: Kích hoạt :RegisterForCoursesForm :RegistrationController : Student SWTSU Catalog : CourseCatalogSystem Biểu đồ trình tự: Khung tương tác : Course Catalog : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 1: create schedule( ) 1: create schedule( ) 2: get course offerings( ) 2: get course offerings( ) 3: get course offerings(forSemester) 3: get course offerings(for Semester) 4: get course offerings( ) 4: get course offerings( ) 5: display course offerings( ) 5: display course offerings( ) 6: display blank schedule( ) Kích hoạt (Activation) 6: display blank schedule( ) Toán tử (Operator) ref Khung tương tác (Interaction Frame) Select Offerings Nội dung procedure dispatch foreach (lineitem) if (product.value>$10K) careful.dispatch else regular.dispatch end if end for if (needsConfirmation) messenger.confirm end procedure Biểu đồ giao tiếp gì?  Biểu đồ tương tác Biểu đồ trình tự Biểu đồ giao tiếp Ví dụ: Biểu đồ giao tiếp Biểu đồ giao tiếp nhấn mạnh vào việc tổ chức đối tượng tham gia vào tương tác 5: display course offerings( ) 6: display blank schedule( ) 1: create schedule( ) : Course Catalog : RegisterForCoursesForm : Student 2: get course offerings( ) 4: get course offerings( ) 3: get course offerings(forSemester) : RegistrationController : CourseCatalogSystem Biểu đồ giao tiếp 8/24/2011 Biểu đồ giao tiếp: Đối tượng Biểu đồ giao tiếp: Tác nhân : RegisterForCoursesForm : RegisterForCoursesForm : Course Catalog : Student Đối tượng (Object) Tác nhân (Actor) SWTSU Catalog : CourseCatalogSystem : RegistrationController : RegistrationController Nội dung biểu đồ giao tiếp: Các liên kết thông điệp SWTSU Catalog : CourseCatalogSystem SD CD - Giống Tương đương ngữ nghĩa …  Thông điệp (message) 5: display course offerings( ) 6: display blank schedule( ) 1: create schedule( ) : RegisterForCoursesForm : Student 2: get course offerings( ) Liên kết (Link) : Course Catalog 4: get course offerings( ) 3: get course offerings(forSemester) : RegistrationController : CourseCatalogSystem SD CD – Khác Biểu đồ Biểu đồ giao tiếp 8/24/2011 Mục đích  Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội   LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 12 Biểu đồ lớp  Mô tả khung nhìn tĩnh hệ thống cách đưa vào mô hình Minh họa cách đọc hiểu biểu đồ lớp Mô hình hóa mối liên kết (association) kết tập (aggregation) cách mô hình chúng vào biểu đồ lớp Mô hình tổng quát hóa (generalization) biểu đồ lớp Nội dung Nội dung Biểu đồ lớp (Class diagram) Liên kết (Association) Kết tập (Aggregation) Tổng quát hóa (Generalization) Biểu đồ lớp (Class diagram) Liên kết (Association) Kết tập (Aggregation) Tổng quát hóa (Generalization) 4 1.1 Lớp (Class) Biểu diễn thuộc tính  attributeName : Type = Default Class_Name attribute1 attribute2 attribute3 method1() method2() method3() 8/24/2011 Mô tả phương thức Phạm vi truy cập (Visibility) operationName([direction] parameter:class, ):returnType private public protected Phạm vi truy cập biểu diễn nào? Phạm vi (Scope) Class1 - privateAttribute + publicAttribute # protectedAttribute - privateOperation () + publicOPeration () # protecteOperation () Class1 - classifierScopeAttr - instanceScopeAttr + classifierScopeOp () + instanceScopeOp () 10 Ví dụ: Scope 1.2 Biểu đồ lớp gì?  Biểu đồ lớp tồn lớp Student - name - address - studentID - nextAvailID : int + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester) + getSchedule ([in] forSemester : Semester) : Schedule + hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean # passed ([in] theCourseOffering : CourseOffering) : boolean + getNextAvailID () : int 11 12 8/24/2011 Ví dụ Biểu đồ lớp Biểu đồ lớp (Class Diagram – CD)  Khung nhìn tĩnh hệ thống CloseRegistrationForm Schedule  Có cách tốt để tổ chức biểu đồ lớp? CloseRegistrationController - semester + open() + close registration() Student + get tuition() + add schedule() + get schedule() + delete schedule() + has pre-requisites() + commit() + select alternate() + remove offering() + level() + cancel() + get cost() + delete() + submit() + save() + any conflicts?() + create with offerings() + update with new selections() LoginForm + is registration open?() + close registration() RegistrationController RegisterForCoursesForm Professor Schedule - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad CloseRegistrationForm CloseRegistrationController Professor Student + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() Course CourseOffering CourseCatalogSystem BillingSystem 13 14 Gói (package) Ví dụ: Registration Package Registration CloseRegistrationForm CloseRegistrationController RegisterForCoursesForm RegistrationController University Artifacts 15 16 Nội dung Liên kết (association) gì? Biểu đồ lớp (Class diagram) Liên kết (Association) Kết tập (Aggregation) Tổng quát hóa (Generalization)  Mối liên hệ ngữ nghĩa hai hay nhiều lớp Student 17 Schedule Course 18 8/24/2011 Biểu diễn bội số quan hệ Bội số quan hệ (Multiplicity) Unspecified Exactly One Professor instructor CourseOffering * * Zero or More * One or More * Zero or One (optional value) Specified Range Multiple, Disjoint Ranges 2, 20 Nội dung 1 Zero or More 19 Ví dụ bội số quan hệ RegisterForCoursesForm RegistrationController Biểu đồ lớp (Class diagram) Liên kết (Association) Kết tập (Aggregation) Tổng quát hóa (Generalization) 1 Student Schedule * * CourseOffering 21 Kết tập (aggregation) gì?  22 Ví dụ kết tập Là dạng đặc biệt liên kết mô hình hóa mối quan hệ toàn thể-bộ phận (wholepart) RegisterForCoursesForm RegistrationController 1 1 Whole Student 1 Schedule * Part 23 * CourseOffering 24 8/24/2011 Cấu thành (Composition) gì? Association, Aggregation and Composition  Mối quan hệ lớp (relationship) Part Whole Whole Part Composition 25 26 Ví dụ – Association Ví dụ – Aggregration vs Composition public class StudentRegistrar { public StudentRegistrar (){ (new RecordManager()).initialize(); } } 27 28 Nội dung Tổng quát hóa (Generalization) Biểu đồ lớp (Class diagram) Liên kết (Association) Kết tập (Aggregation) Tổng quát hóa (Generalization)  29 Là mối liên hệ “là loại” (“is a kind of”) 30 8/24/2011 Lớp trừu tượng lớp cụ thể (Abstract and Concrete Class) Ví dụ Đơn kế thừa Ancestor Account Discriminator Abstract operation + communicate () Communication + withdraw() + createStatement() Generalization Relationship There are no direct instances of Animal Lion Tiger Subclasses (children) + communicate () + communicate () - balance - name - number Superclass (parent) Abstract class Animal All objects are either lions or tigers Savings 31 Ví dụ Đa kế thừa FlyingThing Checking 32 Descendents Đa hình (Polymorphism) gì? Animal Multiple Inheritance Airplane Helicopter Bird Wolf Horse Manufacturer A Manufacturer B Manufacturer C OO Principle: Encapsulation 33 Remote Control 34 Tổng quát hóa: Thực thi đa hình Animal + communicate () Lion + communicate () Without Polymorphism if animal = “Lion” then Lion communicate else if animal = “Tiger” then Tiger communicate end Tiger + communicate () With Polymorphism Animal communicate 35 [...]... dựng lớp Tạo và sử dụng đối tượng 1 2 3 Trừu trượng hóa dữ liệu Đóng gói và xây dựng lớp Tạo và sử dụng đối tượng 3 4 1.1 Trừu tượng hóa  2 loại trừu tượng hóa 1.1 Trừu tượng hóa (2)   Trừu tượng hóa điều khiển Trừu tượng hóa dữ liệu 1 8/24/2011 1.2 Trừu tượng hóa dữ liệu trong OOP  Đối tượng trong thực tế phức tạp 7 8 1.2 Trừu tượng hóa dữ liệu (3)  1.2 Trừu tượng hóa dữ liệu (2) Any model that... trò của trừu tượng hóa Giải thích về đóng gói và che giấu thông tin Xây dựng lớp  LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 03 Đóng gói và xây dựng lớp, tạo và sử dụng đối tượng   Định nghĩa lớp, thực hiện ẩn Tạo các phương thức, các trường/thuộc tính Tạo và sử dụng đối tượng    Phương thức khởi tạo Khai báo và khởi tạo đối tượng Sử dụng đối tượng 2 Nội dung 1 2 3 Nội dung Trừu trượng hóa dữ liệu Đóng gói... khởi tạo đối tượng Phương khởi tạo mặc định (default constructor)  Đối tượng được tạo ra, thể hiện hóa (instantiate) từ một mẫu chung (lớp) 49 50 3.3 Khai báo và khởi tạo đối tượng (2)  3.3 Khai báo và khởi tạo đối tượng (3) Đối tượng cần được khởi tạo trước khi sử dụng  Ví dụ: BankAccount account = new BankAccount(); 51 52 3.3 Khai báo và khởi tạo đối tượng (4) 3.3 Khai báo và khởi tạo đối tượng (5)... String t = s; int i = 201; int j = i; i 201 j 201 29 Tiến trình chạy ngầm 30 5 8/24/2011 Phương thức void finalize()  3.4 So sánh đối tượng Lớp nào cũng có phương thức finalize()  Dữ liệu thường với toán tử ==? 31 32 3.4 So sánh đối tượng (2)   3.4 So sánh đối tượng (3) Đối với các đối tượng, toán tử == có ý nghĩa khác Ví dụ:  Bất kỳ đối tượng nào cũng có phương thức equals Employee a = new Employee(1);... môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội   LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 04 Các kỹ thuật xây dựng lớp và sử dụng đối tượng   Nêu được bản chất, vai trò và biết sử dụng kỹ thuật chồng phương thức, chồng phương thức khởi tạo Thành viên đối tượng, thành viên lớp Hiểu về cách thức quản lý bộ nhớ và đối tượng trong Java Nắm về cách thức truyền tham số phương thức Biết cách... Test{ public static void main(String args[]){ BankAccount account1 = new BankAccount(); BankAccount account2 = new BankAccount(“Hoang”); } } 3.4 Sử dụng đối tượng  58 57 3.4 Sử dụng đối tượng (2)  Đối tượng cung cấp các hoạt động phức tạp hơn các kiểu dữ liệu nguyên thủy public class BankAccount{ private String owner; private double balance; public BankAccount(String name) { setOwner(name); } public void... (2)   Accessor (getter): Mutator (setter): 7 8/24/2011 Nội dung 1 2 3 3.1 Khởi tạo dữ liệu Trừu trượng hóa dữ liệu Đóng gói và xây dựng lớp Tạo và sử dụng đối tượng Student - name - address - studentID - dateOfBirth Nguyễn Thu Hương Nguyễn Hoàng Nam Tạo  Hủy … 44 3.2 Phương thức khởi tạo Khởi tạo và hủy bỏ đối tượng  Hải Phòng… Hà Nội… 43  Mục đích chính? Student - name - address - studentID -... Main St.” - studentID = 9 - dateOfBirth = “03/10/1967” Nội dung 1 2 3 Trừu trượng hóa dữ liệu Đóng gói và xây dựng lớp Tạo và sử dụng đối tượng sv2:Student - name = “D Hatcher” - address = “456 Oak Ln.” - studentID = 2 - dateOfBirth = “12/11/1969” 18 3 8/24/2011 2.1 Đóng gói (Encapsulation)  2.1 Đóng gói (2) Một đối tượng có hai khung nhìn: Client BankAccount - owner: String - balance: double Methods... tính 9 10 11 12 2 8/24/2011 1.3 Lớp vs Đối tượng 13 14 Biểu diễn lớp trong UML  Thuộc tính (attribute) là gì? 3 thành phần: Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad Student - name - address - studentID - dateOfBirth + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() Lớp và đối tượng trong UML :Student Student - name... double balance; 2.3 Che giấu dữ liệu (Data hiding) public boolean debit(double amount){ if (amount > balance) return false; else { balance -= amount; return true; } } public void credit(double amount){ balance += amount; } 37 } 38 Cơ chế che giấu dữ liệu 39 BankAccount - owner: String - balance: double + debit(double): boolean +credit(double) 40 41 42 Cơ chế che giấu dữ liệu (2)   Accessor (getter):

Ngày đăng: 28/05/2016, 16:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan