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 (2017)

123 887 1

Đ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

Nội dung

Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 2 Ngôn ngữ lập trình Java cung cấp cho người học các kiến thứ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.

Trang 1

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

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

Just-In-máy 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 EclipseTạ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 MyFirstJavaClassTê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

numbers

float Single-precision floating

double Double-precision floating

Other 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

Trang 36

Phạm vi của biến

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

Phép toán quan hệ

Operato

> 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

Phép toán điều kiện

Operato

&& 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

Phép toán shift trên bit

Operato

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

Phép toán trên bit

Operato

& 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

methods 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

Biểu thức

• Biểu thức là một chuỗi các biến, toán tử, lời gọi phương thức được tạo thành theo đúng cú pháp của ngôn ngữ Kết quả trả về một giá trị

Ví dụ:

aChar = ‘S’, “The string “ + “value”, Character.isUpperCase(aChar)

• 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 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 57

int n = 10, m = 10;

n = m + 1; //n = 11}

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

Điểm trung bình (dtb) Xếp loại

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

} 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 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 80

if (j == 2) continue outer;

if (j == 3) break;

if (j == 4) break outer;

} }

outer System.out.println(“ sum = “ + sum);

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):

int a[] = { 1, 4, 12, 7, 8};

//hoặc int [] a = { 1, 4, 12, 7, 8};

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 87

{17, 18, 19, 20}};

//Có thể không cần chỉ định //số dòng và số cột cho

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 toLowerCase() chuyển thành chữ thường String s = String s1 = s.toLowerCase();"Lap trinh Java";

//s1 = “lap trinh java”

String toUpperCase() chuyển thành chữ hoa String s = String s1 = s.toUpperCase();"Lap trinh Java";

//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

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 = char []arr = s1.toCharArray();"abcd";

//arr = ‘a’, ‘b’, ‘c’, ‘d’

Trang 95

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

Trang 96

Các phương thức của String

String replace (char

oldChar, char newChar)

String s1 = "huong doi tuong"; s1 = s1.replace("ng""mh"); //s1 = “huomh doi tuomh”

String s1 = "huong doi tuong"; s1=s1.replaceFirst("ng""mh"); //s1 = “huomh doi tuong”

String[] split (String

regex) chia xâu thành các xâu con bởi xâu regex

String s1 = "Lap,trinh;Java"; String arr[] = s1.split("[ ,;]"); //arr = “Lap”, “trinh”, “Java”

String trim() trả về xâu được loại bỏ dấu cách ở đầu và cuối

Trang 97

char []data = {'a''b''c''d'};

char []data = {'a''b''c''d'};

String s = String.valueOf(data, 1, 2);

//s = “bc”

static String format()

trả về xâu hiển thị giá trị của đối tượng bất kỳ theo định dạng

Trang 98

Bài tập

Cho bài toán tìm từ dài nhất

• Đầu vào: một câu s

• Đầu ra: từ có độ dài dài nhất

Lưu ý: Các từ có thể cách nhau bởi khoảng trắng, dấu chấm câu

Trang 99

Bài tập

Cho bài toán đảo các từ trong câu

• Đầu vào: một câu s

• Đầu ra: câu s sau khi đảo các từ

• Ví dụ:

s = “ca an kien”

 đảo từ: “kien an ca”

Ngày đăng: 15/05/2017, 10:28

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w