1. Trang chủ
  2. » Giáo án - Bài giảng

Kỹ thuật lập trình hướng đối tượng với ngôn ngữ java đại học mở hà nội

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

Tiêu đề Kỹ Thuật Lập Trình Hướng Đối Tượng Với Ngôn Ngữ Java
Tác giả Dương Thăng Long, Phạm Công Hòa
Trường học Viện Đại Học Mở Hà Nội
Chuyên ngành Kỹ thuật lập trình hướng đối tượng
Thể loại Sách
Năm xuất bản 2017
Thành phố Hà Nội
Định dạng
Số trang 290
Dung lượng 6,46 MB

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

Nội dung

Chương 2 trình bày các kỹ thuật xử lý cơ bản của ngôn ngữ Java như: nhập, xuất dữ liệu, xử lý mảng, cơ chế bộ nhớ động, các phép xử lý toán học, xâu ký tự,… Chương 3 trình bày các khái n

Trang 1

VIỆN ĐẠI HỌC MỞ HÀ NỘI

Trang 2

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

LỜI NÓI ĐẦU

Lịch sử ra đời và phát triển máy tính điện tử đã có những bước tiến vượt bậc về mọi mặt Bên cạnh đó, công nghệ lập trình ứng dụng cho máy tính đã trải qua những phương pháp từ đơn giản đến hiện đại Xuất phát ban đầu với phương pháp lập trình tuần tự rồi đến phương pháp lập trình cấu trúc (hướng chức năng) và hiện nay là phương pháp hướng đối tượng Phương pháp lập trình cấu trúc là phương pháp tổchức, phân chia chương trình thành các đơn vị nhỏ (gọi là hàm hay thủtục) dựa trên các chức năng cần giải quyết, mỗi đơn vị xử lý các dữ liệu

mà nó cần nhưng được tổ chức tách rời các dữ liệu đó Chúng ta đã kháquen với phương pháp lập trình này thông qua các ngôn ngữ như Pascal,

C

Phương pháp lập trình hướng đối tượng dựa trên việc tổ chức chương trình thành các lớp đối tượng Khác với lập trình cấu trúc, phương pháp này đóng gói các hàm cùng với các dữ liệu mà các hàm

đó xử lý tạo thành lớp Các lớp đối tượng này có thể mô tả các thực thểtrong bài toán một cách chân thực, đầy đủ cả phần dữ liệu và phần xử

lý, tính toán Hiện nay, trong hầu hết các ngôn ngữ cùng với môi trường lập trình hiện đại đều cung cấp phương pháp lập trình hướng đối tượng

Vì vậy việc nghiên cứu và áp dụng phương pháp lập trình này là rất cần thiết đối với tất cả những người quan tâm, yêu thích lập trình

Ngôn ngữ lập trình Java được các nhà nghiên cứu của hãng Sun MicroSystem giới thiệu vào năm 1995 Sau khi ra đời không lâu, ngôn ngữ lập trình này đã được sử dụng rộng rãi và phổ biến đối với các lập trình viên chuyên nghiệp cũng như các nhà phát triển phần mềm Gần đây ngôn ngữ lập trình Java cùng với các công nghệ được phát triển

Trang 3

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

trên nó đã được đưa vào giảng dạy ở các cơ sở đào tạo Một số trường đại học ở Việt Nam giảng dạy môn lập trình Java như một chuyên đề

tự chọn cho các sinh viên ngành công nghệ thông tin giai đoạn chuyên ngành

Nội dung tài liệu này tập trung giới thiệu những kiến thức căn bản nhất của phương pháp lập trình hướng đối tượng và sử dụng ngôn ngữJava để minh họa giúp người đọc tiếp cập dễ dàng Qua đó, chúng ta sẽlàm quen với việc sử dụng, khai thác các kỹ thuật xử lý trong ngôn ngữJava

Cuốn sách gồm 7 chương với nội dung tóm tắt sau:

Chương 1 giới thiệu tổng quan về phương pháp lập trình hướng đối tượng và các khái niệm cơ bản, đề cập một số ngôn ngữ lập trình hướng đối tượng hiện nay

Chương 2 trình bày các kỹ thuật xử lý cơ bản của ngôn ngữ Java như: nhập, xuất dữ liệu, xử lý mảng, cơ chế bộ nhớ động, các phép xử

lý toán học, xâu ký tự,…

Chương 3 trình bày các khái niệm căn bản và trung tâm của lập trình hướng đối tượng như đối tượng, lớp, thuộc tính, phương thức, thông điệp,… Nêu phương pháp định nghĩa lớp, xử lý các đối tượng của lớp, các kỹ thuật lập trình xử lý trong lớp đối tượng

Chương 4 trình bày các vấn đề đặc biệt quan tâm trong việc lập trình xử lý các đối tượng, các vấn đề xây dựng lớp như nạp chồng, tham chiếu thành viên, các lớp con,

Chương 5 đề cập một vấn đề quan trọng tạo nên sức mạnh của lập trình hướng đối tượng trong việc phát triển, mở rộng phần mềm, đó làkhả năng thừa kế của các lớp Các vấn đề chi tiết liên quan đến kế thừa cũng được nêu trong chương này

Trang 4

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

cơ chế ảo và trừu tượng Các kỹ thuật lập trình xử lý liên quan đến cơchế này sẽ được nêu chi tiết trong chương này

Chương 7 nêu các kỹ thuật lập trình mở rộng và nâng cao cung cấp bởi Java như kỹ thuật đa luồng, kỹ thuật giao diện lớp, lớp khung hay giới thiệu phương pháp lập trình giao diện người dùng đồ họa, hướng giao tiếp với mạng

