Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
3,77 MB
Nội dung
Review OOP Trang H ng Sơn thson@hoasen.edu.vn 0908.54.64.22 Hoa Sen University -1- N i dung T ng quan v OOP L p đ i tư ng Các tính ch t b n Interface v i ngôn ng C# || Java - 18/09/2010 - - Hoa Sen University - -2- T ng quan OOP (Object-Oriented Programming) k thu t l p trình h tr cơng ngh đ i tư ng l yñ i tư ng làm n n t ng OOP ñư c xây d ng n n t ng c a khái ni m l p trình c u trúc s tr u tư ng hóa d li u - 18/09/2010 - - Hoa Sen University - -3- T ng quan Ưu ñi m: • Gi m th i gian phát tri n ng d ng • Tăng su t đơn gi n hố đ ph c t p b o trì m r ng ng d ng • D dàng b o trì, nâng c p m r ng ng d ng Khuy t ñi m: • Các đ i tư ng thi u tính linh ñ ng có yêu c u phát tri n m i • Khơng h tr đóng gói nh ng hành vi ñan liên quan ñ n nhi u l p (các toán th c t hay g p ph i) mã chương trình có th n m l n l n, r i rác khó qu n lý AOP (Aspect-Oriented Programming) - 18/09/2010 - - Hoa Sen University - -4- L p ñ i tư ng L p m t ki u d li u (do ngư i dùng ñ nh nghĩa) dùng ñ t o ñ i tư ng L p m t khn m u, đ nh nghĩa đ c m tính ch t, hành vi, tr ng thái chung c a m t s ñ i tư ng L p khái ni m mang tính tr u tư ng hố ð i tư ng m t th c th c th c a m t l p L p “ o” - ñ i tư ng “th c” Ví d : • B n thi t k nhà nhà c th qu n 1,3,5, … • Lồi chó chó Lulu, Misa, Rita, - 18/09/2010 - - Hoa Sen University - -5- L p đ i tư ng L p Car: • Tính ch t: - Màu s c - Hãng s n xu t - Giá c • Hành vi: - Kh i ñ ng - Tăng / gi m t c - B t / t t ñèn - 18/09/2010 - ð i tư ng Car1: • Tính ch t: - Màu s c: xanh dương - Hãng s n xu t: Toyota - Giá c : 20.000$ • Hành vi: - Kh i ñ ng - Tăng / gi m t c - B t / t t ñèn - Hoa Sen University - ð i tư ng Car2: • Tính ch t: - Màu s c: màu đ - Hãng s n xu t: Ford - Giá c : 30.000$ • Hành vi: - Kh i đ ng - Tăng / gi m t c - B t / t t ñèn -6- ð i tư ng ð i tư ng = d li u + hành vi c a d li u Các thu t ng khác: • D li u (data) = Trư ng (fields) = Tính ch t (properties) = Thu c tính (attributes) = Bi n (variables) = Thơng tin (informations) = ð c m (characteristics) = … • Hành vi (behaviors) = Phương th c (methods) = Thao tác (operations) = Hàm (functions) = … - 18/09/2010 - - Hoa Sen University - -7- ð i tư ng ð i tư ng = thu c tính + phương th c Thu c tính: • Bao g m bi n, h ng s , hay tham s n i t i • Giá tr c a thu c tính th hi n tr ng thái c a m t ñ i tư ng Phương th c: • Dùng đ mơ t th c hi n hành vi c a ñ i tư ng • M i phương th c thư ng ñư c ñ nh nghĩa m t hàm, n i dung c a ch a thao tác ñ th c hi n hành vi - 18/09/2010 - - Hoa Sen University - -8- Các tính ch t b n - 18/09/2010 - - Hoa Sen University - -9- Tính đóng gói Là ch ràng bu c d li u hành vi d li u thành m t kh i th ng nh t ñ i tư ng Không cho phép ngư i s d ng ñ i tư ng thay ñ i tr c ti p tr ng thái n i t i c a m t đ i tư ng, ch có phương th c n i t i c a ñ i tư ng m i cho phép thay ñ i tr ng thái c a (accessor methods) đ mb os tồn v n d li u c a đ i tư ng “ðóng” đ i v i d li u “m ” ñ i v i hành vi - 18/09/2010 - - Hoa Sen University - - 10 - Created by Trang H ng Sơn + Messages to Classes or Invoke Static Methods: public class Foo { public void doX() { // static method call on class Calendar Locale[] locales = Calendar.getAvailableLocales(); } } + Polymorphic Messages and Cases: Payment {abstract} Payment is an abstract superclass, with concrete subclasses that implement the polymorphic authorize operation authorize() {abstract} CreditPayment DebitPayment authorize() authorize() object in role of abstract superclass polymorphic message :Register :Payment {abstract} doX authorize :DebitPayment stop at this point – don’t show any further details for this message :Foo authorize :CreditPayment :Bar authorize doA doX doB separate diagrams for each polymorphic concrete case -7- Created by Trang H ng Sơn + Asynchronous and Synchronous Calls: public class ClockStarter { public void startClock() { Thread t = new Thread( new Clock() ); t.start(); // asynchronous call to the 'run' method on the Clock System.runFinalization(); // example follow-on message } } // objects should implement the Runnable interface, in Java to be used on new threads public class Clock implements Runnable { public void run() { while (true) { // loop forever on own thread } } } -8- Created by Trang H ng Sơn GRASP principles (General Responsibility Assignment Software Patterns): thi t k hư ng trách nhi m (Responsibility-Driven Design) - “knowing” responsibility: + private encapsulated data + related objects + things it can derive or calculate - “doing” responsibility: + take action (create an object, a calculation) + initiate action in other objects + control / coordinate actions in other objects - nguyên lý b n: + Controller: V n ñ : ñ i tư ng ñ ng sau UI layer ñ nh n s tương tác c a Actor ñi u n ho t ñ ng c a h th ng ? Gi i quy t: - Facade controller: x lý cho toàn b h th ng, ñ i tư ng root - Session controller: x lý cho m t use case c th Ví d : - ð i tư ng u n ho t ñ ng c a game Monopoly ? - Facade controller: ñ i tư ng root ? MonopolyGame -9- Created by Trang H ng Sơn - Session controller: use case “PlayGame” PlayMonopolyGameSession PlayMonopolyGameHandler ho c + Creator: V n ñ : ñ i tư ng t o ñ i tư ng A ? Gi i quy t: ñ i tư ng B t o ñ i tư ng A khi: - B “contains” A (ch a) - B records A (ghi nh n) - B closely uses A (s d ng) - B has the initializing data for A (kh i t o d li u) Ví d : - ð i tư ng t o ñ i tư ng Square ? Board - 10 - Created by Trang H ng Sơn + Information Expert: V n ñ : ñ i tư ng n m gi thơng tin c a đ i tư ng A ? Gi i quy t: b sung thao tác l y thơng tin Ví d : - ð i tư ng n m gi thơng tin v đ i tư ng Square ? Board + Low Coupling: V n ñ : đ gi m s nh hư ng có s thay đ i, nói cách khác gi m s móc n i, s ph thu c l n ? Gi i quy t: s l n g i hàm ñ n ñ i tư ng khác nh t có th Ví d : public class A { public void doX() { Square s = new Dog().getSquare("aaa"); } } public class Dog { public void getSquare(String name) { Map squares = new Board().getAllSquares(); - 11 - Created by Trang H ng Sơn -return squares.get(name); } } public class A { public void doX() { Square s = new Board().getSquare("aaa"); } } + High Cohesion: V n ñ : ñ ñưa thao tác vào ñúng trách nhi m c a ñ i tư ng ? Gi i quy t: phân rõ trách nhi m c a t ng ñ i tư ng c th Ví d : trách nhi m c a MonopolyGame Controller (ñi u n, ñi u hư ng ho t đ ng, ch khơng ph i gi i quy t, th c thi thao tác c th đó) - 12 - Created by Trang H ng Sơn Case study “H th ng thư vi n ñi n t ”: - Use Case “ðăng nh p”: : Thu Thu : FormChinh : Thuthu : CtrlDangNhap : FormDangNhap 1: Yeu cau dang nhap 2: Load form DangNhap 3: Nhap thong tin dang nhap (username, password) 4: Boolean := authorize(username, password) 5: Boolean := check(username, password) 6: True 7: True 8: Chuyen den trang quan ly - Use Case “Tra c u sách”: : Ban Doc : FormChinh : CtrlTraCuuSach : FormTraCuuSach : Sach 1: Yeu cau tra cuu sach 2: Load form TraCuuSach 3: Nhap thong tin tra cuu (tuKhoa, tieuChi) 4: ArrayList := searchBook(tuKhoa, tieuChi) 5: ArrayList := search(tuKhoa,tieuChi) 6: Danh sach ket qua tim kiem 7: Danh sach ket qua tim kiem 8: Danh sach cac quyen sach tim duoc 9: Chon mot quyen sach 10: Sach := getBook(maSach) 11: Sach := get(maSach) 12: Sach 13: Sach 14: Thong tin chi tiet sach - 13 - Created by Trang H ng Sơn - Use Case “Thêm sách”: : Thu Thu : FormChinh : CtrlThemSach : FormThemSach : Sach 1: Yeu cau them sach 2: Load form ThemSach 3: Nhap thong tin sach moi 4: Boolean := insertBook(thongTinSach) 5: Boolean := validate(thongTinSach) 6: [ validate = True ] Boolean := insert(thongTinSach) 7: True 8: True 9: Thong bao them sach cong - 14 - Created by Trang H ng Sơn IMPLEMENTATION DIAGRAM Component Diagram: - Là sơ ñ mô t thành ph n ph n m m c a h th ng (software components) s ph thu c gi a chúng sơ ñ ki n trúc h th ng ph n m m - Thành ph n ph n m m: module ch c c a h th ng, có th là: + gói thư vi n jar (Java) ho c dll (Microsoft) + chương trình ph c v exe + d ch v h th ng (service) +… - Ví d : + Winform application: GUI (Views) eLibrary Lib (Controllers, Models, Utils, ) MS.SQLServer + Distributed application: GUI (Views) eLibrary Service (Controllers, Models, Utils, ) MS.SQLServer + Web application: Client eLibrary Server (Views, Controllers, Models, Utils, ) MS.SQLServer + Web service application: Client eLibrary Server (Views) eLibrary Services (Controllers, Models, Utils, ) MS.SQLServer -1- Created by Trang H ng Sơn Deployment Diagram: - Là sơ đ mơ t ki n trúc h th ng ph n c ng giao th c mà nodes (máy tính, máy in, đ u đ c th t , …) trao đ i thơng p v i - Ví d , Web application: External Client Internal Client HTTP HTTP eLibrary Server TCP/IP MS.SQLServer -2- Interview Các công vi c c a m t thư vi n ñi n t đư c làm rõ d n d n thơng qua đ i tho i gi a phân tích viên khách hàng, ngư i ñ t hang xây d ng h th ng Hãy xem xét k ño n h i tho i gi a h đư c mơ t v n t t dư i ñây - Phân tích viên: ð c gi đ n đâu thư vi n ñ làm nh ng vi c gì? - Khách hàng: ð c gi đ n hang lang c a thư vi n đ tìm thơng tin v tài li u mu n mư n Sau tìm th y sách (t p chí) đ mư n, ñ c gi ñ n giá sách (t p chí) đ l y sách (t p chí) - Phân tích viên: ð c gi tìm ki m nh ng thơng tin gì? - Khách hàng: Thơng tin v sách hay tài li u v tác gi c a tài li u ñư c s p theo th t abc Các thơng tin đư c ghi phích đ t h p khác ho c đư c truy c p t máy tính đ t t i hành lang - Phân tích viên: CSDL c a thơng tin đ ñâu - Khách hàng: CSDL ñư c lưu máy c a m ng LAN, cịn máy đ u cu i ñư c ñ t thư vi n - Phân tích viên: Có th tìm tài li u theo lo i d li u nào? - Khách hàng: D li u đ tìm sách t p chí tương t nhau, bao g m s xu t b n (ISBN), tên, năm xu t b n, nhà xu t b n Nhưng sách cịn có lo i d li u khác tác gi , th lo i t p chí có t p lĩnh v c - Phân tích viên: Có nh ng lo i sách t p chí thư vi n? - Khách hàng: Ngồi sách t p chí dư i d ng gi y cịn có dư i d ng ñi n t Các tài li u ñi n t ñư c lưu CSDL c a máy ch - Phân tích viên: Ai qu n tr kh i lư ng l n tài li u d li u ñi n t này? - Khách hàng: Nhân viên thư vi n - Phân tích viên: ð n có th th y rõ ràng r ng m i đ c gi đ u có quy n tìm ki m tài li u máy tính đ mư n Có th đ c sách hay t p chí lưu tr dư i d ng s Có th mư n sách hay t p chí Bây gi th o lu n v ti n trình mư n sách - Khách hàng: Sau tìm tài li u mư n b t kỳ có th thư vi n đ u có th mư n tài li u Có th mư n tài li u in t i bàn cho mư n c a thư vi n N u quy n sách hay t p t p chí thư vi n th thư đưa cho đ c gi - Phân tích viên: V y, có hai trư ng h p x y ra, cịn h t sách (t p chí) thư vi n? - Khách hàng: N u h t tài li u ñ c gi có th ñ t mư n trư c; có tài li u thư vi n s thơng báo cho đ c gi ð c gi ph i ñ n thư vi n ñ mư n Chú ý r ng tài li u s ch dành cho ñ c gi ñã ñăng ký trư c vòng hai tu n l k t ngày thơng báo - Phân tích viên: N u cịn tài li u thư vi n sao? - Khách hàng: Trong trư ng h p th thư s ki m tra d li u v ñ c gi xem đ c gi có th thư vi n hay khơng N u có th N u có th , th thư ghi l i ISBN c a tài li u mư n thông tin v ñ c gi mư n vào s mư n, ñ ng th i ghi vào CSDL mư n M i ñ c gi ch ñư c mư n m t s sách (t p chí) nh t đ nh, kho n th i gian nh t ñ nh - Phân tích viên: Th thư có th mư n sách hay t p chí khơng? - Khách hàng: Có, m i th thư có m t b n ghi mư n - Phân tích viên: Ai th c hi n vi c ghiu thông tin mư n tài li u vào CSDL? - Khách hàng: Ngoài máy tr m m ng đ tìm ki m tài li u, th thư cịn có máy tr m đ ki m tra thơng tin v đ c gi ,tài li u có cịn khơngvà xem danh sách đơc gi ph i tr tài li u h t h n mư n - Phân tích viên: V i tài li u n t sao? - Khách hàng: Nó ln ln có s n thư vi n - Phân tích viên: Trư ng h p đ c gi khơng tìm th y sáchtrong danh sách tìm ki m th thư có khun nh khơng? - Khách hàng: Th thư có th khuy n cáo đ c gi , đ c gi có đ ng ý hay khơng - Phân tích viên: Trên ta trao ñ i ho t ñ ng c a nhân viên thư vi n liên quan ñ n vi c mư n, ñ t trư c, khuy n cáo tìm ki m Bây gi trao đ i v giao thi p gi a th thư v i ñ c gi , sách t p chí - Khách hàng: Nhi m v c a th thư t p trung vào mư n tr sách,t p chí H g i thơng báo đ n ph i tr sách h t h n mư n, ñ n ñ t trư c ñ mư n ñã có sách thư vi n - Phân tích viên: Thư vi n có th mư n nhân viên đ qu n tr kh i d li u l n hay khơng? - Khách hàng: Thư vi n có nhân viên nh p li u làm vi c máy tr m H nh p li u b o trì, cịn chun gia CSDL th c hi n qu n tr CSDL - Phân tích viên: N u mu n tr thành đ c gi c a thư vi n c n làm gì? - Khách hàng: H ph i đ n phịng ti p ñón ñ làm th t c Th thư ghi b n ghi m i ñ ghi h tên, ñ i ch nơi ch ng minh thư, s ñi n tho i e-mail ngày tháng năm sinh Sau ñăngvà in b n ký, th thư in th thư vi n ñưa cho ñ c gi in b n ghi gi y ñ lưu h sơ thư vi n - Phân tích viên: Nh p thông tin v sách t p chí th nào? - Khách hàng: Sách t p chí có r t nhi u thu c tính chung,bao g m ISBN, tên, năm xu t b n nhà xu t b n M i n ph m cịn có s lư ng b n thư vi n đơi chúng cịn kèm theo d li u đa phương ti n - Phân tích viên: Thư vi n có h tr d li u đa phương ti n cho n ph m ñi n t n ph m gi y? - Khách hàng: Không quan tâm đ n hình th c n ph m Thư vi n h tr d li u ña phương ti n cho c n ph m ñi n t n ph m gi y - Phân tích viên: Khi tìm ki m thơng tin v tài li u, tơi có th xem d li u đa phương ti n? D li u ña phương ti n nh ng d li u lo i gì? - Khách hàng: N u k t qu tìm ki m máy tính d li u đa phương ti n đ c gi có th xem D li u ña phương ti n bao g m văn b n, âm thanh, nh hình nh đ ng - Phân tích viên: Nh p thơng tin v tác gi th nào? - Khách hàng: Thông tin v tác gi ñư c nh p riêng Chúng bao g m h tên, ngày tháng năm sinh nơi sinh Khi nh p thông tin v sách, n u tên tác gi có danh sách tác gi nhân viên nh p li u ch vi c ch n d li u t danh sách, n u khơng ph i t o thơng tin tác gi Ngồi cịn ph i nh p lo i sách - Phân tích viên: Cịn t p chí sao? - Khách hàng: S t p chí lĩnh v c c a - Phân tích viên: Như ñã nói t n t i hai loai lưu tr thơng tin (đi n t gi y), v y, bi u di n d li u ña phương ti n bì gi y b ng cách nào? - Khách hàng: D li u ña phương ti n ch lưu tr dư i khuôn d ng s Th gi y ñư c in t b n ghi ch ch a có m t vài thơng tin c n thi t cho th - Phân tích viên: Ta kh o sát sách, t p chí thơng tin tác gi - Khách hàng: S lư ng n ph sách S li u c n quan tâm s th y công vi c c a th thư bao g m nh p tên , ñ c gi Nhưng s lư ng n ph m sao? m đư c nh p đ ng th i nh p thông tin v lư ng m i s lư ng có thư vi n - Phân tích viên: Có th cho r ng cơng vi c phân tích v cơng vi c c a th thư ñã ñư c th c hi n ñ y ñ ? - Khách hàng: ðúng v y! Created by Trang H ng Sơn Cài ñ t l p Student theo thi t k sau: Tính ñóng gói (encapsulation): thay ñ i l p Student theo thi t k sau: Tính tr u tư ng (abstraction) + Tính k th a (inheritance): cài đ t l p Animal, Dog, Cat theo thi t k sau: Tính đa hình (polymorphism): 4.1 N p ch ng hàm (overloading method): cài ñ t l p Adder theo thi t k sau: 4.2 Ghi ch ng hàm (overriding method): cài ñ t l p Parent, Children theo thi t k sau: -1- Created by Trang H ng Sơn Giao di n (interface): 5.1 Cài ñ t l p / giao di n Animal l p Dog, Cat theo thi t k sau: 5.2 Cài ñ t giao di n Animal, Friendly l p Dog, Cat theo thi t k sau: -2- ... ng sách H th ng thêm s lư ng cho sách có H th ng th? ?ng báo nh p thành c? ?ng th ng th? ?ng báo th? ?ng tin sách kh? ?ng h p l H th ng yêu c u th thư nh p l i th? ?ng tin Th thư nh p l i th? ?ng tin sách -7-... chí H th ng hi n th danh sách sách tìm ñư c B n ñ c ch n m t quy n sách đ xem th? ?ng tin chi ti t H th ng hi n th th? ?ng tin chi ti t sách H th ng th? ?ng báo kh? ?ng có sách tho t khố tiêu chí: H. .. sách ñã có CSDL: H th ng h i th thư có thêm s lư ng sách hay kh? ?ng Th thư thêm s lư ng sách H th ng thêm s lư ng cho sách có H th ng th? ?ng báo thêm sách thành c? ?ng th ng th? ?ng báo th? ?ng tin sách