1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 2 - Trần Minh Thái

123 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 123
Dung lượng 1,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Lập trình hướng đối tượng - Chương 2: Ngôn ngữ lập trình Java giới thiệu tới người học lịch sử ngôn ngữ Java, giới thiệu các IDE cơ bản, cách biên dịch và chạy chương trình Java, các kiểu dữ liệu và cấu trúc dữ liệu cơ bản trong Java, phương thức trong Java,... Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

( O bject O riented P rogramming)

Trang 2

Nội dung

1 Lịch sử ngôn ngữ Java

2 Giới thiệu các IDE cơ bản

3 Cách biên dịch và chạy chương trình Java

4 Các kiểu dữ liệu và cấu trúc dữ liệu cơ bản trong Java

5 Phương thức trong Java

6 Khai báo phương thức

7 Phương thức tĩnh

8 Nạp chồng các phương thức

Trang 3

Cơ bản về ngôn ngữ Java

Trang 4

Lịch sử ngôn ngữ Java

James Gosling và nhóm kỹ sư của Sun Microsystems bắt đầu dự án ngôn ngữ Java vào tháng 6 năm 1991 để lập trình điều khiển các thiết bị điện tử (tivi, máy giặt, tủ lạnh, …)

Ngôn ngữ nhanh, gọn, hiệu quả và độc lập thiết bị

Ra đời 1995, tên gọi ban đầu “Oak” sau đó đổi tên thành

“Java”

Kế thừa cú pháp của C & đặc trưng Hướng đối tượng của C++

Trang 5

Lịch sử ngôn ngữ Java

• Tháng 6/1995 Sun giới thiệu ngôn ngữ Java (Java 1.0)

• 13/11/2006, Sun phát hành Java với phần lớn miễn phí

và phần mềm mã nguồn mở theo các điều khoản GNU, General Public License (GPL)

• Ngày 08/05/ 2007, Sun cung cấp miễn phí code lõi của Java và open-source

Trang 6

Lịch sử ngôn ngữ Java

Các phiên bản

• Nền tảng J2SE (Java Standard Edition) tiêu chuẩn

• Nền tảng J2EE (Java Enterprise Applications Edition) cho các ứng dụng doanh nghiệp

• Nền tảng J2ME (Java Mobile Applications Edition) cho các ứng dụng di động

Trang 7

Ngôn ngữ Java

• Là một ngôn ngữ hướng đối tượng (Object Oriented

Programming) đầy đủ: không thể viết theo hướng thủ

tục

• Cho phép tạo Application hoặc Applet (chạy trên trình duyệt có hỗ trợ Java)

• Sử dụng 2 cơ chế: Interpreter | Compiler

• Viết một lần (Write Once), Chạy ở mọi thiết bị khác nhau (Run Anywhere)

Trang 8

Đặc điểm ngôn ngữ Java

1 Đơn giản (Simple)

2 Hoàn toàn hướng đối tượng (Object Oriented)

3 Độc lập phần cứng và hệ điều hành (Platform independent)

4 Bảo mật (Secure)

5 Mạnh mẽ (Robust)

6 Đa luồng (Multithreading)

7 Hiệu suất cao (High performance)

8 Phân tán (Distributed)

9 Linh động (Dynamic)

Trang 9

Đặc điểm ngôn ngữ Java

Đơn giản: Java được thiết kế để dễ học, quen thuộc Nếu

hiểu được những khái niệm cơ bản về OOP, sẽ dễ dàng làm chủ Java

Loại bỏ những đặc trưng phức tạp:

 Con trỏ

 Định nghĩa chồng toán tử

 Đa kế thừa thay bằng interface

 Loại bỏ struct và union

 …

Trang 10

Đặc điểm ngôn ngữ Java

• Hướng đối tượng: Mọi thứ là một đối tượng Java có

thể dễ dàng mở rộng kể từ khi nó được dựa trên mô hình đối tượng

• Độc lập phần cứng và hệ điều hành: Khi Java được

biên dịch, nó không được biên dịch vào một nền tảng

cụ thể mà là bytecode Bytecode này được thông dịch bởi máy ảo (JVM) tùy vào nền tảng mà nó đang thực thi  Không cần biên dịch lại mã nguồn

Trang 11

Đặc điểm của ngôn ngữ Java

• Bảo mật: Quản lý thực thi chương trình ở nhiều mức

1 Dữ liệu và phương thức được đóng gói bên trong lớp