Để có thể đọc hiểu tài liệu này người đọc cần nắm vững các kiến thức về nhập môn lập trình Nhóm tác giả đã cố gắng để hoàn thiện tài liệu này một cách tốt nhất, tuy nhiên trong quá trình biên soạn không thể tránh khỏi những sai sót Chúng tôi rất mong nhận được sự góp ýcủa quý vị độc giả qua địa chỉ email: duongthanglong@hou.edu.vn Xin chân thành cảm ơn!

Hà Nội, ngày 19 tháng 5 năm 2017

Nhóm tác giả

Trang 5

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Chương 1 MỞ ĐẦU 1.1 Phương pháp lập trình hướng đối tượng

Sự ra đời và phát triển của máy tính điện tử kéo theo sự phát triển của các phương pháp lập trình cho máy tính điện tử Bắt đầu từ phương pháp sơ khai, đơn giản nhất là lập trình tuần tự, tiếp đến là lập trình cócấu trúc và hiện nay, được sử dụng rộng rãi trong các môi trường hiện đại là phương pháp lập trình hướng đối tượng (Object-Oriented Programming, viết tắt là OOP)

Phương pháp lập trình có cấu trúc dựa trên cách thức giải quyết bài toán theo chức năng Theo đó, để giải quyết một bài toán lớn chúng

ta phân rã (theo chức năng) thành nhiều bài toán nhỏ, cứ tiếp tục nhưvậy để đạt được những bài toán đơn giản và có thể triển khai lập trình

dễ dàng Quá trình này gọi là phân tích bài toán từ trên xuống down” Phương pháp này dựa trên ngôn ngữ mô tả bài toán, chủ yếu chúng ta phải tìm ra các “động từ” để hình thành các chức năng cần giải quyết trong quá trình phân tích Mỗi bài toán con thu được trong phương pháp này sẽ được lập trình để thực hiện dưới dạng một đơn vịchương trình con (còn gọi là hàm hay thủ tục), như vậy để giải quyết bài toán lớn chúng ta sẽ có nhiều đơn vị chương trình con trong một hệthống chương trình

“top-Khác với lập trình cấu trúc, phương pháp lập trình hướng đối tượng là cách tiếp cận giải quyết bài toán dựa trên các đối tượng tham gia trong bài toán đó Theo đó, chúng ta sẽ xem xét về sự tồn tại của các đối tượng trong bài toán, mối quan hệ tương tác giữa chúng để thực

Trang 6

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

tượng, tức là từ dưới lên (“bottom-up”) Trong tài liệu này không đi sâu trình bày về phương pháp phân tích và thiết hướng đối tượng, chúng ta

sẽ làm quen với phương pháp thông qua ví dụ minh họa so sánh giữa phương pháp dựa trên chức năng và phương pháp dựa trên đối tượng như sau

Để minh họa, chúng ta xem xét bài toán quản lý sinh viên chẳng hạn

Rõ ràng, theo hướng chức năng đơn giản có thể liệt kê các công việc thực hiện gồm: cập nhật hồ sơ sinh viên; lên kế hoạch đào tạo; tổchức thi và lên điểm; Ở đây chúng ta đã phân rã bài toán cần làm thành các công việc (hay chức năng) nhỏ, như vậy về phía lập trình cơbản xây dựng các đơn vị (mô-đun) chương trình con để giải quyết từng công việc này Đối với phương pháp giải quyết dựa trên đối tượng, chúng ta xem xét bài toán này cần có các đối tượng như là sinh viên, các đối tượng giáo viên, các đối tượng người quản lý, các đối tượng môn học, các đối tượng lớp học,… Trong đó, mỗi loại có thể có nhiều đối tượng khác nhau như sinh viên có thể lên đến hàng nghìn đối tượng

Số lượng cho mỗi loại đối tượng là khác nhau và phụ thuộc vào từng

Trang 7

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

bài toán cụ thể Sau đó sẽ xem xét mối quan hệ tương tác giữa các đối tượng này để thực hiện các mục tiêu của bài toán đặt ra

Phương pháp lập trình hướng đối tượng phát sinh nhiều khái niệm mới, yêu cầu người lập trình cần nắm vững và chúng sẽ được trình bày

ở phần tiếp sau

1.2 Các khái niệm, đặc trưng của lập trình hướng đối tượng

1.2.1 Các khái niệm cơ bản trong lập trình hướng đối tượng

- Đối tượng (objects): là các thể hiện trên bộ nhớ của một gói gồm các biến và hàm trong chương trình phần mềm Trong thực tế khái niệm này rất rộng, nó ám chỉ đến mọi sự vật, hiện tượng của thế giới thực Tuy nhiên, khái niệm đối tượng trong lập trình (hay còn gọi là đối tượng phần mềm – software objects) sẽ hạn hẹp hơn nhiều, chủ yếu đề cập đến khía cạnh thông tin của các đối tượng Do đó, chúng ta sẽ có các đối tượng trong không gian thực của bài toán, tương ứng là các đối tượng trong không gian của chương trình phần mềm

Ví dụ về các đối tượng như các sinh viên, giáo viên, môn học, lớp học, hay đối tượng là những chiếc xe máy, xe ô-tô, thậm chí là các bánh

xe, cánh quạt, ngôi nhà…

Chúng ta có thể phân loại gồm đối tượng vô hình và hữu hình Trong ví dụ trên thì môn học, lớp học là các đối tượng vô hình, còn sinh viên, giáo viên,… là các đối tượng hữu hình

a) Thuộc tính

Thuộc tính (properties) là các thành phần (dưới dạng các biến - variables) trong đối tượng để chứa dữ liệu mô tả thông tin hay trạng thái (states) của đối tượng (Hình vẽ 1.2) Ví dụ các đối tượng sinh viên

