Bài giảng Lý thuyết ngôn ngữ HĐT - Bài 01: Tổng quan về OOP

pdf 57 trang phuongnguyen 2160
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lý thuyết ngôn ngữ HĐT - Bài 01: Tổng quan về OOP", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ly_thuyet_ngon_ngu_hdt_bai_01_tong_quan_ve_oop.pdf

Nội dung text: Bài giảng Lý thuyết ngôn ngữ HĐT - Bài 01: Tổng quan về OOP

  1. Bé m«n C«ng nghƯ phÇn mỊm KHOA CƠNG NGHỆ THƠNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LÝ THUYẾT NGƠN NGỮ HĐT Bài 01. Tổng quan về OOP
  2. 2 Nội dung 1. Lập trình hướng đối tượng 2. Cơng nghệ hướng đối tượng 3. Ngơn ngữ lập trình Java 4. Ví dụ và bài tập
  3. 3 Nội dung 1. Lập trình hướng đối tượng 2. Cơng nghệ hướng đối tượng 3. Ngơn ngữ lập trình Java 4. Ví dụ và bài tập
  4. 4 1.1. Lịch sử phát triển của các NNLT • a. Hợp ngữ (Assembly language): ▫ Là một ngơn ngữ lập trình tuần tự, gần với tập các lệnh mã máy của CPU. ▫ Khĩ nhớ, khĩ viết, nhất là với những bài tốn phức tạp. ▫ Khĩ sửa lỗi, bảo trì.
  5. 5 1.1. Lịch sử phát triển của các NNLT (2) • b. NNLT cấu trúc/thủ tục:  Xây dựng chương trình dựa trên các hàm/thủ tục/chương trình con  Dữ liệu và xử lý (hàm) tách rời nhau  Các hàm khơng bắt buộc phải tuân theo một cách thức chung truy cập vào dữ liệu
  6. 6 1.1. Lịch sử phát triển của các NNLT (3) • c. NNLT hướng đối tượng: ▫ Thể hiện các thành phần của bài tốn là các “đối tượng” (object). ▫ Hướng đối tượng là một kỹ thuật để mơ hình hĩa hệ thống thành nhiều đối tượng.
  7. 7 1.2. Đối tượng là gì? • Đối tượng trong thế giới thực ▫ Ví dụ một chiếc ơ tơ • Liên quan đến chiếc ơ tơ: ▫ Các thơng tin về chiếc xe như: màu sắc, tốc độ, số km đã đi được, ▫ Các hoạt động của chiếc xe như: tăng tốc khi nhấn ga, giảm tốc khi đạp phanh,
  8. 8 Đối tượng thế giới thực  Một đối tượng thế giới thực là một thực thể cụ thể mà thơng thường chúng ta cĩ thể sờ, nhìn thấy hay cảm nhận được.  Tất cả cĩ trạng thái (state) và hành động (behaviour)
  9. 9 Đối tượng phần mềm  Các đối tượng phần mềm cĩ thể được dùng để biểu diễn các đối tượng thế giới thực.  Cũng cĩ trạng thái và hành động Trạng thái: thuộc tính (attribute; property) Hành động: phương thức (method)
  10. Đối tượng 10 Đối tượng phần mềm Đối tượng phần mềm Xe Đạp Đối tượng (object) là một Thuộc tính được xác định thực thể phần mềm bao bởi giá trị cụ thể gọi là bọc các thuộc tính và các thuộc tính thể hiện. phương thức liên quan. Một đối tượng cụ thể được gọi là một thể hiện.
  11. 11 Mơ hình hĩa đối tượng Car House Tom Reality Tree Object-oriented modeling Model drives House Car lives in Tree Tom
  12. 12 Tương tác giữa các đối tượng • Sự giao tiếp giữa các đối tượng trong thế giới thực: • Các đối tượng và sự tương tác giữa chúng trong lập trình ▫ Các đối tượng giao tiếp với nhau bằng cách gửi thơng điệp (message)
  13. 15 Hướng cấu trúc vs. Hướng ĐT? • Hướng cấu trúc: ▫ data structures + algorithms = Program ▫ (cấu trúc dữ liệu + giải thuật = Chương trình) • Hướng đối tượng: ▫ objects + messages = Program ▫ (đối tượng + thơng điệp = Chương trình)
  14. 16 1.3. Lớp đối tượng  Trong thế giới thực cĩ nhiều đối tượng cùng loại.  Chương trình hướng đối tượng cĩ nhiều đối tượng cùng loại chia sẻ những đặc điểm chung.  Ví dụ
  15. 17 Lớp • Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểu ▫ Ví dụ: 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 đĩ • Một đối tượng là một thể hiện cụ thể của một lớp. ▫ Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap • Mỗi thể hiện cĩ thể cĩ những thuộc tính thể hiện khác nhau ▫ Ví dụ: một xe đạp cĩ thể đang ở bánh răng thứ 5 trong khi một xe khác cĩ thể là đang ở bánh răng thứ 3.
  16. 18 Ví dụ Lớp Xe đạp Khai báo cho lớp XeDap Đối tượng của lớp XeDap
  17. 19 Nội dung 1. Lập trình hướng đối tượng 2. Cơng nghệ hướng đối tượng 3. Ngơn ngữ lập trình Java 4. Ví dụ và bài tập
  18. 20 2. Cơng nghệ đối tượng (OT) • Cơng nghệ đối tượng là một tập các quy tắc (trừu tượng hĩa, đĩng gĩi, đa hình), các hướng dẫn để xây dựng phần mềm, cùng với ngơn ngữ, cơ sở dữ liệu và các cơng cụ khác hỗ trợ các quy tắc này. (Object Technology - A Manager’s Guide, Taylor, 1997)
  19. 21 2.1. Lịch sử phát triển của OT • Các mốc chính của cơng nghệ đối tượng Simula C ++ The UML 1967 Late 1980s 1996 1972 1991 2004 Smalltalk Java UML 2
  20. 22 2.2. OT được sử dụng ở đâu? • Các hệ thống Client/Server và phát triển Web  Cơng nghệ đối tượng cho phép các cơng ty đĩng gĩi thơng tin doanh nghiệp trong các đối tượng và giúp phân phối quá trình xử lý qua mạng Internet hoặc một mạng máy tính.
  21. 23 2.2. OO được sử dụng ở đâu? (2) • Hệ nhúng (embedded system) • Hệ thống thời gian thực (real-time) ▫ Cơng nghệ đối tượng cho phép các hệ thống thời gian thực cĩ thể phát triển với chất lượng cao hơn và linh hoạt hơn  Hệ thống vệ tinh 4  Các hệ thống quốc phịng và hàng khơng vũ trụ 
  22. 24 2.3. Các nguyên lý cơ bản của OO Hướng đối tượng p ấ u u ừ ng hĩa ng đun hĩa đun Tr - Đĩng gĩi Đĩng Phân c Phân ượ t Mơ
  23. 25 a. Trừu tượng hĩa (Abstraction) • Là quá trình loại bỏ đi các thơng tin cụ thể và giữ lại những thơng tin chung. • Tập trung vào các đặc điểm cơ bản của thực thể, các đặc điểm phân biệt nĩ với các loại thực thể khác. • Phụ thuộc vào gĩc nhìn ▫ Quan trọng trong ngữ cảnh này nhưng lại khơng cĩ ý nghĩa nhiều trong ngữ cảnh khác. 25
  24. 26 Ví dụ: Trừu tượng hĩa Sinh viên Giáo viên Khĩa học diễn ra lúc 9:00 sáng các ngày thứ 3, 5, 7 Khĩa học (ví dụ đại số)
  25. 27 b. Đĩng gĩi (Encapsulation) • Che giấu, ẩn đi chi tiết thực hiện bên trong . Cung cấp cho thế giới bên ngồi một giao diện . Người dùng khơng phụ thuộc vào việc sửa đổi sự thực thi bên trong Tăng cường tính mềm dẻo
  26. 28 Minh họa việc đĩng gĩi • Giao diện thơng điệp (phương thức) của đối tượng Giáo sư Clark • Giáo sư Clark được yêu cầu dạy 4 lớp tháng tới Name: J Clark Employee ID: 567138 HireDate: 07/25/1991 SetMaxLoad(4) Status: Tenured Discipline: Finance MaxLoad:4 TakeSabbatical()
  27. 29 c. Mơ đun hĩa (Modularity) • Chia nhỏ hệ thống phức tạp thành những thành phần nhỏ cĩ thể quản lý được. • Cho phép người dùng hiểu biết về hệ thống. 29
  28. 30 Ví dụ: Mơ đun hĩa • Ví dụ, chia nhỏ một hệ thống phức tạp thành các mơ đun nhỏ hơn. Hệ thống quản lý xuất nhập sách Hệ thống kế tốn Hệ thống Hệ thống quản lý quản lý siêu thị sách nhân viên
  29. 31 d. Phân cấp (Hierarchy) Gia tăng mức độ Tài sản trừu tượng hĩa Tài khoản ngân hàng Chứng khốn Bất động sản Giảm mức độ Tiết kiệm Tiên gửi Cổ phiếu Các loại giấy tờ cĩ giá trị trừu tượng hĩa Các phần tử ở cùng cấp trong sơ đồ phân cấp thì cĩ cùng mức trừu tượng hĩa 31
  30. 32 Nội dung 1. Lập trình hướng đối tượng 2. Cơng nghệ hướng đối tượng 3. Ngơn ngữ lập trình Java 4. Ví dụ và bài tập
  31. 33 3.1. Java là gì? • Java là một ngơn ngữ lập trình HĐT được phát triển bởi Sun Microsystems. Java là một ngơn ngữ lập trình khá trẻ  Ban đầu được sử dụng để xây dựng ứng dụng điều khiển các bộ xử lý bên trong các thiết bị điện tử dân dụng như máy điện thoại cầm tay, lị vi sĩng  Bắt đầu được sử dụng từ Green Team and James Gosling năm 1995 (the leader)
  32. 34 3.1. Java là gì? • Ngày nay, nhắc đến Java, khơng cịn nhắc đến như một ngơn ngữ mà cịn là một cơng nghệ, một nền tảng phát triển. • Java cĩ một cộng đồng phát triển mạnh mẽ ▫ Một tập hợp các thư viện với số lượng lớn (từ Sun và các nguồn khác)
  33. 35 J2SE: Cung cấp các thành phần J2EE: Xây dựng dựa trên nền cốt lõi nhất để tảngxây cáccủa ứngJ2SE, cung cấp các dụng desktop, server. tính năngJ2ME: để xâyCung dựng cấp mộtmột mơi trường Java Card: Cung cấp mơi nền tảngmạnh đầy đủ,mẽ, ổn linh định, hoạt an cho các ứng 3.2. Các ấntồn b vàả dụngnhanhn ctrường chạy ủđểa xây trên anJava dựng di tồn động chạy và các trên các ứngthiết dụng bị nhúngdoanhcác thẻkhácnghiệp thơng (PDAs, minh bộ giải mã cáp(smart truyền card) hình, và máy các in ) thiết bị giới hạn về bộ nhớ và khả năng xử lý.
  34. 36 J2SE (Java 2 Platform Standard Edition) • • Java 2 Runtime Environment, Standard Edition (J2RE): ▫ Mơi trường thực thi hay JRE cung cấp các Java API, máy ảo Java (JVM) và các thành phần cần thiết khác để chạy các applet và các ứng dụng viết bằng Java. • Java 2 Software Development Kit, Standard Edition (J2SDK) ▫ Tập mẹ của JRE, và chứa mọi thứ nằm trong JRE, bổ sung thêm các cơng cụ như là trình biên dịch và các trình gỡ lỗi cần để phát triển applet và các ứng dụng.
  35. 38 J2EE (Java 2 Platform Enterprise Edition) • • Service-Oriented Architecture (SOA) và Web services • Các ứng dụng Web ▫ Servlet/JSP ▫ JSF • Các ứng dụng doanh nghiệp ▫ EJB ▫ JavaMail •
  36. 39 Lịch sử phát triển của J2SE • JDK 1.1.4 (Sparkler): 12 tháng 9, 1997 • JDK 1.1.5 (Pumpkin): 3 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): 8 tháng 4, 1999 • J2SE 1.2 (Playground): 4 tháng 12, 1998 • J2SE 1.2.1 (none): 30 tháng 3, 1999 • J2SE 1.2.2 (Cricket): 8 tháng 7, 1999 • J2SE 1.3 (Kestrel): 8 tháng 5, 2000 • J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001
  37. 40 Lịch sử phát triển của J2SE (2) • 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 5 (1.5.0) (Tiger) 29 tháng 9, 2004 • Java SE 6 (Mustang), 11 tháng 12, 2006 ▫ Các bản cập nhật 2 và 3 được đưa ra vào năm 2007 ▫ Bản cập nhật 4 đưa ra tháng 1 năm 2008. • Java SE 7 (Dolphin), 4/2008.
  38. 41 3.2. Nền tảng của Java (Java platform) • Platform là mơi trường phát triển hoặc triển khai. • Java platform cĩ thể chạy trên mọi hệ điều hành ▫ Các platform khác phụ thuộc vào phần cứng ▫ Java platform cung cấp:  Máy ảo Java - Java Virtual Machine (JVM).  Giao diện lập trình ứng dụng - Application Programming Interface (API).
  39. 42 3.3. Mơ hình dịch của Java • a. Mơ hình biên dịch truyền thống: ▫ Mã nguồn được biên dịch thành mã nhị phân. %cc Hello.c –o Hello % Hello Run Binary Code
  40. 43 3.3. Mơ hình dịch của Java (2) • b. Mơ hình dịch của Java: ▫ Mã nguồn được biên dịch thành %javac Hello.java bytecode rồi được Hello.class created % java Hello thơng dịch bởi JVM. Run JVM Byte Code
  41. 44 3.3. Mơ hình dịch của Java (3) • Máy ảo Java (Java Virtual Machine): ▫ Máy ảo Java là trái tim của ngơn ngữ Java  Đem đến cho các chương trình Java khả năng viết một lần nhưng chạy được ở mọi nơi ▫ Tạo ra mơi trường bên trong để thực thi lệnh:  Nạp các file .class  Quản lý bộ nhớ  Dọn “rác” ▫ Trình thơng dịch “Just In Time - JIT”  Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại CPU.
  42. 45 3.4. Các tính năng của Java • Java được thiết kế: ▫ Ngơn ngữ lập trình mạnh, đầy đủ tính năng và thuần hướng đối tượng. ▫ Dễ học, cú pháp tương tự như C++ ▫ Độc lập nền tảng ▫ Hỗ trợ phát triển các ứng dụng trong mơi trường mạng ▫ Lý tưởng cho các ứng dụng Web
  43. 46 3.4. Các tính năng của Java (2) • Mạnh mẽ ▫ Thư viện lớp: Hàng trăm lớp được viết trước với nhiều các phương thức tiện ích. ▫ Java sử dụng mơ hình con trỏ khơng cho phép truy cập trực tiếp vào bộ nhớ; bộ nhớ khơng thể ghi đè. • Hướng đối tượng ▫ Java hỗ trợ phát triển phần mềm bằng cách sử dụng khái niệm “đối tượng” ▫ Phần mềm được phát triển sử dụng Java bao gồm các lớp và các đối tượng
  44. 47 3.4. Các tính năng của Java (3) • Đơn giản ▫ Từ khĩa  Java cĩ 50 từ khĩa  So với Cobol hay VB cĩ tới hàng trăm từ khĩa  Cĩ ý nghĩa đặc biệt trong ngơn ngữ  Được sử dụng để viết các câu lệnh • Network capable ▫ Java hỗ trợ phát triển các ứng dụng phân tán ▫ Một số loại ứng dụng của Java được thiết kế để được truy cập thơng qua trình duyệt Web.
  45. 48 3.4. Các tính năng của Java (3) • Java cĩ 50 từ khĩa ▫ assert (New in 1.5) enum (New in 1.5)
  46. 50 3.4. Các tính năng của Java (5) • Đa luồng (Multi-threaded) ▫ Cho phép chương trình của bạn chạy nhiều hơn một tác vụ tại cùng một thời điểm. • Khả chuyển (Portable) ▫ Các chương trình cĩ thể viết và biên dịch một lần, rồi chạy trên các nền tảng khác ▫ Nhờ mơ hình biên dịch/thơng dịch (WORE – Write Once, Run Everywhere)
  47. 51 3.4. Các tính năng của Java (6) • Các mơi trường phát triển ▫ Java Development Kit  Miễn phí trên Sun Website: java.sun.com  Bao gồm: Trình biên dịch, JVM và các lớp đã cĩ ▫ Integrated Development Environments (IDEs): Cung cấp:  Các trình soạn thảo phức tạp  Các cơng cụ gỡ lỗi  Các cơng cụ phát triển đồ họa
  48. 52 3.5. Các kiểu chương trình Java • Ứng dụng (Application) ▫ Khơng cần chạy trên các trình duyệt ▫ Cĩ thể gọi các chức năng thơng qua dịng lệnh hoặc menu lựa chọn (đồ họa) ▫ Phương thức main() là điểm bắt đầu thực hiện ứng dụng • Applet ▫ Chương trình đồ họa chạy trên trình duyệt tại máy trạm (client). ▫ Cĩ thể được xem bằng appletviewer hoặc nhúng trong trình duyệt Web cĩ cài JVM.
  49. 53 3.5. Các kiểu chương trình Java (2) • Ứng dụng Web (Web application) ▫ Tạo ra các nội dung động trên server thay cho trên trình duyệt. ▫ Chạy trong các ứng dụng server ▫ Servlet: Kiểm sốt các yêu cầu từ trình duyệt và trả lại các phản hồi ▫ JavaServer Page (JSP): Các trang HTML được nhúng với mã Java.
  50. 54 Nội dung 1. Cơng nghệ hướng đối tượng 2. Các nguyên lý cơ bản của OO 3. Ngơn ngữ lập trình Java 4. Ví dụ và bài tập
  51. 55 Ví dụ 1 - HelloWorld // HelloWorld.java // Chuong trinh hien thi dong chu “Hello World” public class HelloWorld { /* Phuong thuc main se duoc goi dau tien trong 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
  52. 56 Ví dụ 1 (tiếp) • Chú thích (Comment) ▫ Trên 1 dịng: Bắt đầu bằng: // ▫ Nhiều dịng: /* */ • Java phân biệt chữ hoa chữ thường • Từ khĩa cĩ sẵn của Java: ▫ 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.
  53. 57 Cài đặt và chạy thử chương trình Java • Bước 1: Cài đặt j2sdk1.5/6/7, cài đặt các 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 + 1 ▫ JCreator: F7 hoặc Build Build Project/File • Bước 5: Chạy chương trình ▫ cmd: java HelloWorld.class ▫ Textpad: Ctrl + 2 ▫ JCreator: F5 hoặc Run Run Project/File
  54. 58 Biến mơi trường • PATH = ;C:\Program Files\Java\jdk1.6\bin • CLASSPATH = C:\Program Files\Java\jdk1.6\lib;.;C:\Program Files\Java\jdk1.6\include
  55. 60 Ví dụ 2 - GUI import javax.swing.JOptionPane; public class FirstDialog{ public static void main(String[] args){ JOptionPane.showMessageDialog(null, ”Xin chao ban!”); System.exit(0); } }
  56. 61 Ví dụ 3 – Nhập, xuất dữ 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); } }