2 Trình biên dịch kiểm soát mã an toàn và kiểm soát

tuân thủ đúng quy tắc của Java

3 Trình thông dịch kiểm soát bytecode đảm bảo quy tắc

an toàn trước khi thực thi

4 Kiểm soát việc nạp vào bộ nhớ, giới hạn truy xuất

trước khi nạp vào hệ thống

Trang 12

Đặc điểm của ngôn ngữ Java

• Mạnh mẽ: Java nỗ lực loại trừ tình huống dễ bị lỗi

bằng cách nhấn mạnh chủ yếu vào việc kiểm tra lỗi thời điểm biên dịch và thực thi

Khai báo kiểu dữ liệu tường minh

Không dùng con trỏ và phép toán con trỏ

Kiểm soát việc truy xuất ngoài phạm vi dữ liệu mảng

Cấp phát và giải phóng bộ nhớ được thực hiện tự động (garbage collection)

Cơ chế bẫy lỗi giúp kiểm soát và đơn giản trong xử lý lỗi và phục hồi sau lỗi

Trang 13

Đặc điểm của ngôn ngữ Java

• Đa luồng: Có thể viết chương trình có thể làm nhiều việc

cùng một lúc Cho phép các nhà phát triển xây dựng các ứng dụng tương tác chạy đồng thời & đồng bộ

• Hiệu suất cao: Với việc sử dụng các trình biên dịch

Just-In-Time (bytecode  machine code)

• Phân tán: Java được thiết kế để hỗ trợ ứng dụng chạy

trên mạng, cho môi trường phân tán, chạy trên nhiều nền khác nhau của Internet

Trang 14

Đặc điểm của ngôn ngữ Java

• Linh động: Java được coi là linh động hơn so với C

hoặc C++ vì nó được thiết kế để thích ứng với môi trường phát triển mở

• Các chương trình Java có thể xử lý số lượng lớn thông tin thực thi mà có thể được dùng để xác minh và giải quyết các truy cập đến các đối tượng trong thời gian thực thi

Trang 15

Các thành phần trong môi trường Java

1 Java language

2 Bytecode definitions

3 Java/ Sun Class libraries

4 The Java Virtual Machine (JVM)

5 The structure of class file

Trang 16

Chương trình

Java (file.java)

javac.exe : compiler

Dùng cơ chế Time thông dịch bytecode thành lệnh máy

Just-In-cụ thể

Trang 17

Java Run-time Environment (JRE) Compile-Time

Trang 18

Java Run-time

Environment (JRE) Run-Time

Trang 20

Các công cụ chính trong JDK

Trong thư mục BIN của JDK có:

• Javac (Java Compiler): Dịch source code  Independent Bytecode

• java : Thực thi class file trong JVM

• appletviewer : cho phép chạy applet mà không cần Browser

Trang 21

Các IDE cơ bản

• Netbeans: miễn phí và open-source

http://www.netbeans.org/index.html

• Eclipse: open-source http://www.eclipse.org/

• Thiết lập môi trường làm việc cho Java sau khi cài đặt, ví dụ

Windows: Thêm vào Path ‘c:\Program Files\java\jdk\bin’

Trong Linux, UNIX,Solaris, FreeBSD: Thêm vào cuối

file bashrc: ‘export PATH=/path/to/java:$PATH'

Kiểm tra xem cài đặt thành công?  dùng lệnh

javac -version java -version

Trang 22

Sử dụng IDE Eclipse

• Tạo mới Project

Trang 24

Sử dụng IDE Eclipse

Tạo mới class

Trang 26

Sử dụng IDE Eclipse

Trang 27

Sử dụng IDE Eclipse

• Viết code

Trang 28

Sử dụng IDE Eclipse

Trang 30

• Quy định với định danh:

• Không đặt trùng với từ khóa

• Không bắt đầu bằng chữ số

• Ký tự được phép sử dụng: chữ cái, chữ số, $, _

• Phân biệt chữ hoa, chữ thường

age, $salary, _value, 1_value

123abc, -salary

Trang 31

Keyword

Trang 32

Cách đặt tên trong Java

Phân biệt hoa thường (Case Sensitivity): Hello hello

Tên lớp: Ký tự đầu của mỗi từ phải viết IN HOA

Ví dụ: class MyFirstJavaClass

Tên phương thức: từ đầu viết chữ thường, những từ sau viết

IN HOA ký tự đầu