có thuộc tính là họ và tên, ngày-tháng-năm sinh, quê quán, hay các đối tượng môn học có tên môn học, số tín chỉ, điều kiện tiên quyết,

Trang 8

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

b) Phương thức

Phương thức (methods) là các thành phần (dưới dạng các hàm xửlý) trong đối tượng để mô tả hành vi (behavior) hay khả năng xử lý của đối tượng (Hình vẽ 1.2) Các phương thức khi thực hiện sẽ xử lý trên các thuộc tính và có thể sẽ làm biến đối trạng thái của đối tượng, tức làm thay đổi giá trị trong các thuộc tính Ví dụ các đối tượng xe ô-tô cóphương thức khởi động máy, tăng/giảm ga, chuyển số, hay các đối tượng sinh viên có phương thức nhận bài kiểm tra, làm bài kiểm tra, tham dự buổi học

Hình vẽ sau minh hoạ đối tượng và các thành phần của đối tượng

c) Thông điệp (message)

Chúng ta thấy rằng, các đối tượng phần mềm sẽ quan hệ và tương tác với nhau nhằm để thực hiện mục tiêu của bài toán đặt ra Khi một đối tượng A muốn một đối tượng B thực hiện một phương thức trên B, thì đối tượng A phải gửi một thông điệp tương ứng đến đối tượng B Thực chất ở đây là việc đối tượng A gọi thực hiện một phương thức trên đối tượng B Hình vẽ 1.3 sau minh họa cho thông điệp F(x) được gọi bởi đối tượng A đến đối tượng B

Hình vẽ sau minh hoạ thông điệp từ đối tượng A đến đối tượng B

Trang 9

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Một thông điệp sẽ gồm 3 thành phần như sau:

+ Đối tượng (object): xác định thông điệp sẽ chuyển đến, hay địa chỉ nơi đối tượng được thể hiện trên bộ nhớ mà phương thức sẽ được thực hiện Hình vẽ 1.3 minh họa thông điệp với thành phần đối tượng

là B

+ Tên phương thức (method) cần gọi: trong Hình vẽ 1.3 có tên phương thức là “F”

+ Các tham số truyền cho phương thức (parameters): trong Hình

vẽ 1.3 có tham số là “x” được truyền cho lời gọi phương thức “F” trên đối tượng B

d) Lớp đối tượng

Lớp đối tượng (class, hay gọi tắt là lớp): Trong chương trình hướng đối tượng, có thể xuất hiện nhiều đối tượng có cùng kiểu (hay cùng đặc trưng) như các hình chữ nhật, các công nhân, Do đó, một lớp đối tượng được xem như là một bản thiết kế chi tiết để định nghĩa các thành phần (thuộc tính và phương thức) cho tất cả các đối tượng cùng một kiểu

Trang 10

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Lớp là một khái niệm trừu tượng, nó đóng vai trò như bản mẫu cho việc tạo lập hay xây dựng (tức các thể hiện - instance) các đối tượng trong chương trình Hình vẽ 1.4 sau minh họa cho lớp “Dog” và một đối tượng “Rayne” của “Dog” Lớp “Dog” có các thuộc tính gồm Color (màu), Eye Color (màu mắt), Height (chiều cao), Length (chiều dài), Weight (cân nặng) và đối tượng “Rayne” có các giá trị thuộc tính tương ứng là màu xám, mắt xanh, cao 18 inc, dài 36 inc và nặng 30 pound Các phương thức của “Dog” gồm Sit (ngồi), Lay Down (nằm xuống), Shake (lắc mình), Come (đi)

Hình vẽ sau minh hoạ lớp “Dog” và đối tượng “Rayne”

Hình vẽ sau minh hoạ lớp “Student” và các đối tượng của nó

Trang 11

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

1.2.2 Các đặc trưng của lập trình hướng đối tượng

Cho đến nay, các nhà phát triển ứng dụng cũng như các tác giảnghiên cứu về phương pháp lập trình hướng đối tượng đều đề cập đến

4 đặc trưng cơ bản của phương pháp lập trình hướng đối tượng Các vấn đề chi tiết cũng như phương pháp lập trình khai thác các đặc trưng này sẽ được đề cập ở những chương sau, trong phần này chúng ta điểm qua khái niệm về chúng

- Tính đóng gói (incapsulation): như khái niệm đối tượng đã được

đề cập, mỗi đối tượng bao gồm các thành phần thuộc tính để mô tảthông và và các phương thức thể hiện hành vi xử lý thông tin Như vậy, chúng ta đã đóng gói các thành phần này lại với nhau nhằm phản ánh toàn bộ nội dung của đối tượng (minh họa Hình vẽ 1.6)

Xem xét từ góc độ lập trình chúng ta thấy trong chương trình gồm các biến chứa dữ liệu, các đơn vị xử lý (hàm) thao tác trên các biến nhằm xử lý và tính toán để thực hiện yêu cầu đặt ra của bài toán Vìthế, các kết quả đóng gói từ các biến và các hàm để hình thành các lớp đối tượng sẽ đem lại hiệu quả thực hiện chương trình tốt hay không khác nhau Mục tiêu đặt ra là đóng gói sao cho phản ánh được nội dung thông tin và hành vi xử lý thông tin của các lớp đối tượng mà chương trình cần có

Hình vẽ sau minh họa sự đóng gói các thành phần trong lớp

Trang 12

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Tính đóng gói còn làm đơn giản hóa quá trình tương tác xử lý giữa các đối tượng, bởi vì nó che đi sự phức tạp cố hữu nội tại bên trong một đối tượng Các đối tượng khác tương tác xử lý thông qua những giao tiếp bên ngoài mà không cần phải quan tâm đến sự phức tạp bên trong của đối tượng đó Chẳng hạn, một máy tính cá nhân bản thân bên trong

