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 173 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.

9/10/18
1
Bộ môn Công nghệ Phần mềm
Viện CNTT & TT
Trưng Đi hc Bách Khoa Hà Ni
LP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 01. Tổng quan về OOP
1
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
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
1.1. Lịch sử phát triển của các NNLT
n a. Hợp ngữ (Assembly language):
n 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.
n Khó nhớ, khó viết, nhất là với những bài toán
phức tạp.
n Khó sửa lỗi, bảo trì.
4
9/10/18
2
1.1. Lịch sử phát triển của các NNLT (2)
n b. NNLT cấu trúc/thủ
tục:
n Xây dựng chương trình
dựa trên các hàm/th
tục/chương trình con
n Dữ liệu và xử lý (hàm)
tách rời nhau
n 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
5
1.1. Lịch sử phát triển của các NNLT (3)
n c. NNLT hướng đối tượng:
n Thể hiện các thành phần của bài toán là các “đối
tượng” (object).
n 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.
6
1.2. Đối tượng là gì?
n Đối tượng trong thế giới thực
n Ví dụ một chiếc ô tô
n Liên quan đến chiếc ô tô:
n Các thông tin về chiếc xe như: màu sắc, tốc độ, số km đã
đi được,...
n 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,...
7
Đối tượng thế giới thực
n 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.
8
n Tất cả có
trạng thái
(state) và
hành động
(behaviour)
9/10/18
3
Đối tượng phần mềm
n 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.
n Cũng có trạng thái và hành động
n Trạng thái: thuộc tính (attribute; property)
n Hành động: phương thức (method)
9
Đối tượng
10
Đối tượng (object) là một
thực thể phần mềm bao
bọc các thuộc tính và các
phương thức liên quan.
Đối tượng phần mềm Đối tượng phần mềm Xe Đạp
Thuộc tính được xác định
bởi giá trị cụ thể gọi là
thuộc tính thể hiện.
Một đối tượng cụ thể
được gọi là một thể hiện.
Mô hình hóa đối tượng
11
Object-oriented modeling
House
Tom
Car
Tree
House
Tom
Car
Tree
lives in
drives
Model
Reality
Tương tác giữa các đối tượng
n Sự giao tiếp giữa các đối tượng trong thế giới thực:
n Các đối tượng và sự tương tác giữa chúng trong lập
trình
n Các đối tượng giao tiếp với nhau bằng cách gửi thông điệp
(message)
12
9/10/18
4
Gọi hàm vs. Gửi thông điệp
n Gọi hàm (Call function)
n Chỉ ra chính xác đoạn mã nào sẽ được thực hiện.
n Chỉ có duy nhất một sự thực thi của một hàm với
một tên nào đó.
n Không có hai hàm trùng tên
n Gửi thông điệp
n Yêu cầu một dịch vụ từ một đối tượng và đối
tượng sẽ quyết định cần phải làm gì
n Các đối tượng khác nhau sẽ có các cách thực thi
các thông điệp theo cách khác nhau.
13
Thông điệp vs. Phương thức
n Thông điệp
n Được gửi từ đối tượng này đến đối tượng kia, không bao gồm đoạn
mã thực sự sẽ được thực thi
n Phương thức
n Thủ tục/hàm trong ngôn ngữ lập trình cấu trúc
n Là sự thực thi dịch vụ được yêu cầu bởi thông điệp
n Là đoạn mã sẽ được thực thi để đáp ứng thông điệp được gửi đến
cho đối tượng
14
Hướng cấu trúc vs. Hướng ĐT?
n Hướng cấu trúc:
n data structures + algorithms = Program
n (cấu trúc dữ liệu + giải thuật = Chương trình)
n Hướng đối tượng:
n objects + messages = Program
n (đối tượng + thông điệp = Chương trình)
15
1.3. Lớp đối tượng
n Trong thế giới thực có nhiều đối tượng cùng
loại.
n 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.
n Ví dụ
16
9/10/18
5
Lớp
n Một lớp một thiết kế (blueprint) hay mẫu
(prototype) cho các đối tượng cùng kiểu
n dụ: lớp XeDap một thiết kế chung cho nhiều đối
tượng xe đạp được tạo ra
n Lớp định nghĩa các thuộc tính các phương thức
chung cho tất cả các đối tượng của ng một loại nào
đó
n Một đối tượng một thể hiện cụ thể của một lớp.
n dụ: mỗi đối tượng xe đạp một thể hiện của lớp
XeDap
n Mỗi thể hiện thể những thuộc tính thể hiện
khác nhau
n dụ: một xe đạp thể đang bánh răng thứ 5 trong
khi một xe khác thể đang bánh răng thứ 3.
17
Ví dụ Lớp Xe đạp
18
Khai báo cho lớp
XeDap
Đối tượng của lớp
XeDap
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
19
2. Công nghệ đối tượng (OT)
n 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.
20
(Object Technology - A Manager’s Guide, Taylor, 1997)
9/10/18
6
Đặc tính của LT HĐT
n Alan Kay đã tổng hợp các đặc tính của LT T:
n 1. Tất cả đều là đối tượng.
n 2. Chương trình phần mềm có thể coi là một tập hợp
các đối tượng tương tác với nhau
n 3. Mỗi đối tượng trong chương trình có các d liệu
độc lập của mình và chiếm bộ nhớ riêng của mình.
n 4. Mỗi đối tượng đều có dạng đặc trưng của lớp các
đối tượng đó.
n 5. Tất cả các đối tượng thuộc về cùng một lớp đều
có các hành vi giống nhau
21
2.1. Lịch sử phát triển của OT
n Các mốc chính của công nghệ đối tượng
22
Simula
1967
C ++
Late 1980s
Smalltalk
1972
Java
1991
The UML
1996
UML 2
2004
2.2. OT được sử dụng ở đâu?
n Các hệ thống Client/Server và phát triển
Web
23
n 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.
2.2. OO được sử dụng ở đâu? (2)
n Hệ nhúng (embedded system)
n Hệ thống thời gian thực (real-time)
n 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
n Hệ thống vệ tinh
n Các hệ thống quốc phòng
và hàng không vũ trụ
n
24
4
9/10/18
7
2.3. Các nguyên lý cơ bản của OO
25
Tru
tượng
hóa
Đa hình
Hướng đối tượng
Đóng gói
Thừa kế
a. Trừu tượng hóa (Abstraction)
n Là quá trình loại bỏ đi các thông tin/tính chất cụ thể
và giữ lại những thông tin/tính chất chung.
n 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.
n Phụ thuộc vào góc nhìn
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.
26
Ví dụ: Trừu tượng hóa
27
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ố)
b. Đóng gói (Encapsulation)
28
9/10/18
8
b. Đóng gói (Encapsulation)
n Che giấu, ẩn đi chi tiết thực hiện bên trong
n Cung cấp cho thế giới bên ngoài một giao diện
n Lợi ích: Người dùng không phụ thuộc vào
việc sửa đổi sự thực thi bên trong
29
Tăng cường tính mềm dẻo
b. Đóng gói (Encapsulation)
30
Class: Professor
Attribute: name
Attribute: hireDate
Method: getName()
Method: setHireDate (Date hireDate)
Minh họa việc đóng gói
31
n Giáo Clark thể
dạy 4 lớp trong học
kỳ tới (thay tối
đa 3 lớp như các
học kỳ trước)
SubmitFinalGrades()
AcceptCourseOffering()
Take Sabbatical()
Giáo sư Clark
SetMaxLoad()
Name: J Clark
Employee ID: 567138
HireDate: 07/25/1991
Status: Tenured
Discipline: Finance
MaxLoad:4
SetMaxLoad(4)
c. Thừa kế (Inheritance)
35
35
Giảm mức độ
trừu tượng hóa
Gia tăng mức độ
trừu tượng hóa
Vehicle
Automobile Motorcycle Bus
Sedan Sports Car School Bus Luxury Bus
9/10/18
9
d. Đa hình (polymorphism)
n Đa hình: “one name, many forms”
n Nạp chồng phương thức (Method overloading)
n Add(int x, int y)
n Add(float x, float y)
n Add(float x, float y, float z)
n Ghi đè phương thức (Method Overriding)
n Một Intern (thực tập sinh) một Intern, đồng thời
cũng thể được xem một Staff (nhân viên)
n Phương thức quẹt thẻ của Intern khác với phương
thức quẹt thẻ của Staff
36
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
37
3.1. Java là gì?
n Java là một ngôn ngữ lập trình HĐT được phát triển
bởi Sun Microsystems.
38
Green Team and James Gosling
(the leader)
n Java là một ngôn ngữ lập
trình khá trẻ
n 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…
n Bắt đầu được sử dụng từ năm
1995
3.1. Java là gì?
n 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.
n Java có một cộng đồng phát triển mạnh mẽ
n 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)
39
9/10/18
10
3.2. Các ấn bản ca Java
40
J2EE: Xây dng da trên nn
tng ca J2SE, cung cp các
nh năng để xây dng mt
nn tng đầy đủ, n định, an
toàn và nhanh để xây dng
các ng dng doanh nghip
J2ME: Cung cp mt môi trường
mnh m, linh hot cho các ng
dng chy trên di động và các
thiết b nhúng khác (PDAs, b gii
mã cáp truyn nh, máy in…)
Java Card: Cung cp môi
trường an toàn chy trên
các th thông minh
(smart card) và các thiết
b gii hn v b nh
kh năng x lý.
J2SE: Cung cp các thành phn
ct lõi nht để xây các ng
dng desktop, server.
J2SE (Java 2 Platform Standard Edition)
n http://java.sun.com/j2se
n Java 2 Runtime Environment, Standard Edition (J2RE):
n 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.
n Java 2 Software Development Kit, Standard Edition (J2SDK)
n 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.
41
J2EE (Java 2 Platform Enterprise Edition)
n http://java.sun.com/j2ee
n Service-Oriented Architecture (SOA) và Web
services
n Các ứng dụng Web
n Servlet/JSP
n JSF…
n Các ứng dụng doanh nghiệp
n EJB
n JavaMail…
n
43
Lịch sử phát triển của J2SE
n JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
n JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997
n JDK 1.1.6 (Abigail): 24 tháng 4, 1998
n JDK 1.1.7 (Brutus): 28 tháng 9, 1998
n JDK 1.1.8 (Chelsea): 8 tháng 4, 1999
n J2SE 1.2 (Playground): 4 tháng 12, 1998
n J2SE 1.2.1 (none): 30 tháng 3, 1999
n J2SE 1.2.2 (Cricket): 8 tháng 7, 1999
n J2SE 1.3 (Kestrel): 8 tháng 5, 2000
n J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001
44
9/10/18
11
Lịch sử phát triển của J2SE (2)
n J2SE 1.4.0 (Merlin) 13 tháng 2, 2002
n J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
n J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
n J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
n Java SE 6 (Mustang), 11 tháng 12, 2006
n Các bản cập nhật 2 và 3 được đưa ra vào năm 2007
n Bản cập nhật 4 đưa ra tháng 1 năm 2008.
n Java SE 7 (Dolphin), 4/2008.
45
3.2. Nền tảng của Java (Java platform)
n Platform là môi trường
phát triển hoặc triển khai.
n Java platform có thể chạy
trên mọi hệ điều hành
n Các platform khác phụ thuộc
vào phần cứng
n Java platform cung cấp:
n Máy ảo Java - Java Virtual
Machine (JVM).
n Giao diện lập trình ứng dụng -
Application Programming
Interface (API).
46
3.3. Mô hình dịch của Java
n a. Mô hình biên dịch truyền thống:
n Mã nguồn được biên dịch thành mã nhị phân.
47
%cc Hello.c o Hello
% Hello
Binary Code
Run
3.3. Mô hình dịch của Java (2)
n b. Mô hình dịch của Java:
n Mã nguồn được
biên dịch thành
bytecode rồi được
thông dịch bởi JVM.
48
%javac Hello.java
Hello.class created
% java Hello
Byte Code
Run JVM
9/10/18
12
3.3. Mô hình dịch của Java (3)
n Máy ảo Java (Java Virtual Machine):
n Máy ảo Java là trái tim của ngôn ngữ Java
n Đ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
n Tạo ra môi trường bên trong để thực thi lệnh:
n Nạp các file .class
n Quản lý bộ nhớ
n Dọn “rác”
n Trình thông dịch “Just In Time - JIT”
n Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại
CPU.
49
3.4. Các tính năng của Java
n Java được thiết kế:
n Ngôn ngữ lập trình mạnh, đầy đủ tính năng và
thuần hướng đối tượng.
n Dễ học, cú pháp tương tự như C++
n Độc lập nền tảng
n Hỗ trợ phát triển các ứng dụng trong môi trường
mạng
n Lý tưởng cho các ứng dụng Web
50
3.4. Các tính năng của Java (2)
n Mạnh mẽ
n 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.
n 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 đè.
n Hướng đối tượng
n 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”
n 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
51
3.4. Các tính năng của Java (3)
n Đơn giản
n Từ khóa
n Java có 50 từ khóa
n So với Cobol hay VB có tới hàng trăm từ khóa
n Có ý nghĩa đặc biệt trong ngôn ngữ
n Được sử dụng để viết các câu lệnh
n Network capable
n Java hỗ trợ phát triển các ứng dụng phân tán
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.
52
9/10/18
13
3.4. Các tính năng của Java (3)
n Java có 50 từ khóa
n assert (New in 1.5) enum (New in 1.5)
53
3.4. Các tính năng của Java (4)
n Bảo mật
n Java authentication dựa vào các phương
pháp mã hóa khóa công khai
n Mô hình con trỏ Java bảo vệ dữ liệu riêng tư
trong các đối tượng và ngăn các ứng dụng
chưa được authorized không được phép truy
cập cấu trúc dữ liệu
54
3.4. Các tính năng của Java (5)
n Đa luồng (Multi-threaded)
n 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.
n Khả chuyển (Portable)
n 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
n Nhờ mô hình biên dịch/thông dịch
(WORE Write Once, Run Everywhere)
55
3.4. Các tính năng của Java (6)
n Các môi trường phát triển
n Java Development Kit
n Miễn phí trên Sun Website: java.sun.com
n Bao gồm: Trình biên dịch, JVM và các lớp đã có
n Integrated Development Environments (IDEs):
Cung cấp:
n Các trình soạn thảo phức tạp
n Các công cụ gỡ lỗi
n Các công cụ phát triển đồ họa
56
9/10/18
14
3.5. Các kiểu chương trình Java
n Ứng dụng (Application)
n Không cần chạy trên các trình duyệt
n 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)
n Phương thức main() là điểm bắt đầu thực hiện ứng dụng
n Applet
n Chương trình đồ họa chạy trên trình duyệt tại máy trạm
(client).
n Có thể được xem bằng appletviewer hoặc nhúng trong
trình duyệt Web có cài JVM.
57
3.5. Các kiểu chương trình Java (2)
n Ứng dụng Web (Web application)
n Tạo ra các nội dung động trên server thay cho
trên trình duyệt.
n Chạy trong các ứng dụng server
n Servlet: Kiểm soát các yêu cầu từ trình duyệt và
trả lại các phản hồi
n JavaServer Page (JSP): Các trang HTML được
nhúng với mã Java.
58
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
59
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
60
9/10/18
15
Ví dụ 1 (tiếp)
n Chú thích (Comment)
n Trên 1 dòng: Bắt đầu bằng: //
n Nhiều dòng: /* ... */
n Java phân biệt chữ hoa chữ thường
n Từ khóa có sẵn của Java:
n class: Khai báo lớp
n public: Quy định phạm vi truy cập
n Tên lớp chứa hàm main phải trùng với tên
file .java.
61
Cài đặt và chạy thử chương trình Java
n Bước 1: Cài đặt j2sdk1.5/6/7, i đt các biến môi trường
(nếu dùng cmd)
n Bước 2: Cài trình soạn thảo
TextPad/JCreator/NetBean/Eclipse…
n Bước 3: Lập trình/Viết mã nguồn
n Bước 4: Dịch
n cmd: javac HelloWorld.java
n Textpad: Ctrl + 1
n JCreator: F7 hoặc Build à Build Project/File
n Bước 5: Chạy chương trình
n cmd: java HelloWorld.class
n Textpad: Ctrl + 2
n JCreator: F5 hoặc Run à Run Project/File
62
Biến môi trường
n PATH = …;C:\Program Files\Java\jdk1.6\bin
n CLASSPATH = C:\Program
Files\Java\jdk1.6\lib;.;C:\Program
Files\Java\jdk1.6\include
63
64
9/10/18
16
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);
}
}
65
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);
}
}
66
Ví dụ 4
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Nhap i = ");
int i = s.nextInt();
System.out.println(i);
System.out.print("Nhap l = ");
long l = s.nextLong();
System.out.println(l);
s.close();
}
}
67
Bài tập:
n 1. Viết chương trình nhập hai số nguyên và
hiển thị tổng, hiệu, tích và thương của 2 s
nguyên vừa nhập
68
8/31/17
1
Bộ môn Công nghệ Phần mềm
Viện CNTT & TT
Trưng Đi hc Bách Khoa Hà Ni
LP TRÌNH HƯỚNG ĐỐ I TƯỢ NG
Bài 02. Cú pháp Java cơ bản
Mục tiêu bài học
n 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ệ
n tả các kiểu dữ liệu bản trong Java
cách sử dụng
n Các toán tử
n Giải thích về phạm vi của biến
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
n Khai báo, khởi tạo các biến mảng trong Java
2
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
3
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
4
8/31/17
2
1. Định danh
n Định danh:
n Xâu tự thể hiện tên các biến, các
phương thức, các lớp nhãn
n Quy định với định danh:
n Các tự thể chữ số, chữ cái, '$'
hoặc ‘_’
n Tên không được phép:
n Bắt đầu bởi một chữ số
n Trùng với từ khóa
n Chứa dấu cách
n Phân biệt chữ hoa chữ thường
n Yourname, yourname, YourName
yourName 4 định danh khác nhau
5
1. Định danh (2)
n Quy ước với định danh (naming convention):
n Bắt đầu bằng chữ cái
n Gói (package): tất cả sử dụng chữ thường
n theexample
n Lớp (Class): viết hoa chữ cái đầu tiên trong các từ ghép
lại
n TheExample
n Phương thức/thuộc tính (method/field): Bắt đầu bằng
chữ thường, viết hoa chữ cái đầu tiên trong các từ còn lại
n theExample
n Hằng (constants): Tất cả viết hoa
n THE_EXAMPLE
6
1. Định danh (3)
n Literals
null true false
n Từ khóa (keyword)
abstract assert boolean break byte case catch char
class continue default do double else extends final
finally float for if implements import instanceof
int interface long native new package private
protected public return short static strictfp super
switch synchronized this throw throws transient try
void volatile while
n Từ dành riêng (reserved for future use)
byvalue cast const future generic goto inner operator
outer rest var volatile
7
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
8
8/31/17
3
2. Các kiểu dữ liệu
n Trong Java kiểu dữ liệu được chia thành hai
loại:
n Kiểu dữ liệu nguyên thủy (primitive)
n Số nguyên (integer)
n Số thực (float)
n Ký tự (char)
n Giá trị logic (boolean)
n Kiểu dữ liệu tham chiếu (reference)
n Mảng (array)
n Đối tượng (object)
9
2.1. Kiểu dữ liệu nguyên thủy
n Mọi biến đều phải khai báo
một kiểu dữ liệu
n Các kiểu dữ liệu cơ bản chứa
một giá trđơn
n Kích thước và định dạng phải
phù hợp với kiểu của nó
n Java phân loại thành 4 kiểu
dữ liệu nguyên thủy
10
a. Số nguyên
n Số nguyên có dấu
n Khởi tạo với giá trị 0
11
b. Số thực
n Khởi tạo với giá trị 0.0
12
8/31/17
4
c. Ký tự
n Ký tự Unicode không dấu, được đặt giữa hai dấu
nháy đơn
n 2 cách gán giá trị:
n Sử dụng các chữ số trong hệ 16: char uni ='\u05D0';
n Sử dụng ký tự: char a = ‘A’;
n Giá trị mặc định là giá trị zero (\u0000)
13
d. Giá trị logic
n Giá trị boolean được xác định rõ ràng trong Java
n Một giá trị int không thể sử dụng thay cho giá trị boolean
n Có thể lưu trữ giá trị hoặc true hoặc false
n Biến boolean được khởi tạo là false
14
2.2. Giá trị hằng (literal)
n Literal là một giá trị của các kiểu dữ liệu
nguyên thủy và xâu ký tự.
n Gồm 5 loại:
n integer
n floating point
n boolean
n character
n string
15
Literals
integer…………..7
floating point…7.0f
boolean……….true
character……….'A'
string………….."A"
a. Số nguyên
n Hệ cơ số 8 (Octals) bắt đầu với chữ số 0
n 032 = 011 010(2) = 16 + 8 + 2 = 26(10)
n Hệ cơ số 16 (Hexadecimals) bắt đầu với 0 và ký
tự x
n 0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10)
n Kết thúc bởi ký tự “L” thể hiện kiểu dữ liệu long
n 26L
n Ký tự hoa, thường cho giá trị bằng nhau
n 0x1a , 0x1A , 0X1a , 0X1A đều có giá trị 26 trong hệ
decimal
16
| 1/173

