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 khố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 cịn nhắc đến ngơn ngữ mà cịn 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