Ví dụ: public void myMethodName()

Tên chương trình: Đặt tên trùng khớp với tên lớp

Ví dụ: Lớp 'MyFirstJavaProgram’

sẽ được lưu là 'MyFirstJavaProgram.java'

Hằng số viết IN HOA

Ví dụ: MAX_LINE

Trang 33

Các kiểu dữ liệu cơ bản

• Biến là một mục dữ liệu được đặt tên

• Cách khai báo một biến:

type name [= <giá trị khởi tạo>];

byte largestByte = Byte.MAX_VALUE;

short largestShort = Short.MAX_VALUE;

int largestInteger = Integer.MAX_VALUE;

long largestLong = Long.MAX_VALUE;

float largestFloat = Float.MAX_VALUE;

double largestDouble = Double.MAX_VALUE; char aChar = 'S';

boolean aBoolean = true;

Trang 34

Các kiểu dữ liệu cơ bản

Integers

byte Byte-length integer 8-bit two’s

complement short Short integer 16-bit two’s

complement int Integer 32-bit two’s

complement long Long integer 64-bit two’s

complement Real

numbers

float Single-precision floating

point

32-bit IEEE 754

double Double-precision floating

point 64-bit IEEE 754Other types

char A single character 16-bit Unicode

character boolean A boolean value

(true/false) true or false

Trang 35

Các kiểu dữ liệu cơ bản

Literal Value Kiểu dữ liệu

8864L long 37.266 double 37.266D double 87.363F float 26.77e3 double

true boolean false boolean

Trang 36

Phạm vi của biến

Trang 37

Khai báo biến hằng

• Giá trị của biến này không thể thay đổi sau khi khởi tạo

• Khai báo:

final type variable [= <biểu thức>];

• Ví dụ:

final int aFinalVar = 0;

final int blankFinal;

blankFinal = 0;

• Mọi thay đổi biến final sau khi đã khởi tạo sẽ phát sinh lỗi compile time

Trang 38

% op1 % op2 Phép lấy phần dư của op1 /

op2

Chú ý với phép toán %: Dùng cho cả số thực

Quy tắc: a % b = (dấu của a) abs(a) % abs(b);

Ví dụ: -5 % 3 = -2; -5 % -3 = -2; 5 % 3 = 2; 5 % -3 = 2

Trang 40

Phép toán số học (viết tắt)

++ op++ Tăng op lên 1; trả về giá trị của op

trước khi tăng ++ ++op Tăng op lên 1; trả về giá trị của op

sau khi tăng op Giảm op đi 1; trả về giá trị của op

trước khi giảm op Giảm op đi 1; trả về giá trị của op sau

khi giảm

Ví dụ 1: a = 5; b = a++ + ++a + a++; //a = ?, b = ?;

Ví dụ 2: a = 5; b = a + ++a + a++; //a = ?, b = ?;

Trang 41

> op1 > op2 Trả về true nếu op1 lớn hơn op2

>= op1 >= op2 Trả về true nếu op1 lớn hơn hoặc bằng

op2

< op1 < op2 Trả về true nếu op1 nhỏ hơn op2

<= op1 <= op2 Trả về true nếu op1 nhỏ hơn hoặc bằng

op2

== op1 == op2 Trả về true nếu op1 bằng op2 (hoặc nếu

2 biến đều reference đến 1 object)

!= op1 != op2 Trả về true nếu op1 khác op2 (hoặc nếu

2 biến reference đến 2 object khác nhau)

Trang 42

&& op1 && op2 Trả về true nếu op1 và op2 true Không

lượng giá op2 nếu op1 false

|| op1 || op2 Trả về true nếu op1 hoặc op2 true

Không lượng giá op2 nếu op1 true

! !op Trả về true nếu op false

Trang 43

<< op1 << op2 Dịch trái op1 op2 bits.

>> op1 >> op2 Dịch phải op1 op2 bits Lấp đầy bên bên

trái bằng bit dấu (Signed right shift).

>>> op1 >> op2 Dịch phải op1 op2 bits Lấp đầy bên trái

bằng 0 (Unsigned right shift).

• Ví dụ: 13 >> 1: 6; -13 >> 1: -6; -13 >>> 1: 2147483641;

1 << 31: -2147483648

• Trước khi thực hiện các phép toán, các kiểu dữ liệu integer (byte, short, char) được chuyển thành kiểu int Và kết quả trả về là kiểu int (trừ các phép toán ++, , op=)