Preview text:

9/10/18 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 1 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
n a. Hợp ngữ (Assembly language): 2.
Công nghệ hướng đối tượng
n 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. 3. Ngôn ngữ lập trình Java
n Khó nhớ, khó viết, nhất là với những bài toán phức tạp. 4. Ví dụ và bài tập
n Khó sửa lỗi, bảo trì. 3 4 1 9/10/18
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) n b. NNLT cấu trúc/thủ
n c. NNLT hướng đối tượng: tục:
n Thể hiện các thành phần của bài toán là các “đối tượng” (object). n Xây dựng chương trình dựa trên các hàm/thủ
n Hướng đối tượng là một kỹ thuật để mô hình hóa tục/chương trình con
hệ thống thành nhiều đối tượng.
n Dữ liệu và xử lý (hàm) tách rời nhau n 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 5 6 1.2. Đối tượng là gì?
Đối tượng thế giới thực
n Đối tượng trong thế giới thực
n 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ể
n Ví dụ một chiếc ô tô
sờ, nhìn thấy hay cảm nhận được.
n Liên quan đến chiếc ô tô:
n Các thông tin về chiếc xe như: màu sắc, tốc độ, số km đã đi được,... n Tất cả có
n 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,... trạng thái (state) và hành động (behaviour) 7 8 2 9/10/18 Đối tượng phần mềm Đối tượng
n 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.
n Cũng có trạng thái và hành động Đối tượng phần mềm
Đối tượng phần mềm Xe Đạp
n Trạng thái: thuộc tính (attribute; property)
n Hành động: phương thức (method)
Đố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. 9 10 Mô hình hóa đối tượng
Tương tác giữa các đối tượng House Tom Car
n Sự giao tiếp giữa các đối tượng trong thế giới thực: Reality Tree
Object-oriented modeling
n Các đối tượng và sự tương tác giữa chúng trong lập Model trình drives n
Các đối tượng giao tiếp với nhau bằng cách gửi thông điệp House Car lives in (message) Tree Tom 11 12 3 9/10/18
Gọi hàm vs. Gửi thông điệp
Thông điệp vs. Phương thức n Gọi hàm (Cal function) n Thông điệp n
Được gửi từ đối tượng này đến đối tượng kia, không bao gồm đoạn
n Chỉ ra chính xác đoạn mã nào sẽ được thực hiện.
mã thực sự sẽ được thực thi
n Chỉ có duy nhất một sự thực thi của một hàm với n Phương thức một tên nào đó. n
Thủ tục/hàm trong ngôn ngữ lập trình cấu trúc n
Là sự thực thi dịch vụ được yêu cầu bởi thông điệp
n Không có hai hàm trùng tên n
Là đoạn mã sẽ được thực thi để đáp ứng thông điệp được gửi đến cho đối tượng n Gửi thông điệp
n Yêu cầu một dịch vụ từ một đối tượng và đối
tượng sẽ quyết định cần phải làm gì
n Các đối tượng khác nhau sẽ có các cách thực thi
các thông điệp theo cách khác nhau. 13 14
Hướng cấu trúc vs. Hướng ĐT? 1.3. Lớp đối tượng n Hướng cấu trúc:
n Trong thế giới thực có nhiều đối tượng cùng
n data structures + algorithms = Program loại.
n (cấu trúc dữ liệu + giải thuật = Chương trình)
n Chương trình hướng đối tượng có nhiều đối n Hướng đối tượng:
tượng cùng loại chia sẻ những đặc điểm n objects + messages = Program chung.
n (đối tượng + thông điệp = Chương trình) n Ví dụ 15 16 4 9/10/18 Lớp Ví dụ Lớp Xe đạp
n Một lớp là một thiết kế (blueprint) hay mẫu Khai báo cho lớp
(prototype) cho các đối tượng cùng kiểu XeDap
n Ví dụ: lớp XeDap là một thiết kế chung cho nhiều đối
tượng xe đạp được tạo ra Đối tượng của lớp XeDap
n 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 đó
n Một đối tượng là một thể hiện cụ thể của một lớp.
n Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap
n Mỗi thể hiện có thể có những thuộc tính thể hiện khác nhau
n 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. 17 18 Nội dung
2. Công nghệ đối tượng (OT) 1.
Lập trình hướng đối tượng
n Công nghệ đối tượng là một tập các quy tắc 2.
Công nghệ hướng đối tượng (trừu tượng hóa, đóng 3. Ngôn ngữ lập trình Java
gói, đa hình), các hướng 4. Ví dụ và bài tập
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 20 5 9/10/18 Đặc tính của LT HĐT
2.1. Lịch sử phát triển của OT
n Alan Kay đã tổng hợp các đặc tính của LT HĐT:
n Các mốc chính của công nghệ đối tượng
n 1. Tất cả đều là đối tượng.
n 2. Chương trình phần mềm có thể coi là một tập hợp Simula C ++ The UML
các đối tượng tương tác với nhau
n 3. Mỗi đối tượng trong chương trình có các dữ liệu 1967 Late 1980s 1996
độc lập của mình và chiếm bộ nhớ riêng của mình. 1972 1991 2004
n 4. Mỗi đối tượng đều có dạng đặc trưng của lớp các đối tượng đó. Smalltalk Java UML 2
n 5. Tất cả các đối tượng thuộc về cùng một lớp đều có các hành vi giống nhau 21 22
2.2. OT được sử dụng ở đâu?
2.2. OO được sử dụng ở đâu? (2)
n Các hệ thống Client/Server và phát triển
n Hệ nhúng (embedded system) Web
n Hệ thống thời gian thực (real-time)
n Công nghệ đối tượng cho phép các hệ thống
n Công nghệ đối tượng cho
phép các công ty đóng gói
thời gian thực có thể phát triển với chất
thông tin doanh nghiệp trong
lượng cao hơn và linh hoạt hơn
các đối tượng và giúp phân n Hệ thống vệ tinh 4
phối quá trình xử lý qua
n Các hệ thống quốc phòng mạng Internet hoặc một và hàng không vũ trụ mạng máy tính. n … 23 24 6 9/10/18
2.3. Các nguyên lý cơ bản của OO
a. Trừu tượng hóa (Abstraction)
n Là quá trình loại bỏ đi các thông tin/tính chất cụ thể
và giữ lại những thông tin/tính chất chung. Hướng đối tượng
n 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. i
n Phụ thuộc vào góc nhìn ó u g kế nh g
n Quan trọng trong ngữ cảnh này nhưng lại không có ý ừ n ợ g hì
nghĩa nhiều trong ngữ cảnh khác. Tr n ừa tư hóa Th Đa Đó 25 26 Ví dụ: Trừu tượng hóa b. Đóng gói (Encapsulation) 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ố) 27 28 7 9/10/18 b. Đóng gói (Encapsulation) b. Đóng gói (Encapsulation)
n Che giấu, ẩn đi chi tiết thực hiện bên trong
n Cung cấp cho thế giới bên ngoài một giao diện
n Lợi ích: Người dùng không phụ thuộc vào Class: Professor
việc sửa đổi sự thực thi bên trong Attribute: hireDate Attribute: name Method: getName()
Method: setHireDate (Date hireDate)
Tăng cường tính mềm dẻo 29 30 Minh họa việc đóng gói c. Thừa kế (Inheritance) n Giáo sư Clark có thể Gia tăng mức độ dạy 4 lớp trong học trừu tượng hóa Giáo sư Clark Ac Vehicle kỳ tới (thay vì tối ceptCou đa 3 lớp như các rseOfferin học kỳ trước) g() rades() Automobile Motorcycle Bus itFinalG Name: J Clark bm Employee ID: 567138 Su HireDate: 07/25/1991 SetMaxLoad(4) Se Status: Tenured tM Discipline: Finance a Sedan Sports Car School Bus Luxury Bus x MaxLoad:4 L Giảm mức độ oad trừu tượng hóa () TakeSabbatical() 31 3535 8 9/10/18 d. Đa hình (polymorphism) Nội dung
n Đa hình: “one name, many forms” 1.
Lập trình hướng đối tượng
n Nạp chồng phương thức (Method overloading) 2.
Công nghệ hướng đối tượng n Add(int x, int y) n Add(float x, float y) 3.
Ngôn ngữ lập trình Java
n Add(float x, float y, float z) 4. Ví dụ và bài tập
n Ghi đè phương thức (Method Overriding)
n Một Intern (thực tập sinh) là một Intern, đồng thời
cũng có thể được xem là một Staff (nhân viên)
n Phương thức quẹt thẻ của Intern khác với phương
thức quẹt thẻ của Staff 36 37 3.1. Java là gì? 3.1. Java là gì?
n Java là một ngôn ngữ lập trình HĐT được phát triển
n Ngày nay, nhắc đến Java, không còn nhắc bởi Sun Microsystems.
đế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.
n Java là một ngôn ngữ lập trình khá trẻ
n Java có một cộng đồng phát triển mạnh mẽ
n Ban đầu được sử dụng để xây
n Một tập hợp các thư viện với số lượng lớn (từ
dựng ứng dụng điều khiển các Sun và các nguồn khá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…
n Bắt đầu được sử dụng từ năm Green Team and James Gosling 1995 (the leader) 38 39 9 9/10/18 3.2. C J2SE: Cung các ấp c ấn ác thành phần J2EE: b Xây ản dựng c dự a tr a J ên nề av n a
J2SE (Java 2 Platform Standard Edition)
cốt lõi nhất để tả x ng ây c c ủáa c J2 ứ SE, ng cung cấp các dụng deskto tín p, h s n erăvng
er .để xây dựng một
J2ME: Cung cấp một môi trường
nền tảng đầy đủ Ja, ổn va đị Ca nh, rd: an Cung cấp môi
mạnh mẽ, linh hoạt cho các ứng n http://java.sun.com/j2se toàn và nhanh tr để x ườ â ngy dự an ng t
dụng chạy trên di động oàn c v h àạ cá y tcr ên
các ứng dụng doanh các ng th hi ẻ ệ t p
thiết bị nhúng khác (P h D ô A n s g , b m ộ g inh i ải
n Java 2 Runtime Environment, Standard Edition (J2RE): mã cáp (s tr mu ayrề t n c hì arnh, d) m vàá y c i á n…) c thiết
n Môi trường thực thi hay JRE cung cấp các Java API, máy
bị giới hạn về bộ nhớ và
ảo Java (JVM) và các thành phần cần thiết khác để chạy khả năng xử lý.
các applet và các ứng dụng viết bằng Java.
n Java 2 Software Development Kit, Standard Edition (J2SDK)
n 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. 40 41
J2EE (Java 2 Platform Enterprise Edition)
Lịch sử phát triển của J2SE n http://java.sun.com/j2ee
n JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
n Service-Oriented Architecture (SOA) và Web
n JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997 services
n JDK 1.1.6 (Abigail): 24 tháng 4, 1998 n Các ứng dụng Web
n JDK 1.1.7 (Brutus): 28 tháng 9, 1998 n Servlet/JSP
n JDK 1.1.8 (Chelsea): 8 tháng 4, 1999 n JSF…
n J2SE 1.2 (Playground): 4 tháng 12, 1998
n Các ứng dụng doanh nghiệp
n J2SE 1.2.1 (none): 30 tháng 3, 1999 n EJB
n J2SE 1.2.2 (Cricket): 8 tháng 7, 1999 n JavaMail…
n J2SE 1.3 (Kestrel): 8 tháng 5, 2000 n …
n J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001 43 44 10 9/10/18
Lịch sử phát triển của J2SE (2)
3.2. Nền tảng của Java (Java platform)
n J2SE 1.4.0 (Merlin) 13 tháng 2, 2002 n Platform là môi trường
phát triển hoặc triển khai.
n J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
n Java platform có thể chạy
n J2SE 1.4.2 (Mantis) 26 tháng 6, 2003 trên mọi hệ điều hành
n J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
n Các platform khác phụ thuộc vào phần cứng
n Java SE 6 (Mustang), 11 tháng 12, 2006 n Java platform cung cấp:
n Các bản cập nhật 2 và 3 được đưa ra vào năm 2007
n Máy ảo Java - Java Virtual Machine (JVM).
n Bản cập nhật 4 đưa ra tháng 1 năm 2008.
n Giao diện lập trình ứng dụng -
n Java SE 7 (Dolphin), 4/2008. Application Programming Interface (API). 45 46
3.3. Mô hình dịch của Java
3.3. Mô hình dịch của Java (2)
n a. Mô hình biên dịch truyền thống:
n b. Mô hình dịch của Java:
n Mã nguồn được biên dịch thành mã nhị phân. n Mã nguồn được %javac Hello.java biên dịch thành %cc Hello.c –o Hello Hello.class created bytecode rồi được % java Hello % Hello thông dịch bởi JVM. Run JVM Byte Code Run Binary Code 47 48 11 9/10/18
3.3. Mô hình dịch của Java (3)
3.4. Các tính năng của Java
n Máy ảo Java (Java Virtual Machine): n Java được thiết kế:
n Máy ảo Java là trái tim của ngôn ngữ Java
n Ngôn ngữ lập trình mạnh, đầy đủ tính năng và
n Đem đến cho các chương trình Java khả năng viết một lần nhưng
thuần hướng đối tượng. chạy được ở mọi nơi
n Dễ học, cú pháp tương tự như C++
n Tạo ra môi trường bên trong để thực thi lệnh: n Nạp các file .class n Độc lập nền tảng n Quản lý bộ nhớ
n Hỗ trợ phát triển các ứng dụng trong môi trường n Dọn “rác” mạng
n Trình thông dịch “Just In Time - JIT”
n Lý tưởng cho các ứng dụng Web
n Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại CPU. 49 50
3.4. Các tính năng của Java (2)
3.4. Các tính năng của Java (3) n Mạnh mẽ n Đơn giản
n Thư viện lớp: Hàng trăm lớp được viết trước với nhiều n Từ khóa
các phương thức tiện ích. n Java có 50 từ khóa
n Java sử dụng mô hình con trỏ không cho phép truy cập
n So với Cobol hay VB có tới hàng trăm từ khóa
trực tiếp vào bộ nhớ; bộ nhớ không thể ghi đè.
n Có ý nghĩa đặc biệt trong ngôn ngữ
n Được sử dụng để viết các câu lệnh n Hướng đối tượng n Network capable
n 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”
n Java hỗ trợ phát triển các ứng dụng phân tán
n Một số loại ứng dụng của Java được thiết kế để được
n 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
truy cập thông qua trình duyệt Web. 51 52 12 9/10/18
3.4. Các tính năng của Java (3)
3.4. Các tính năng của Java (4) n Java có 50 từ khóa n Bảo mật
n assert (New in 1.5) enum (New in 1.5)
n Java authentication dựa vào các phương
pháp mã hóa khóa công khai
n Mô hình con trỏ Java bảo vệ dữ liệu riêng tư
trong các đối tượng và ngăn các ứng dụng
chưa được authorized không được phép truy cập cấu trúc dữ liệu 53 54
3.4. Các tính năng của Java (5)
3.4. Các tính năng của Java (6) n Đa luồng (Multi-threaded)
n Các môi trường phát triển
n Cho phép chương trình của bạn chạy nhiều hơn một tác n Java Development Kit
vụ tại cùng một thời điểm.
n Miễn phí trên Sun Website: java.sun.com n Khả chuyển (Portable)
n Bao gồm: Trình biên dịch, JVM và các lớp đã có
n Các chương trình có thể viết và biên dịch một lần, rồi
n Integrated Development Environments (IDEs):
chạy trên các nền tảng khác Cung cấp:
n Nhờ mô hình biên dịch/thông dịch
n Các trình soạn thảo phức tạp
(WORE – Write Once, Run Everywhere) n Các công cụ gỡ lỗi
n Các công cụ phát triển đồ họa 55 56 13 9/10/18
3.5. Các kiểu chương trình Java
3.5. Các kiểu chương trình Java (2) n Ứng dụng (Application)
n Ứng dụng Web (Web application)
n Không cần chạy trên các trình duyệt
n Tạo ra các nội dung động trên server thay cho
n 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) trên trình duyệt.
n Phương thức main() là điểm bắt đầu thực hiện ứng dụng
n Chạy trong các ứng dụng server n Applet
n Servlet: Kiểm soát các yêu cầu từ trình duyệt và trả lại các phản hồi
n Chương trình đồ họa chạy trên trình duyệt tại máy trạm (client).
n JavaServer Page (JSP): Các trang HTML được
n Có thể được xem bằng appletviewer hoặc nhúng trong
trình duyệt Web có cài JVM. nhúng với mã Java. 57 58 Nội dung Ví dụ 1 - Hel oWorld // HelloWorld.java 1.
Lập trình hướng đối tượng
// Chuong trinh hien thi dong chu “Hello World” 2.
Công nghệ hướng đối tượng public class HelloWorld {
/* Phuong thuc main se duoc goi dau tien
3. Ngôn ngữ lập trình Java
trong bat cu ung dung Java nao*/
public static void main(String args[]){
4. Ví dụ và bài tập
System.out.println( “Hello World!" );
} // ket thuc phuong thuc main
} // ket thuc lop HelloWorld 59 60 14 9/10/18 Ví dụ 1 (tiếp)
Cài đặt và chạy thử chương trình Java n Chú thích (Comment)
n 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)
n Trên 1 dòng: Bắt đầu bằng: //
n Bước 2: Cài trình soạn thảo n Nhiều dòng: /* ... */
TextPad/JCreator/NetBean/Eclipse…
n Java phân biệt chữ hoa chữ thường
n Bước 3: Lập trình/Viết mã nguồn n Bước 4: Dịch
n Từ khóa có sẵn của Java: n cmd: javac Hel oWorld.java n class: Khai báo lớp n Textpad: Ctrl + 1
n public: Quy định phạm vi truy cập
n JCreator: F7 hoặc Build à Build Project/File
n Tên lớp chứa hàm main phải trùng với tên
n Bước 5: Chạy chương trình file .java. n cmd: java Hel oWorld.class n Textpad: Ctrl + 2
n JCreator: F5 hoặc Run à Run Project/File 61 62 Biến môi trường
n PATH = …;C:\Program Files\Java\jdk1.6\bin n CLASSPATH = C:\Program
Files\Java\jdk1.6\lib;.;C:\Program Files\Java\jdk1.6\include 63 64 15 9/10/18 Ví dụ 2 - GUI
Ví dụ 3 – Nhập, xuất dữ liệu
import javax.swing.JOptionPane;
import javax.swing.JOptionPane;
public class FirstDialog{
public class HelloNameDialog{
public static void main(String[] args){
public static void main(String[] args){ String result;
JOptionPane.showMessageDialog(null,
result = JOptionPane.showInputDialog(“Hay nhap ”Xin chao ban!”); ten ban:”); System.exit(0);
JOptionPane.showMessageDialog(null, }
”Xin chao “+ result + “!”); System.exit(0); } } } 65 66 Ví dụ 4 Bài tập: import java.util.Scanner;
n 1. Viết chương trình nhập hai số nguyên và public class Demo {
public static void main(String[] args) {
hiển thị tổng, hiệu, tích và thương của 2 số
Scanner s = new Scanner(System.in); nguyên vừa nhập System.out.print("Nhap i = "); int i = s.nextInt(); System.out.println(i); System.out.print("Nhap l = "); long l = s.nextLong(); System.out.println(l); s.close(); } } 67 68 16 8/31/17 Mục tiêu bài học
Bộ môn Công nghệ Phần mềm
n Nêu được các quy ước đặt tên trong các chương Viện CNTT & TT
trình Java, tạo ra các định danh hợp lệ
Trường Đại học Bách Khoa Hà Nội
n Mô tả các kiểu dữ liệu cơ bản trong Java và cách sử dụng n Các toán tử
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
n Giải thích về phạm vi của biến
Bài 02. Cú pháp Java cơ bản
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
n 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 8/31/17 1. Định danh 1. Định danh (2) n Định danh:
n Quy ước với định danh (naming convention):
n Xâu ký tự thể hiện tên các biến, các
phương thức, các lớp và nhãn
n Bắt đầu bằng chữ cái
n Gói (package): tất cả sử dụng chữ thường
n Quy định với định danh: n theexample
n Các ký tự có thể là chữ số, chữ cái, '$' hoặc ‘_’
n Lớp (Class): viết hoa chữ cái đầu tiên trong các từ ghép lại n Tên không được phép: n TheExample
n Bắt đầu bởi một chữ số n Trùng với từ khóa
n Phương thức/thuộc tính (method/field): Bắt đầu bằng
chữ thường, viết hoa chữ cái đầu tiên trong các từ còn lại n Chứa dấu cách
n Phân biệt chữ hoa chữ thường n theExample
n Yourname, yourname, YourName và
n Hằng (constants): Tất cả viết hoa
yourName là 4 định danh khác nhau n THE_EXAMPLE 5 6 1. Định danh (3) Nội dung n Literals 1. Định danh null true false n Từ khóa (keyword)
2. Các kiểu dữ liệu
abstract assert boolean break byte case catch char
class continue default do double else extends final 3. Toán tử
finally float for if implements import instanceof
int interface long native new package private 4. Cấu trúc điều khiển
protected public return short static strictfp super
switch synchronized this throw throws transient try 5. Mảng void volatile while
n Từ dành riêng (reserved for future use)
byvalue cast const future generic goto inner operator outer rest var volatile 7 8 2 8/31/17 2. Các kiểu dữ liệu
2.1. Kiểu dữ liệu nguyên thủy
n Trong Java kiểu dữ liệu được chia thành hai
n Mọi biến đều phải khai báo loại: một kiểu dữ liệu
n Kiểu dữ liệu nguyên thủy (primitive)
n Các kiểu dữ liệu cơ bản chứa n Số nguyên (integer) một giá trị đơn n Số thực (float)
n Kích thước và định dạng phải n Ký tự (char)
phù hợp với kiểu của nó n Giá trị logic (boolean)
n Kiểu dữ liệu tham chiếu (reference)
n Java phân loại thành 4 kiểu n Mảng (array) dữ liệu nguyên thủy n Đối tượng (object) 9 10 a. Số nguyên b. Số thực n Số nguyên có dấu
n Khởi tạo với giá trị 0.0
n Khởi tạo với giá trị 0 11 12 3 8/31/17 c. Ký tự d. Giá trị logic
n Ký tự Unicode không dấu, được đặt giữa hai dấu
n Giá trị boolean được xác định rõ ràng trong Java nháy đơn
n Một giá trị int không thể sử dụng thay cho giá trị boolean n 2 cách gán giá trị:
n Có thể lưu trữ giá trị hoặc true hoặc false
n Sử dụng các chữ số trong hệ 16: char uni ='\u05D0';
n Biến boolean được khởi tạo là false
n Sử dụng ký tự: char a = ‘A’;
n Giá trị mặc định là giá trị zero (\u0000) 13 14
2.2. Giá trị hằng (literal) a. Số nguyên
n Literal là một giá trị của các kiểu dữ liệu
n Hệ cơ số 8 (Octals) bắt đầu với chữ số 0
nguyên thủy và xâu ký tự.
n 032 = 011 010(2) = 16 + 8 + 2 = 26(10)
n Hệ cơ số 16 (Hexadecimals) bắt đầu với 0 và ký n Gồm 5 loại: tự x n integer Literals
n 0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10) n floating point integer…………..7
n Kết thúc bởi ký tự “L” thể hiện kiểu dữ liệu long n boolean floating point…7.0f n 26L n character boolean……….true
n Ký tự hoa, thường cho giá trị bằng nhau n string character……….'A' string………….."A"
n 0x1a , 0x1A , 0X1a , 0X1A đều có giá trị 26 trong hệ decimal 15 16 4