Tổng hợp bài giảng môn Lập trình Hướng đối tượng | Trường Đại học Bách Khoa Hà Nội
Tổng hợp bài giảng môn Lập trình Hướng đối tượng| Bài giảng môn Lập trình Hướng đối tượng| Trường Đại học Bách Khoa Hà Nội. Tài liệu gồm 102 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.
Môn: Lập trình hướng đối tượng hust
Trường: Đại học Bách Khoa Hà Nội
Thông tin:
Tác giả:
Preview text:
8/24/2011 Nội dung
Bộ môn Công nghệ Phần mềm 1.
Lập trình hướng đối tượng Viện CNTT & TT 2.
Công nghệ hướng đối tượng
Trường Đại học Bách Khoa Hà Nội 3. Ngôn ngữ lập trình Java 4. Ví dụ và bài tập
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 01. Tổng quan về OOP 2 Nội dung
1.1. Lịch sử phát triển của các NNLT
1. Lập trình hướng đối tượng
a. Hợp ngữ (Assembly language): 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 4
1.1. Lịch sử phát triển của các NNLT (2)
1.1. Lịch sử phát triển của các NNLT (3) b. NNLT cấu trúc/thủ
c. NNLT hướng đối tượng: tục: 5 6 1 8/24/2011 1.2. Đối tượng là gì?
Đối tượng thế giới thực
Đối tượng trong 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. 7 8 Đối tượng phần mềm Đối tượng Đối tượng phần mềm
Đối tượng phần mềm Xe Đạp 9 10 Mô hình hóa đối tượng
Tương tác giữa các đối tượng House Tom Car Reality Tree
Object-oriented modeling Model drives House Car lives in Tree Tom 11 12 2 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 (Cal function) Thông điệp Phương thức Gửi thông điệp 13 14
Hướng cấu trúc vs. Hướng ĐT? Lớp-Ví dụ Lớp Xe đạp Khai báo cho lớp Hướng cấu trúc: XeDap Đối tượng của lớp Hướng đối tượng: XeDap 15 16 Nội dung
2. Công nghệ đối tượng (OT) 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
(Object Technology - A Manager’s Guide, Taylor, 1997) 17 18 3 8/24/2011
2.1. Lịch sử phát triển của OT
2.2. OT được sử dụng ở đâu?
Các hệ thống Client/Server và phát triển Web Simula C ++ The UML 1967 Late 1980s 1996 1972 1991 2004 Smalltalk Java UML 2 19 20
2.2. OO được sử dụng ở đâu? (2)
2.3. Các nguyên lý cơ bản của OO
Hệ nhúng (embedded system)
Hệ thống thời gian thực (real-time) Hướng đối tượng i a ó p 4 ó u g h n a g n cấ rừ ợ ó g u n T h n â tư ó -đ h Đ ô P M 21 22
a. Trừu tượng hóa (Abstraction) b. Đóng gói (Encapsulation) 23
Tăng cường tính mềm dẻo 24 23 2 4 8/24/2011 c. Mô đun hóa (Modularity) 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 khoá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 25 26 25 2 26 2 Nội dung 3.1. Java là gì? 1.
Lập trình hướng đối tượng
Java là một ngôn ngữ lập trình HĐT được phát triển bởi Sun Microsystems. 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 Green Team and James Gosling (the leader) 27 28 3.1. Java là gì?
3.2. Các ấn bản của Java
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ẽ 29 30 5 8/24/2011
Lịch sử phát triển của J2SE
Lịch sử phát triển của J2SE (2)
JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
J2SE 1.4.0 (Merlin) 13 tháng 2, 2002
JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997
J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
JDK 1.1.6 (Abigail): 24 tháng 4, 1998
J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
JDK 1.1.7 (Brutus): 28 tháng 9, 1998
J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
JDK 1.1.8 (Chelsea): 8 tháng 4, 1999
Java SE 6 (Mustang), 11 tháng 12, 2006
J2SE 1.2 (Playground): 4 tháng 12, 1998
Các bản cập nhật 2 và 3 được đưa ra vào năm 2007
J2SE 1.2.1 (none): 30 tháng 3, 1999
Bản cập nhật 4 đưa ra tháng 1 năm 2008.
J2SE 1.2.2 (Cricket): 8 tháng 7, 1999
Java SE 7 (Dolphin), 4/2008.
J2SE 1.3 (Kestrel): 8 tháng 5, 2000
J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001 31 32
3.2. Nền tảng của Java (Java platform)
3.3. Mô hình dịch của Java
a. Mô hình biên dịch truyền thống: 33 34
3.3. Mô hình dịch của Java (2)
3.3. Mô hình dịch của Java (3)
b. Mô hình dịch của Java:
Máy ảo Java (Java Virtual Machine):
Máy ảo Java là trái tim của ngôn ngữ Java 35 36 6 8/24/2011
3.4. Các tính năng của Java
3.4. Các tính năng của Java (2)
Java được thiết kế: Mạnh mẽ
Ngôn ngữ lập trình mạnh, đầy đủ tính năng và
thuần hướng đối tượng. Hướng đối tượng
Dễ học, cú pháp tương tự như C++ … 37 38
3.4. Các tính năng của Java (3)
3.4. Các tính năng của Java (3) Đơn giản Java có 50 từ khóa Network capable 39 40
3.4. Các tính năng của Java (4)
3.4. Các tính năng của Java (5) Bảo mật
Đa luồng (Multi-threaded) Khả chuyển (Portable) 41 42 7 8/24/2011
3.4. Các tính năng của Java (6)
3.5. Các kiểu chương trình Java
Các môi trường phát triển Ứng dụng (Application) Java Development Kit Applet
Integrated Development Environments (IDEs): 43 44
3.5. Các kiểu chương trình Java (2) Nội dung
Ứng dụng Web (Web application) 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 45 46 Ví dụ 1 - Hel oWorld Ví dụ 1 (tiếp) // HelloWorld.java Chú thích (Comment)
// Chuong trinh hien thi dong chu “Hello World”
Java phân biệt chữ hoa chữ thường
public class HelloWorld {
/* Phuong thuc main se duoc goi dau tien
Từ khóa có sẵn của Java:
trong bat cu ung dung Java nao*/ class: Khai báo lớp
public static void main(String args[]){
public: Quy định phạm vi truy cập
System.out.println( “Hello World!" );
Tên lớp chứa hàm main phải trùng với tên
} // ket thuc phuong thuc main file .java.
} // ket thuc lop HelloWorld 47 48 8 8/24/2011
Cài đặt và chạy thử chương trình Java Biến môi trường
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)
PATH = …;C:\Program Files\Java\jdk1.6\bin
Bước 2: Cài trình soạn thảo CLASSPATH = C:\Program
TextPad/JCreator/NetBean/Eclipse…
Files\Java\jdk1.6\lib;.;C:\Program
Bước 3: Lập trình/Viết mã nguồn Files\Java\jdk1.6\include 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 49 50 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); } } 51 52
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); } } 53 9 8/24/2011 Mục tiêu bài học
Bộ môn Công nghệ Phần mềm
Nêu được các quy ước đặt tên trong các chương
trình Java, tạo ra các định danh hợp lệ Viện CNTT & TT
Trường Đại học Bách Khoa Hà Nội
Mô tả các kiểu dữ liệu cơ bản trong Java và cách sử dụng Các toán tử
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Giải thích về phạm vi của biến
Bài 02. Cú pháp Java cơ bản
Sử dụng các câu lệnh điều khiển, cấu trúc điều
kiện, cấu trúc lặp và rẽ nhánh
Khai báo, khởi tạo các biến và mảng trong Java 2 Nội dung Nội dung 1. Định danh 1. Định danh 2. Các kiểu dữ liệu 2. Các kiểu dữ liệu 3. Toán tử 3. Toán tử 4. Cấu trúc điều khiển 4. Cấu trúc điều khiển 5. Mảng 5. Mảng 3 4 1. Định danh 1. Định danh (2) Định danh:
Quy ước với định danh (naming convention): 5 6 1 8/24/2011 1. Định danh (3) Nội dung Literals 1. Định danh Từ khóa (keyword)
2. Các kiểu dữ liệu
Từ dành riêng (reserved for future use) 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 7 8 2. Các kiểu dữ liệu
2.1. Kiểu dữ liệu nguyên thủy Hai loại: 9 10 a. Số nguyên b. Số thực 11 12 2 8/24/2011 c. Ký tự d. Giá trị logic 13 14
2.2. Giá trị hằng (literal) a. Số nguyên Hệ cơ số 8 (Octals)
Hệ cơ số 16 (Hexadecimals) Literals integer…………..7 floating point…7.0f boolean……….true character……….'A' string………….."A" 15 16 b. Số thực
c. boolean, ký tự và xâu ký tự float boolean: double Ký tự:
e (hoặc E): Xâu ký tự: 17 18 3 8/24/2011 d. Escape sequence
2.3. Chuyển đổi kiểu dữ liệu (Casting)
Các ký tự điều khiển nhấn phím hẹp rộng
Hiển thị các ký tự đặc biệt trong xâu Rộng hẹp double f; int a, b; int d; long g; short c; short e; f = g; a = b + c; e = (short)d; g = f; 19 20
2.4. Khai báo và khởi tạo biến Chú thích
Các biến đơn (biến không phải là mảng) cần
Java hỗ trợ ba kiểu chú thích
phải được khởi tạo trước khi sử dụng trong các biểu thức 21 22 Câu lệnh Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 23 24 4 8/24/2011 3. Toán tử (Operators)
Thứ tự ưu tiên của toán tử
Java cung cấp nhiều dạng
Cho biết toán tử nào thực hiện trước – được toán tử
xác định bởi các dấu ngoặc đơn hoặc theo ngầm định 25 26 Nội dung 4.1. Lệnh if - else 1. Định danh Cú pháp 2. Các kiểu dữ liệu 3. Toán tử
4. Cấu trúc điều khiển 5. Mảng 27 28 Ví dụ 4.2. Lệnh switch - case class CheckNumber { [true] case a
public static void main(String args[]) case a break [false] action(s) { [true] case b int num =10; case b break [false action(s) ] if (num %2 == 0) . .
System.out.println (num+ “la so chan”); . [true] else case z case z break [false action(s) ]
System.out.println (num + “la so le”); default action(s) } } 29 30 5 8/24/2011 Ví dụ
4.3. Vòng lặp while và do while switch (day) { case 0: case 1: rule = “weekend”; action state break; case 2: int x = 2; [true] condition … while (x < 2) { x++; case 6: [false] System.out.println(x); rule = “weekday”; } break; default: int x = 2; do { rule = “error”; x++; } System.out.println(x); } while (x < 2); 31 32 4.4. Vòng lặp for Ví dụ - vòng lặp for class ForDemo Ví dụ: {
for (int index = 0; index < 10; index++) {
public static void main(String args[]) { System.out.println(index); int i=1, sum=0; } for (i=1;i<=10;i+=2) sum+=i;
System.out.println (“Sum of first five
old numbers is “ + sum); } } 33 34 Vòng lặp for và while
4.5. Các lệnh thay đổi cấu trúc điều khiển break Có hai dạng: int sum = 0; int sum = 0; int index = 1;
for (int index = 1;index <= 10;index++)
while (index <= 10) { { sum += index; sum += index; index++; } } 35 36 6 8/24/2011
4.5. Các lệnh thay đổi cấu trúc điều khiển (2) Ví dụ - break và continue continue
public int myMethod(int x) { int sum = 0; outer: for (int i=0; i inner: for (int j=i; j sum++; if (j==1) continue;
if (j==2) continue outer; if (i==3) break; if (j==4) break outer; } } return sum; } 37 38 4.6. Phạm vi biến Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 39 40 5. Mảng (array)
5.1. Khai báo và khởi tạo mảng Ví dụ:
Khai báo, khởi tạo giá trị ban đầu: char c[] = new char[12];
Nếu không khởi tạo nhận giá trị mặc định variableName reference Array or Object 41 42 7 8/24/2011 Ví dụ - mảng
5.1. Khai báo và khởi tạo mảng (2) c[ 0 ] -45 Tên của mảng (tất Ví dụ: cả các thành phần c[ 1 ] 6 trong mảng có int MAX = 5; cùng tên, c) c[ 2 ] 0
boolean bit[] = new boolean[MAX]; c[ 3 ] 72
float[] value = new float[2*3]; c[ 4 ] 1543 c.l . e l ngth: cho biết
int[] number = {10, 9, 8, 7, 6}; c[ 5 ] -89 độ dài của mảng c
System.out.println(bit[0]); c[ 6 ] 0 c[ 7 ] 62
System.out.println(value[3]); c[ 8 ] -3
System.out.println(number[1]); c[ 9 ] 1 Chỉ số (truy nhập đến các thành phần của c[ 10 ] 6453 mảng thông qua chỉ số) c[ 11 ] 78 43 44 5.2. Mảng nhiều chiều
5.2. Mảng nhiều chiều (2) Column 0 Column 1 Column 2 Column 3
Bảng với các dòng và cột Row 0
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
Thường sử dụng mảng hai chiều Row 1
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ] Row 2
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ] Chỉ số cột Chỉ số hàng Tên mảng 45 46 8 8/24/2011 Mục tiêu bài học
Bộ môn Công nghệ Phần mềm
Nêu được bản chất, vai trò của trừu tượng hóa Viện CNTT & TT
Giải thích về đóng gói và che giấu thông tin
Trường Đại học Bách Khoa Hà Nội Xây dựng lớp
Định nghĩa lớp, thực hiện ẩn
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Tạo các phương thức, các trường/thuộc tính
Bài 03. Đóng gói và xây dựng lớp,
Tạo và sử dụng đối tượng
Phương thức khởi tạo
tạo và sử dụng đối tượng
Khai báo và khởi tạo đối tượng
Sử dụng đối tượng 2 Nội dung Nội dung 1.
Trừu trượng hóa dữ liệu 1.
Trừu trượng hóa dữ liệu 2.
Đóng gói và xây dựng lớp 2.
Đóng gói và xây dựng lớp 3.
Tạo và sử dụng đối tượng 3.
Tạo và sử dụng đối tượng 3 4 1.1. Trừu tượng hóa 1.1. Trừu tượng hóa (2)
2 loại trừu tượng hóa
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 includes the most important,
Tập hợp các thể hiện của
essential, or distinguishing aspects of
các thực thể thành các nhóm có chung các thuộc tính
something while suppressing or ignoring less
important, immaterial, or diversionary details.
The result of removing distinctions so as to
emphasize commonalties (Dictionary of
Object Technology, Firesmith, Eykholt, 1995). 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 + submitFinalGrade() - name + acceptCourseOffering() + setMaxLoad() - address + takeSabbatical() - studentID + teachClass() - dateOfBirth
Lớp và đối tượng trong UML Nội dung :Student 1.
Trừu trượng hóa dữ liệu - name = “M. Modano” - address = “123 Main St.” Student 2.
Đóng gói và xây dựng lớp - studentID = 9 - name
- dateOfBirth = “03/10/1967” - address 3.
Tạo và sử dụng đối tượng - studentID - dateOfBirth sv2:Student - name = “D. Hatcher” - address = “456 Oak Ln.” - studentID = 2
- dateOfBirth = “12/11/1969” 18 3