Trang 44

& op1 & op2 AND bit Chỉ áp dụng cho kiểu integeral.

| op1 | op2 OR bit Chỉ áp dụng cho kiểu integeral.

^ op1 ^ op2 XOR bit Chỉ áp dụng cho kiểu integeral.

~ ~op Lấy bù bit (complement) (0->1, 1->0)

Chỉ áp dụng cho kiểu integral.

Trang 45

Phép toán gán

Operato

= op1 = op2 Gán giá trị op2 cho op1 Trả về giá trị

của op1 sau khi gán.

op= op1 op= op2 Viết tắt của op1 = op1 op op2 Có một

lợi thế: không phải ép kiểu.

Trang 46

Khai báo danh sách các biến.

(type) (type)op Ép kiểu

new Tạo đối tượng Tạo đối tượng/array mới.

instance

of

op1 instanceof op2

Return true nếu op1 là một thể hiện của op2 (op2 là class type, interface type, array type).

Trang 47

• Thứ tự lượng giá các toán hạng trong biểu thức: từ trái -> phải Sau

đó phép toán được thực hiện dựa trên thứ tự tính toán của toán tử

Trang 48

Short-circuit && ||

Trang 49

3. Gọi phương thức: System.out.println(“String”);

4. Tạo đối tượng: Integer obj = new Integer(4);

• Câu lệnh khai báo: double aValue = 933.24;

• Câu lệnh điều khiển: for, if, while, do while, switch, return,

break, continue

Trang 50

Hiển thị dữ liệu

 System.out.println(): Hiển thị dữ liệu và xuống dòng

 System.out.print(): Hiển thị dữ liệu

 System.out.printf(): Hiển thị dữ liệu có định dạng System.out.format(): Hiển thị dữ liệu có định dạng

 Dùng toán tử + để nối các dữ liệu khi hiển thị

Trang 52

Nhập dữ liệu từ bàn phím – java.io.*

1 Đọc dữ liệu vào bộ đệm:

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

2 Chuyển dữ liệu từ bộ đệm vào xâu

Trang 53

Nhập dữ liệu từ bàn phím – java.io.*

Trang 54

Nhập dữ liệu từ bàn phím – java.util.Scanner

Trang 55

Cấu trúc lệnh điều khiển trong Java

Trang 56

 Biến chỉ có phạm vi sử dụng trong khối lệnh đã khai báo

 Với các khối lệnh lồng nhau có khai báo biến trùng tên, biến ở khối lệnh trong được ưu tiên

Trang 57

m = m + 1; //Sai cú pháp

}

Trang 61

Cấu trúc rẽ nhánh if…else

Trang 62

Cấu trúc rẽ nhánh if, if…else

Áp dụng:

• Cho bài toán kiểm tra số chính phương

• Đầu vào: số nguyên n

• Đầu ra: cho biết n là chính phương (căn bậc 2 của n là nguyên) hay không?

Trang 63

Cấu trúc rẽ nhánh if…else lồng nhau