nó chứa những các bộ phận chi tiết, vi mạch phức tạp nhưng chúng ta

sử dụng chỉ cần vài thao tác bấm nút là có thể tương tác với nó

Hình vẽ sau minh hoạ cơ chế đóng gói nhằm che đi những chi tiết phức tạp bên trong

- Tính che dấu thông tin (data-hiding): các thành phần sau khi được đóng gói chúng ta có thể thiết lập cơ chế về khả năng truy xuất

xử lý đến các thành phần đó hay được gọi là phạm vi tác động (scope)

Rõ ràng, tính chất này có được là nhờ sự đóng gói, minh hoạ bằng hình

vẽ sau

- Tính kế thừa (inheritance): là khái niệm quan trọng trong lập trình hướng đối tượng Thực tế, các đối tượng không hoàn toàn tách rời nhau mà chúng có những quan hệ nhất định Chẳng hạn, con mèo và

Trang 13

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

con chó có chung một số đặc điểm và chúng đều được gọi vật nuôi, hay sinh viên và giáo viên có những đặc điểm chung vì đều là con người Như vậy, nếu các lớp đối tượng có chung một số đặc điểm và được xem như có quan hệ “là” (is a) với lớp đối tượng khác thì chúng ta nói có sự

kế thừa giữa chúng

Hình vẽ sau minh họa sự kế thừa giữa các lớp đối tượng

Trong Hình vẽ 1.9, đối tượng “oHuman” và “oPet” đều kế thừa các đặc điểm từ “oAnimal” tức chúng đều có não bộ (brain = true) vàđều có chân, nhưng số chân giữa “oHuman” và “oPet” khác nhau, tương tự giữa “oDog” và “oCat” với “oPet”

- Tính đa hình (polymorphism): là một khái niệm khá phức tạp trong lập trình hướng đối tượng, nó cho phép nhiều đối tượng xử lý, phản hồi cho cùng một thông điệp Một khía cạnh khác, đa hình tức làcùng một đối nhưng được khai thác, xử lý dưới nhiều hình thức khác nhau Tính đa hình được gắn liền với ngữ cảnh trong chương trình, mỗi ngữ cảnh sẽ cho ra một hình thức khai thác, xử lý cụ thể phù hợp Chẳng hạn, Hình vẽ 1.9 cho thấy một con mèo có thể xem như là một vật nuôi, hoặc một động vật, phụ thuộc vào ngữ cảnh khai thác

Bốn tính chất của phương pháp lập trình hướng đối tượng là những

Trang 14

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

tiếp theo Phần sau chúng ta xem xét về ngôn ngữ lập trình hướng đối tượng

1.3 Ngôn ngữ lập trình hướng đối tượng

1.3.1 Sự phát triển của các ngôn ngữ lập trình hướng đối tượng

Về cơ bản, một ngôn ngữ lập trình được gọi là hướng đối tượng nếu nó cung cấp đủ 4 đặc trưng đã xem xét ở trên: tính đóng gói, tính che dấu thông tin, tính kế thừa và tính đa hình

Ngôn ngữ lập trình hướng đối tượng được phát triển cùng với sựhình thành và phát triển của phương pháp lập trình hướng đối tượng (Hình vẽ 1.10) Phương pháp này được khởi xướng vào những năm

1960 tại Na-uy, sau đó được các nhà nghiên cứu, ứng dụng phát triển rất mạnh mẽ Có thể xem ngôn ngữ Simula của Christian Nygaard vàcộng sự tại đại học Oslo là ngôn ngữ đầu tiên khởi xướng cho phương pháp hướng đối tượng Sau đó những năm 1970 và 1980 tiếp theo là sựphát triển các ngôn ngữ Smalltalk, Eiffel và C++

Ngôn ngữ Java được xây dựng và phát triển bởi James Gosling vàcộng sự tại hãng Sun Microsystems, nó trở nên phổ biến vào cuối những năm 1990 Khác với C++ có sự kết hợp của cả lập trình cấu trúc vàhướng đối tượng, Java là ngôn ngữ thuần hướng đối tượng, tức mọi thành phần của chương trình đều phải được đóng gói thành các lớp đối tượng, mọi hành động (actions) đều được thực hiện trên các đối tượng

và các lớp Đặc điểm thứ hai của Java khác C++ đó là các đối tượng không cần đến việc giải phóng bộ nhớ sau khi khai thác xử lý xong của người lập trình do cơ chế tự động “thu gom rác” (garbage collection) được cung cấp sẵn bởi Java, điều này giống với 2 ngôn ngữ Smalltalk

và Eiffel (xem hình vẽ minh hoạ dưới đây)

Trang 15

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Trong khuôn khổ tài liệu này, chúng ta tập trung khai thác sử dụng ngôn ngữ Java để thể hiện cho các vấn đề của phương pháp lập trình hướng đối tượng Các phần tiếp sau sẽ trình bày cụ thể hơn về ngôn ngữ lập trình Java

1.3.2 Ngôn ngữ lập trình Java

Java là ngôn ngữ lập trình được sử dụng khá phổ biến hiện nay,

nó không chỉ được dùng để phát các ứng dụng cho máy tính mà còn sửdụng để phát triển các ứng dụng cho các thiết bị di động như điện thoại

di động, điện thoại thông minh, đặc biệt là lập trình trên hệ điều hành Android

Một số đặc điểm của ngôn ngữ Java:

- Cấu trúc cú pháp lệnh của ngôn ngữ Java hầu hết kế thừa từC/C++ nên dễ tiếp cận nếu đã biết ngôn ngữ C/C++, mềm dẻo và linh hoạt trong sử dụng nhưng cũng rất chặt chẽ về cú pháp

- Là ngôn ngữ lập trình thuần hướng đối tượng như đã đề cập ởtrên

- Java áp dụng cơ chế bộ nhớ động cho mọi đối tượng trong chương trình Do đó, một khai báo biến bất kỳ có kiểu lớp đều dưới dạng tham chiếu (con trỏ), tức là một biến chứa địa chỉ của đối tượng

Về phía hệ thống, các đối tượng khi tạo sẽ được cấp phát bộ nhớtrên vùng heap (bộ nhớ trong - RAM), do đó mỗi đối tượng có một địa chỉ tương ứng Để truy cập xử lý các đối tượng này chúng ta phải khai báo các biến tham chiếu để lưu giữ địa chỉ của đối tượng

1960 1970 1980 1990 2000 2010

Trang 16

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

- Độc lập với môi trường thực hiện Đây là đặc điểm nổi bật của Java, tức một chương trình bằng ngôn ngữ Java sau khi được biên dịch

có thể chạy được trên các hệ nền khác nhau (hệ nền được hiểu bao gồm

hệ điều hành và hệ thống phần cứng) Hình vẽ 1.12 minh họa điều này, chương trình sau khi viết và biên dịch có thể chạy trên hệ điều hành Windows, Unix, hoặc MacOS

Hình vẽ sau minh hoạ sự độc lập với hệ nền của chương trình Java

Trang 17

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Với đặc điểm này, giới lập trình Java thường sử dụng khẩu hiệu thể hiện là “write one, run anywhere” để ám chỉ rằng chương trình Java được viết một lần và chạy ở khắp mọi nơi

Sự độc lập này được thực hiện nhờ cơ chế máy ảo (Java Virtual Machine - JVM) để thực hiện chương trình JVM là một hệ thống phần mềm được xây dựng và đóng gói sẵn, sau đó cài đặt trên các thiết bị, máy tính với chức năng dùng để thông dịch các câu lệnh của chương trình Java khi thực hiện Quá trình lập trình, biên dịch và chạy chương trình Java được thể hiện qua sơ đồ sau

Hình vẽ sau minh hoạ quá trình biên dịch và thực hiện chương trình trên Java

Trong đó, chương trình Java được lập trình và lưu bằng tệp tin mãnguồn phần mở rộng *.java (gọi là Java Source) Sau khi biên dịch (compiler) sẽ tạo thành chương trình mã byte (Java Bytecodes) và lưu trữ thành tệp tin có phần mở rộng *.class, phân phối đến các máy ứng dụng Việc chạy chương trình Java trên một hệ nền nào đó sẽ nhờ máy

ảo (Java Virtual Machine) thông dịch các lệnh mã byte về mã máy đểthực thi

Trang 18

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

1.3.3 Các thành phần cơ bản trong ngôn ngữ Java

Khác với C/C++ có cung cấp cả cơ chế bộ nhớ tĩnh và bộ nhớ động, Java là một ngôn ngữ lập trình cung cấp cơ chế bộ nhớ động hoàn toàn, do đó khái niệm con trỏ (đã dùng trong C/C++) nhằm thể hiện là một loại biến đặc biệt chứa địa chỉ của ô nhớ Sau đây, trong Java, gọi dạng biến này là tham chiếu Theo đó, một biến được khai báo có kiểu lớp (class - sẽ trình bày chi tiết sau) thì gọi là tham chiếu Ví dụ sau,

Scanner a;

sẽ khai báo biến “a” (hay gọi là tham chiếu “a”) với kiểu là

“Scanner” Từ đây, chúng ta có thể dùng tham chiếu này để trỏ đến (tham chiếu đến) các đối tượng (objects - trình bày chi tiết sau) được tạo từ lớp “Scanner”

Để tạo mới (hoặc sinh) một đối tượng từ lớp chúng ta sử dụng toán tử “new” (như đã dùng trong C/C++), đối tượng này sau đó được khai thác và xử lý nhằm thực hiện công việc, cụ thể:

biến = new tên_lớp( tham_số_nếu_có );

Cũng giống như ngôn ngữ C/C++, các toán tử của Java để viết biểu thức tính toán trong chương trình được giới thiệu ở bảng sau:

Toán tử Ký hiệu

gán =

tăng, giảm ++,

đa năng +, -, ~, !, (ép kiểu)

nhân, chia, chia dư *, /, %

cộng, trừ, kết nối +, -, +

dịch bít <<, >>, >>>

Trang 19

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

y = x++; /*sẽ gán x vào y, sau đó tăng x lên 1*/

y = ++x; /*sẽ tăng x trước và gán x vào y sau.*/

- Phép toán ép kiểu cho phép chúng ta chuyển dữ liệu từ một kiểu này sang kiểu khác, tuy nhiên việc này có thể làm mất dữ liệu nếu kiểu đích có miền giá trị nhỏ hơn Ví dụ:

- Phép toán chia (/) sẽ cho kết quả phần nguyên nếu hai dữ liệu là

số nguyên, nếu một dữ liệu số thực sẽ cho kết quả chính xác của phép chia Phép chia dư (%) chỉ thực hiện trên số nguyên Ví dụ:

9/2 sẽ cho kết quả 4,

Trang 20

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Toán tử dịch bít sang trái <<, sang phải >>, và sang phải không dấu >>> tác động lên từng bít của dữ liệu Ví dụ:

- Toán tử so sánh chỉ tác động trên những dữ liệu phù hợp như:

số, ký tự, và tham chiếu Tuy nhiên tham chiếu chỉ thực hiện được phép

so sánh bằng (==) và so sánh khác (!=)

- Toán tử “instanceof” khá đặc biệt trong Java, chỉ tác động trên tham chiếu và được dùng để xác định một đối tượng được tham chiếu tương ứng có thuộc một lớp nào đó hay không Toán tử này sẽ được trình bày cụ thể ở phần sau

Trang 21

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

- Toán tử kết nối bít (&, |, ^) sẽ tác động lên từng bít của dữ liệu

để cho kết quả, cụ thể như sau:

(điều kiện) ? biểu thức 1 : biểu thức 2

Máy sẽ thực hiện cho kết quả <biểu thức 1> nếu <điều kiện> đúng, ngược lại cho kết quả <biểu thức 2> Ví dụ:

x = (a>b)? a-b : b-a;

sẽ cho kết quả số lớn – số bé giữa hai số a và b

- Đặc biệt phép toán nối (+) để thực hiện nối hai xâu ký tự, nối xâu ký tự với một ký tự, nối xâu ký tự với số nguyên, số thực Ví dụ: “Ha” + “noi”, hoặc “Hano” + ‘i’ cho kết quả là “Hanoi”,

45 + “ABC” cho kết quả là “45ABC”,

“ABC” + 45 cho kết quả là “ABC45”

Vì trong Java dữ liệu ký tự có thể được xử lý như là số nguyên (theo mã của ký tự) nên phép nối giữa số và ký tự sẽ thực hiện như

Trang 22

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

45 + ‘A’

cho kết quả là 110, vì mã của ký tự ‘A’ là 65

- Biểu thức: biểu thức là kết hợp giữa các phép toán tác động lên

dữ liệu thực hiện tính toán và xử lý Trong biểu thức có thể dùng dấu

mở đóng ngoặc để ưu tiên thực hiện phép toán cao nhất, nếu không máy

sẽ theo thứ tự ưu tiên mặc định (nhân chia trước, cộng trừ sau) Ví dụ:

x = 7+8*2; sẽ cho kết quả x=23, nhưng

y = (7+8)*2; sẽ cho kết quả y=30

- Câu lệnh: câu lệnh (statements) là kết hợp các từ khóa, biểu thức

để yêu cầu máy thực hiện một thao tác tính toán, xử lý nào đó Kết thúc một câu lệnh phải có dấu chấm phẩy (;), trên một dòng có thể viết nhiều câu lệnh và một lệnh có thể được viết trên nhiều dòng

- Khối lệnh: khối lệnh (nhóm lệnh) được đóng khung bởi cặp dấu { và }, nếu một hành động xử lý nào đó cần đến nhiều lệnh thì phải sửdụng khối lệnh Kết thúc khối lệnh (sau dấu }) không cần dấu chấm phẩy (;)

- Chú thích trong Java: có ba cách viết chú thích, đó là viết sau cặp dấu // để chú thích một dòng hoặc viết trong cặp dấu /* và */ để chúthích trên nhiều dòng

Tuy nhiên có thể viết chú thích trong cặp /** và */ và thường được

sử dụng cho trong công cụ sinh mã HTML của Java

1.3.4 Lập trình bằng ngôn ngữ Java

Để lập trình bằng Java, trước hết chúng ta phải cài đặt phần mềm phát triển ứng dụng có tên là JDK (Java Development Kit) được cung cấp miễn phí tại địa chỉ “http:// www.oracle.com/ technetwork/ java/ javase/ downloads/ index.html” Sau khi cài đặt thường có thư mục

“Java” với hai thư mục con là “jdk<số hiệu phiên bản>” chứa trình biên dịch và “jre<phiên bản>” chứa hệ thống thư viện và máy ảo Java

Trang 23

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Java được cung cấp khá nhiều môi trường phần mềm để lập trình như JCreator, Eclipse, NetBean song để thuận tiện trong tài liệu chúng ta sẽ thực hiện trên môi trường Eclipse, đây là phần mềm miễn phí và thuận tiện, chỉ cần copy vào máy để chạy, không cần cài đặt hay cấu hình phức tạp (giao diện có dạng sau)

Tuy nhiên, chúng ta có thể không dùng môi trường mà biên soạn chương trình trên một phần mềm nào đó, lưu lại tệp tin *.java và sửdụng lệnh trực tiếp của JDK để biên dịch và chạy thử Lệnh biên dịch

và chạy thử chương trình Java sử dụng 2 tệp tin “javac.exe” và

“java.exe” trong thư mục “BIN” của thư mục đã cài đặt JDK Cú pháp thực hiện lệnh biên dịch là:

Trang 24

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Ví dụ một chương trình Java đơn giản (có tên tệp là “vidu.java”):

Dòng lệnh thứ 4 (System.out.print) ở trên để in ra màn hình (sẽtrình bày chi tiết ở chương sau) Kết quả dịch và chạy thử chương trình trên Eclipse (cửa sổ màn hình “Console” để chứa kết quả chạy và các thông báo khi chạy chương trình) là:

Trang 25

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Một số quy tắc/quy ước cần ghi nhớ khi lập trình Java:

- Các từ khóa lệnh viết thường, ví dụ: import, for, if, while, case, return, break, continue ;

- Các tên lớp đối tượng viết dạng chuẩn (chữ cái đầu từ viết HOA, sau đó chữ thường, các từ ghép thành tên hoặc viết tắt cũng theo quy ước này), ví dụ: Scanner, System, JButton, JOptionPane ;

- Các tên hằng được viết chữ hoa, ví dụ: EXIT_ON_CLOSE, PI, CLOSE_OPTION, QUESTION_MESSAGE ;

- Các tên biến (thuộc tính) viết chữ thường;

- Các tên hàm (phương thức) viết từ đầu (động từ) bằng chữthường, các từ sau đó theo dạng chuẩn, ví dụ: print, showMessageDialog, setText

- Các lệnh không đứng độc lập, bắt buộc một lệnh cần thực hiện phải trên một đối tượng hoặc trên một lớp nào đó, và thậm chí có thểtrên nhiều lớp và đối tượng khi chúng bao nhau Quy tắc chung được viết theo kiểu phân cấp (dùng dấu chấm) như sau:

hoặc lệnh sau sẽ in một dòng chữ lên màn hình,

System.out.print(“Xin chao ban Toi dang hoc JAVA.”);

Trang 26

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

1.4 Bài tập cuối chương

Bài tập 1.1)

Hãy cho biết ít nhất 5 kiểu đối tượng (lớp đối tượng) trong thực tế

mà bạn biết, mô tả rõ tên, các thuộc tính, các hành vi (phương thức) cho mỗi kiểu đối tượng đó

Bài tập 1.2)

Hãy tìm một cơ chế trong các hoạt động thực tiễn của cuộc sống nhằm minh hoạ (càng gần càng tốt) cho đặc trưng nổi bật của Java được thể hiện qua khẩu hiệu “write once - run any where”

Bài tập 1.3)

Hãy tìm bộ 3 đối tượng trong cuộc sống thực tiễn và mô tả mối quan hệ tương tác giữa chúng nhằm minh hoạ cho sự trao đổi thông điệp giữa các đối tượng để chúng cùng thực hiện một mục tiêu nào đó

Trang 27

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Chương 2 MỘT SỐ KỸ THUẬT CƠ BẢN TRONG

NGÔN NGỮ JAVA 2.1 Các cấu trúc điều khiển trong lập trình

Trong bất kỳ một ngôn ngữ lập trình nào của máy tính, ngoài cấu trúc thực hiện lệnh tuần tự là đặc trưng của máy tính điện tử hiện nay đều cung cấp hai cấu trúc điều khiển cơ bản đó là rẽ nhánh và lặp Cũng vậy, trong Java quy tắc thực hiện các cấu trúc đó như sau

2.1.1 Lệnh rẽ nhánh (if, switch)

Lệnh rẽ nhánh cho phép điều khiển máy thực hiện một hoặc một vài trong các trường hợp đã đưa ra, có 2 lệnh if và switch với cách viết như sau: lệnh ‘if’ có dạng,

Trang 28

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Lệnh “switch” thực hiện so sánh giá trị của <biểu-thức> với các

<giá-trị-1> đến <giá-trị-n>, nếu bằng ở <giá-trị-k> nào (k=1,…,n) thìthực hiện <nhóm-lệnh-k> tương ứng cho đến khi gặp lệnh break

Ví dụ hiện ra màn hình số lớn trong hai số a và b:

Trang 29

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Trong đó lệnh System.out.println( ) để hiện dữ liệu ra màn hình

sẽ được trình bày chi tiết sau

Lệnh if ở trên chúng ta sử dụng lồng nhau, trong <nhóm-lệnh-2>

có một lệnh if khác Thực hiện các lệnh if lồng nhau theo thứ tự từ ngoài vào trong

Trong lệnh switch nếu không sử dụng lệnh break trong một trường hợp (case) nào đó thì các nhóm lệnh của các trường hợp tiếp theo kể từ

Trang 30

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

một trường hợp bằng xẩy ra sẽ tự động thực hiện cho đến khi gặp một lệnh break

Ví dụ, với lệnh switch sau và biến “x” có giá trị 2 (tức xẩy ra điều kiện bằng ở trường hợp “case 2”) thì máy sẽ thực hiện in ra màn hình chữ “B” và đồng thời in luôn chữ “C” do không có break ở trường hợp

Trang 31

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

2.1.2 Lệnh lặp (for, while, do-while)

Lệnh lặp cho phép thực hiện một nhóm lệnh nhiều lần trên máy, mặc dù chúng ta chỉ viết một lần trong chương trình Trong Java có 3 cách viết lệnh lặp gồm for, while, do-while được trình bày chi tiết sau đây

Lệnh while máy sẽ kiểm tra <điều-kiện> và thực hiện lệnh-lặp>, quá trình lặp lại cho đến khi <điều-kiện> có giá trị sai

Trang 32

<nhóm-KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Lệnh do-while máy thực hiện <nhóm-lệnh-lặp> trước, sau đókiểm tra <điều-kiện> nếu đúng sẽ lặp lại thực hiện <nhóm-lệnh-lặp> cho đến khi sai

Ví dụ hiện các số nguyên lẻ từ 50 đến 100 bằng lệnh for,

for ( i=50; i<=100; i++ ) {

Trang 33

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

2.1.3 Lệnh break và continue

Lệnh break để dừng vòng lặp vô điều kiện, thường dùng trong nhóm lệnh lặp và lệnh “switch” ở trên Khi máy gặp lệnh này sẽ kết thúc lệnh lặp cho dù điều kiện lặp có đúng hay sai Cũng như trong lệnh switch ở trên, máy sẽ kết thúc thực hiện các nhóm lệnh tiếp theo khi gặp một lệnh break

Lệnh continue cho phép tiếp tục thực hiện lệnh lặp và bỏ qua thực hiện các lệnh ngay sau continue trong nhóm lặp Minh họa cho hai lệnh break và continue như sau:

Ví dụ sử dụng lệnh continue trong lệnh lặp để hiện các số từ 1 đến

Chương trình

Nhóm lặp

continue

Chương trình

Trang 34

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Các cấu trúc lệnh lặp (for, while, do-while) trên có thể sử dụng theo cơ chế “lồng nhau”, tức là trong nhóm lặp của lệnh này có chứa một lệnh lặp khác Ví dụ hai lệnh lặp for như sau:

for ( i=1; i<5; i+=2 )

2.2 Kỹ thuật vào/ra dữ liệu

Nhập và xuất dữ liệu là hai thao tác cơ bản của mọi chương trình phần mềm để tương tác thông tin giữa người dùng với máy tính, do đóchúng thường xuyên được sử dụng Các thao tác nhập/xuất (hay còn gọi

là vào/ra) dữ liệu thực hiện chủ yếu với bàn phím, màn hình và ổ đĩa lưu trữ Các dữ liệu đưa vào từ các thiết bị này gọi là dữ liệu nguồn (Data Source)

Hình vẽ sau minh họa cơ chế nhập/xuất dữ liệu của chương trình trên Java

Trang 35

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Java cung cấp cơ chế vào/ra dữ liệu theo dòng (stream) ở hai cấp

độ, thứ nhất là mức thấp, tức dữ liệu được mã hóa dưới dạng byte vàlàm việc trực tiếp với các thiết bị, thứ hai là mức cao, tức dữ liệu được định dạng theo từng kiểu để dễ dàng xử lý trong chương trình

Hình vẽ minh hoạ cơ chế vào/ra dữ liệu theo dòng

Mỗi dòng mức thấp hay mức cao đều có hai loại đối tượng, đó làdòng nhập dữ liệu (input stream) cung cấp thao tác đọc dữ liệu (read)

từ các thiết bị nhập vào chương trình và dòng xuất (output stream) cung cấp thao tác ghi dữ liệu (write) từ chương trình ra các thiết bị Hình vẽ sau minh hoạ hai thao tác cơ bản đọc/ghi dữ liệu

Chúng ta thường sử dụng hai dòng này ở chế độ bao nhau, tức đối tượng dòng mức cao bao đối tượng dòng mức thấp Các dòng mức thấp làm việc kết nối trực tiếp với các thiết bị và thực hiện đọc/ghi dữ liệu dưới dạng byte Còn dòng mức cao khi đọc sẽ nhận dữ liệu các byte từdòng mức thấp chuyển hóa thành các dữ liệu theo từng kiểu phù hợp

Trang 36

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

chuyển hóa thành các byte đưa lên dòng mức thấp để xuất ra các thiết

bị vật lý (hình vẽ sau minh họa điều này)

Hình vẽ sau minh hoạ cơ chế bao nhau của các dòng mức cao và mức thấp

Java cung cấp hệ thống thư viện thực hiện vào/ra dữ liệu khá phong phú dưới dạng các lớp đối tượng Sau đây là danh sách một số lớp đối tượng cơ bản hay dùng

Stt Tên lớp đối tượng Thuộc thưviện Chức năng

1 InputStream java.io Nhập dữ liệu mức

Trang 37

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

6 BufferedInputStream java.io Nhập dữ liệu theo

vùng nhớ đệm

7 OutputStream java.io Xuất dữ liệu mức thấp

8 FileOutputStream java.io Ghi dữ liệu ra tệp tin

13 File java.io Xử lý tệp tin

14 Scanner java.util Xử lý nhập dữ liệu

Trang 38

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

2.2.1 In dữ liệu ra màn hình

Sử dụng đối tượng “out” thuộc lớp “PrintStream” cung cấp chức năng in dữ liệu ra màn hình dạng Console (là một cửa sổ dạng text đểhiển thị các dòng ký tự) Các lệnh thực hiện gồm:

System.out.print( D );

System.out.println( D );

System.out.printf( F, D );

Trong đó “D” là dữ liệu cần in gồm một biểu thức xác định giá trị

dữ liệu Lệnh “println” sẽ xuống dòng sau khi in xong, lệnh “printf” sẽ

in dữ liệu có định dạng quy định bởi “F” gồm các thành phần sau:

%[argument_index$][flags][width][.precision]conversion

Phần trong cặp dấu ngoặc [ và ] là tùy chọn, như vậy bắt buộc làdấu “%” và phần “conversion” để quy định chuyển dữ liệu khi in gồm các kiểu hay dùng như “%d”, “%f”, “%s”, “%x”, “%td”, “%tm”,

“%tY”, “%tH”, “%tM”, “%tS” tương ứng dữ liệu in ra là số nguyên,

số thực, xâu ký tự, số hexa, ngày, tháng, năm, giờ, phút, giây

“argument_index” cho biết quy định này dành cho dữ liệu thứmấy trong “D”

“flags” quy định trạng thái in dữ liệu như “-”, “0”, “+”, “(” tương ứng để căn trái dữ liệu, thêm số 0 vào bên trái các số, luôn có dấu trước các số, thêm cặp dấu ngoặc ( và ) trước số âm

“width” và “precision” quy định độ rộng dữ liệu in và độ chính xác số thực (số lượng chữ số thập phân)

Trang 39

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

Ví dụ sau

System.out.printf("Width is [%10d]",2012); /*in có độ rộng*/ System.out.printf("\nPrecision is [%-10.2f]", 5.1/4); /*in căn trái

Trang 40

KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA

2.2.2 Nhập dữ liệu từ bàn phím

Chúng ta đơn giản sử dụng đối tượng lớp “Scanner” để nhập dữliệu từ bàn phím, đối tượng này bao đối tượng mức thấp là “System.in”được định nghĩa sẵn trong Java để kết nối đến bàn phím Quy tắc tạo đối tượng để nhập như sau:

Scanner ☼ = new Scanner(System.in);

Sau đó sử dụng các lệnh nhập trên đối tượng vừa tạo gồm: Lệnh Ý nghĩa

System.out.printf(“\nKet qua tong: %f”, a+b);

và kết quả chạy thử trên màn hình là,

Ngày đăng: 29/08/2023, 11:40

TỪ KHÓA LIÊN QUAN

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