Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
685,24 KB
Nội dung
Slide 1/81 Ch ng 03ươ L P – KI U D LI U TR U T NGỚ Ể Ữ Ệ Ừ ƯỢ CLASS – ABSTRACT DATA TYPE Slide 2/81 Ôn t pậ • ADT : Khaí quát hóa m t t p đ i t ng thành m t ki u d li u.ộ ậ ố ượ ộ ể ữ ệ • ADT có th là m t c u trúc ho c m t class.ể ộ ấ ặ ộ • Object = các thu c tính mô t (thành ph n d li u)+ các hành vi ộ ả ầ ữ ệ (thành ph n hàm)ầ • class: ADT cho m t t p các đ i t ng t ng t nhau (cùng data, ộ ậ ố ượ ươ ự cùng functions). • Instance: M t mô t c a đ i t ng trong b nh c a ch ng trình.ộ ả ủ ố ượ ộ ớ ủ ươ • Ba khái ni m c b n trong OOP: Đóng gói, Th a k , đa hình.ệ ơ ả ừ ế • Đóng gói (encapsulation) : Gói d li u + hành vi (code), bên ngoài ữ ệ ch có th truy c p m t s thu c tính ho c hành vi c a đ i t ng ỉ ể ậ ộ ố ộ ặ ủ ố ượ c a m t l p thông qua các công c giao ti p.ủ ộ ớ ụ ế • Th a k : M t l p có th th a h ng d li u và hành vi c a l p ừ ế ộ ớ ể ừ ưở ữ ệ ủ ớ cha. M t ngôn ng OOP có th h tr đ n th a k ho c đa th a ộ ữ ể ỗ ợ ơ ừ ế ặ ừ k .ế • Đa hình: Kh năng cho phép vi t l i code c a m t hành vi đ c ả ế ạ ủ ộ ượ th a k đ t o ra nh ng khác bi t trong ng x gi a l p cha và l p ừ ế ể ạ ữ ệ ứ ử ữ ớ ớ con cho cùng m t hành vi.ộ • G i thông đi p là yêu c u m t đ i t ng th c thi m t hành vi mà ử ệ ầ ộ ố ượ ự ộ đ i t ng này có.ố ượ Slide 3/81 M c tiêuụ • N m v ng c u trúc c a m t l p.ắ ữ ấ ủ ộ ớ • N m v ng các ch th truy c p.ắ ữ ỉ ị ậ • Gi i thích đ c constructor và destructor.ả ượ • Gi i thích đ c khái ni m đ i t ng hi n ả ượ ệ ố ượ ệ hành. • Truy c p thành ph n th a k t l p cha.ậ ầ ừ ế ừ ớ • Hi n th c đ c l p b ng Java.ệ ự ượ ớ ằ Slide 4/81 N i dungộ 3.1- C u trúc 1 l p và access modifiersấ ớ 3.2- S d ng m t l pử ụ ộ ớ 3.3- Ch th thisỉ ị 3.4- Overloading m t hành viộ 3.5- Hành vi kh i t o (constructor)ở ạ 3.6- Ch th superỉ ị 3.7- Hành vi h y (destructor)ủ 3.8- Thành ph n staticầ 3.9- Ch th finalỉ ị 3.10- Ph ng pháp gi i bài toán v i Javaươ ả ớ 3.11- Ch y ch ng trình có tham s v i JCreatorạ ươ ố ớ 3.12- M t s l p c b n c a Javaộ ố ớ ơ ả ủ Slide 5/81 3.1- C u trúc 1 l p và access modifiersấ ớ • L p: Hi n th c chung cho m t t p các đ i t ng có ớ ệ ự ộ ậ ố ượ cùng đ c đi m và hành vi.ặ ể • M t l p có th là l p con c a m t l p đã có.ộ ớ ể ớ ủ ộ ớ • Hi n th c l p:ệ ự ớ – Khai báo m c cho phép s d ng.ứ ử ụ – Khai báo l p chaớ – Khai báo các thành ph n thu c tính.ầ ộ – Hi n th c code các hành vi.ệ ự • L p và m i thành ph n c n ph i ch đ nh m c đ cho ớ ỗ ầ ầ ả ỉ ị ứ ộ phép truy c p (tính b o m t) ậ ả ậ access modifier • M i ngôn ng OOP quy đ nh cú pháp riêng cho vi c ỗ ữ ị ệ hi n th c l p.ệ ự ớ Slide 6/81 C u trúc m t l pấ ộ ớ Field_1 Field_2 Method_1() Method_2() class B Các gi i h n truy c pớ ạ ậ 1. Cho phép truy c p t do (ậ ự public) 2. Ch cho phép trong cùng m t gói ỉ ộ truy c pậ 3. Không cho bên ngoài truy c p ậ (private). 4. Ch cho l p con truy c p ỉ ớ ậ (protected). 5. Không cho phép l p con hi u ớ ệ ch nh (ỉ final). Access Modifiers class A là con Slide 7/81 Cú pháp khai báo class trong Java [Modifier] class CLASSNAME extends FATHERCLASSNAME { [Modifier] DataType1 Property1 [=Value]; [Modifier] DataType2 Property2 [=Value]; [Modifier] DataType MethodName( DataType Arg,…) { <code> } } Không có modifier : M c đ nh là friendly, cho phép các đ i t ng ặ ị ố ượ thu c các class cùng package ( cùng th m c)truy c pộ ư ụ ậ Slide 8/81 Đ c tính truy xu tặ ấ Modifier private friendly protected public Cùng class YES YES YES YES Cùng gói, khác class NO YES YES YES l p con trong ớ cùng gói v i ớ l p chaớ NO YES YES YES Khác gói, khác l pớ NO NO NO YES L p con khác ớ gói v i l p chaớ ớ NO NO YES YES Slide 9/81 3.2- S d ng m t l pử ụ ộ ớ • Đ nh nghĩa bi n ị ế đ i t ng.ố ượ • Bi n đ i t ng ế ố ượ trong Java là tham kh o (đ a ả ị ch ) c a vùng ỉ ủ nh ch a d li u ớ ứ ữ ệ c a đ i t ng.ủ ố ượ obj 1000 data 1000 ClassName obj ; obj= new ClassName(); Slide 10/81 Thí d 1ụ L p public thì tên file.java ph i trùng v i tên l pớ ả ớ ớ Vì khi bên ngoài truy c p, nhìn tên file là bi t tên l pậ ế ớ Error N u không là l p public, ế ớ tên l p và tên file có th khác nhauớ ể Vì l p này ch dùng trong m t gói (package)ớ ỉ ộ [...]... static là CODE TOÀN CỤC và chỉ thao tác lên dữ liệu static Truy xuất dữ liệu và code này thông qua tên lớp hoặc một đối tượng thuộc lớp có thành phần static (1) ClassName.StaticMember (2) ClassName obj= new ClassName(); obj StaticMember Slide 32/81 Dữ liệu static- Thí dụ Truy xuất static data bằng tên lớp Truy xuất static data bằng tên đối tượng thuộc lớp Slide 33/81 Hành vi static- Thí dụ Nhận xét... đối tượng Một số ngôn ngữ OOP ( C++, C#) cho phép ta viết code sẽ được thực thi vào lúc đối tượng chết nhằm trả tài nguyên đã cấp phát động Java chỉ dùng cách cấp phát đối tượng động, có trình gom rác riêng và không hỗ trợ hành vi hủy Slide 31/81 3.8- Thành phần static • Đôi khi ta muốn một dữ liệu, một đoạn code, một hành vi là toàn cục để trongmột lớp Dùng chỉ thị static • Dữ liệu static là DỮ LIỆU... constructor có trong một lớp thường là những dạng dữ liệu của đối tượng mà ta muốn có ngay lúc ban đầu Slide 27/81 3.6- Chỉ thị super • Dùng để truy xuất dữ liệu hoặc hành vi kế thừa từ lớp cha Gọi constructor của lớp cha Gọi method thừa kế từ lớp cha Slide 28/81 super Ý định: Xây dựng hành vi outData trong lớp con bằng cách gọi hành vi outData của lớp cha rồi xuất cost Error Trong Java, nếu dùng... constructor của lớp con Slide 29/81 super Viết lại hành vi outData trong lớp con Slide 30/81 3.7- Hành vi hủy (destructor) • Đối tượng sống kể từ khi ta khởi tạo đối tượng (bằng toán tử new) cho đến hết khối chứa nó • Khi ra khỏi khối chứa đối tượng, ta nói đối tượng đã chết { ClassName obj = new ClassName(); } Góc nhìn thời gian: Thời gian sống của đối tượng Góc nhìn nội dung văn bản chương trình:... (signature) trong cùng một lớp • Chữ ký bao gồm: – Số lượng tham số – Thứ tự các kiểu của các tham số Slide 19/81 Thí dụ 3 hành vi cùng có tên là setData Slide 20/81 3.5- Hành vi khởi tạo (constructor) • Hành vi được thực thi ngay vào lúc khởi tạo đối tượng • Một lớp có thể có 0/1/n contructor • Cú pháp constructor [Modifier] ClassName ( Parameters) { } Chú ý: - Constructor không có kiểu trả trị Slide... đối tượng Nếu một lớp có constructor thì constructor mặc định của ngôn ngữ không được sử dụng nữa Slide 24/81 Thí dụ: lớp có nhiều constructor Viết lại default constructor constructor tự tạo Copy constructor Slide 25/81 Thí dụ: gọi hành vi trong constructor Slide 26/81 Gợi ý khi xây dựng constructor • Việc thường làm là gán trị cho các thành phần dữ liệu của đối tượng • Số constructor có trong một lớp. .. để chỉ thị đối tượng đang thao tác Nhờ đó phân biệt được tham số x và thành phần x Slide 11/81 Thí dụ 3 access modifier là private mà trong main vẫn truy cập được vì main nằm trong khai báo lớp Slide 12/81 Thí dụ 4 Sửa lại lớp VONGTRON: không có main Xây dựng lớp SDVT sử dụng lớp VONGTRON để trong cùng thư mục Biên dịch có lỗi vì trong lớp SDVT không thể truy cập private method của lớp VONGTRON Slide... ngoài sử dụng mà không cần khai báo biến đối tượng thuộc lớp Do vậy, hành vi static thường có tham số không liên quan đến đối tượng thuộc lớp Slide 34/81 Code static- Thí dụ Cú pháp đưa một đoạn code static: static { } Code static được thực thi ngay khi lớp có code này được tham khảo tới Slide 35/81 Code static- Thí dụ Code static chỉ tham khảo dữ liệu static Slide 36/81 ... constructor chuẩn - Ngôn ngữ có sẵn 1 constructor chuẩn làm công việc xóa trống vùng nhớ chứa dữ liệu của đối tượng Trị 0/null - Khi một lớp đã có constructor thì constructor mặc định của ngôn ngữ không còn được áp dụng nữa - Tập các constructor hình thành các cách định nghĩa đối tượng - Định nghĩa một đối tượng không theo một mẫu constructor sẽ gây lỗi Slide 22/81 Thí dụ: constructor của ngôn ngữ... private method của lớp VONGTRON Slide 13/81 Thí dụ 5 Lớp SDVT truy cập trực tiếp được thuộc tính x của vong tròn v vì khai báo thuộc tính này là “friendly” – không chỉ định modifier Hai file này cùng thư mục nên SDVT truy cập được thuộc tính này Slide 14/81 Thí dụ 6 Trong lớp VONGTRON, x,y,r có thuộc tính protected Nhưng, lớp SDVT cùng thư mục với lớp VONGTRON nên có thể truy cập thuộc tính này Slide . l p đã có.ộ ớ ể ớ ủ ộ ớ • Hi n th c l p:ệ ự ớ – Khai báo m c cho phép s d ng.ứ ử ụ – Khai báo l p chaớ – Khai báo các thành ph n thu c tính.ầ ộ – Hi n th c code các hành vi.ệ ự • L p và m i thành. Slide 1/81 Ch ng 03ươ L P – KI U D LI U TR U T NGỚ Ể Ữ Ệ Ừ ƯỢ CLASS – ABSTRACT DATA TYPE Slide 2/81 Ôn t pậ • ADT : Khaí quát hóa m t t p đ i t. trùng tên nh ng khác ch ký ư ữ (signature) trong cùng m t l p.ộ ớ • Ch kýữ bao g m:ồ – S l ng tham s .ố ượ ố – Th t các ki u c a các tham s .ứ ự ể ủ ố Slide 20/81 Thí dụ 3 hành vi cùng có tên