if (bt điều kiện 1){ //Nếu điều kiện 1 đúng

else{ //Không điều kiện nào thoả

khối lệnh cho trường hợp còn lại;

}

Trang 64

Cấu trúc rẽ nhánh if…else lồng nhau

• Xếp loại học tập cho học sinh theo bảng sau

Từ 5.0 đến dưới 7.0 Trung bình

Từ 7.0 đến dưới 8.o Khá

Trang 65

Cấu trúc rẽ nhánh if…else lồng nhau

Trang 66

Cấu trúc rẽ nhánh if else lồng nhau

Áp dụng

• Cho bài toán giải phương trình bậc nhất

• Đầu vào: số nguyên a và b

• Đầu ra: nghiệm của phương trình bậc nhất: ax + b = 0

Trang 67

• giá trị có kiểu byte,

short, char int, String

• break thoát khỏi switch

Trang 69

Cấu trúc switch…case

Áp dụng: Cho bài toán đọc một số nguyên gồm 3 chữ số

• Đầu vào: số nguyên n gồm 3 chữ số

• Đầu ra: số n ghi bằng chữ

Trang 71

Cấu trúc lặp while, do…while

while (bt điều kiện) {

khối lệnh;

}

Lặp khi điều kiện còn đúng Kiểm tra điều kiện trước khi thực hiện lệnh

(có thể không thực hiện lệnh lần nào)

do {

khối lệnh;

} while(bt điều kiện);

Lặp khi điều kiện còn đúng Kiểm tra điều kiện sau khi

thực hiện lệnh (thực hiện ít nhất 1 lần)

Trang 72

Cấu trúc lặp while, do…while

Kết quả

Trang 73

Cấu trúc lặp while, do…while

Kết quả

Trang 74

while vs do…while

Nếu dùng while

Nếu dùng do…while

Trang 75

Cấu trúc lặp while, do…while

Áp dụng:

• Cho bài toán tính giai thừa của số nguyên

• Đầu vào: số nguyên n

• Đầu ra: tính n!

Sử dụng cấu trúc while và do…while

Trang 77

Cấu trúc lặp for

Áp dụng: Viết lại bài toán tính giai thừa dùng cấu trúc lặp for

Trang 78

Cấu trúc lặp for dùng cho mảng và tập hợp

for (biến để chứa giá trị phần tử : tên mảng/ tập hợp) {

Trang 79

Thay đổi cấu trúc lặp break, continue, return

• break dùng để kết thúc vòng lặp for, while, do while

break [label];

• continue dùng để bỏ qua vòng lặp hiện tại

continue [label];

• return thoát khỏi phương thức và trả về giá trị (nếu có)

return giá trị/ biểu thức trả về giá trị;

Trang 81

Cấu trúc dữ liệu cơ bản trong java

Trang 82

Cấu trúc mảng 1 chiều - Array

• Mảng là nhóm giá trị có cùng kiểu, kề nhau, cùng tên gọi, truy xuất phần tử bằng chỉ số đi từ 0

• Định nghĩa có chỉ định số phần tử (size)-> cấp bộ nhớ

char ch[] = new char [5];

• Định nghĩa và khởi tạo ban đầu (in-line initialization):

Trang 83

Toán tử new sẽ xóa bộ nhớ, các giá trị = 0

!!! Sau khi chỉ định kích thước thì kích thước này sẽ không đổi (thuộc tính length của mảng)

Trang 84

Ví dụ tìm max trong mảng 1 chiều

Trang 85

Bài tập

Viết chương trình xoá phần tử có giá trị x nếu có

• Đầu vào: mảng 1 chiều số nguyên a, số nguyên x

• Đầu ra:

• mảng sau khi xoá x (nếu có)

• xuất mảng theo giá trị tăng dần

Trang 89

Mảng 2 chiều

Trang 90

Bài tập

Cho bài toán nhập vào ma trận đối xứng cho đồ thị vô hướng có trọng số

• Đầu vào: số đỉnh của đồ thị (n)

• Đầu ra: ma trận đối xứng

Trang 91

Xâu ký tự - String

• Là một lớp trong Java

• Khai báo

• String variable = new String(literalString);

• String varialbe = new String(char[] charArr)

Trang 92

String s = "Lap trinh Java";

char ch = s.charAt( 5 );

//ch = ‘r’

String toLowerCase() chuyển thành chữ thường String s = "Lap trinh Java";

String s1 = s.toLowerCase(); //s1 = “lap trinh java”

String toUpperCase()

chuyển thành chữ hoa

String s = "Lap trinh Java"; String s1 = s.toUpperCase(); //s1 = “LAP TRINH JAVA”

Trang 93

= 0: 2 xâu giống nhau

< 0: xâu nhỏ hơn anotherString

> 0: xâu lớn hơn anotherString

String s1 = "Lap trinh Java"; String s2 = "Huong doi tuong"; String s3 = "lap trinh java";

int n1 = s1.compareTo(s2); //n1>0

String s1 = "Lap trinh Java"; String s2 = "lap trinh java";

int n = s1.compareTo(s2);

//n=0

Trang 94

boolean

equalsIgnoreCase(String

anotherString)

so sánh với một đối tượng bất kỳ, không phân biệt chữ hoa chữ thường

char[] toCharArray chuyển xâu thành mảng ký tự String s1 = "abcd";

char []arr = s1.toCharArray(); //arr = ‘a’, ‘b’, ‘c’, ‘d’

Trang 95

String s1 = "abcd"; String s2 = "xyz"; s1 = s1.concat(s2);

int indexOf(String str) trả về vị trí của str trong xâu

String s1 = "Lap trinh OOP Java"; String s2 = "Java";

int n = s1.indexOf(s2);

//n = 14

Ngày đăng: 08/05/2021, 14:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm