1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án CUỐI kỳ lập TRÌNH MẠNG đề tài xây DỰNG ỨNG DỤNG CHAT ROOM sử DỤNG GIAO THỨC UDP

52 208 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 đề Xây Dựng Ứng Dụng Chat Room Sử Dụng Giao Thức UDP
Tác giả Nguyễn Khắc Thịnh, Nguyễn Hải Dương, Nguyễn Phương Thanh, Lê Hoàng Minh
Người hướng dẫn TS. Hoàng Hữu Đức
Trường học Trường Đại Học Công Nghệ Thông Tin & Truyền Thông Việt - Hàn
Chuyên ngành Lập trình Mạng
Thể loại Đồ Án Cuối Kỳ Lập Trình Mạng
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 52
Dung lượng 1,37 MB

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

Nội dung

Các ổ cắm chỉ được tạo trong suốt thờigian tồn tại của một quy trình ứng dụng đang chạy.Do tiêu chuẩn hóa các giao thức TCP/IP trong quá trình phát triểnInternet, thuật ngữ network socke

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

&

TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

Sinh viên thực hiện: Nguyễn Khắc thịnh

Nguyễn Hải Dương Nguyễn Phương Thanh

Lê Hoàng Minh

Giảng viên hướng dẫn: TS Hoàng Hữu Đức

Trang 2

Đà Nẵng, tháng 12 năm 2022

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

&

TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CUỐI KỲ LẬP TRÌNH HỆ THỐNG

ĐỀ TÀI:

XÂY DỰNG CHƯƠNG TRÌNH

HỘI THẢO TỪ XA

Trang 3

Đà Nẵng, tháng 12 năm 2022

LỜI CẢM ƠN

Đầu tiên nhóm chúng em xin chân thành cảm ơn thầy giáo TS.Hoàng Hữu Đức giảng viên môn lập trình mạng, người đã luôn hỗ trợchúng em trong suốt quá trình học tập Trong thời gian cùng nhau làm

đồ án, chúng em không những học hỏi, bổ sung được những kiến thức

mà cải thiện nâng cao khả năng làm việc nhóm, tập trung và có tráchnhiệm với công việc của nhóm mình

Dù đã rất cố gắng hoàn thành đồ án nhưng do kiến thức vẫn cònhạn chế nên những sai sót, lầm lẫn chắc chắn vẫn sẽ có Chúng emmong nhận được sự cảm thông và góp ý của thầy giáo TS Hoàng HữuĐức, quý thầy cô giáo trong Khoa và tất cả các bạn!

Chúng em xin chân thành cảm ơn!

Trang 4

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Trang 5

LỜI NÓI ĐẦU

Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay,Internet ngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học kỹthuật và đời sống Dĩ nhiên các bạn đã được nghe nói nhiều về Internet,nói một cách đơn giản, Internet là một tập hợp máy tính nối kết vớinhau, là một mạng máy tính toàn cầu mà bất kì ai cũng có thể kết nốibằng máy tính riêng của họ Với mạng Internet, tin học thật sự tạo nênmột cuộc cách mạng trao đổi thông tin trong mọi lĩnh vực văn hóa, xãhội, chính trị, kinh tế

Ngày nay, việc đang phát triển hay xây dựng các ứng dụng và nềntảng chatting hiện đang được phổ biến rộng rãi Chatting được hiểu đơngiản là hành động trao đổi thông tin dưới các dạng, giữa người hoặcnhóm người, từ máy này sang máy kia cùng lúc, bằng bàn phím hơn làthiết bị chuyển âm Từ đó nhóm chúng em muốn xây dựng chat room sửdụng giao thức socket TCP bằng ngôn ngữ Java

Sơ lược về socket, socket là giao diện lập trình ứng dụng mạngđược dùng để truyền và nhận giữ liệu trên internet Giữa hai chươngtrình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi

là two-way communication để kết nối 2 process trò chuyện với nhau.Điểm cuối (endpoint) của liên kết này được gọi là socket Socket sẽđược sử dụng để "lắng nghe" mỗi khi có tin nhắn mới, reaction để cậpnhật lên giao diện Việc cập nhật dữ liệu thời gian thực như thế đem lạimột trải nghiệm tuyệt vời cho người dùng Nó sẽ giải quyết vấn đề mộtcách nhanh gọn và tiếm kệm tài nguyên cho cả client và server

Như đã nói ở trên, nhóm chúng em sẽ xây dựng chat room bằngsocket dựa trên giao thức TCP (Transmission Control Protocol) việc

Trang 6

truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa 2 quá trình Do

đó, nó được gọi là socket hướng kết nối

MỤC LỤC

LỜI CẢM ƠN 3

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 4

LỜI NÓI ĐẦU 5

MỤC LỤC 6

Chương I: Giới Thiệu Tổng Quan 8

1 Khái niệm cơ bản về Internet 8

2 Network Socket 8

3 User Datagram Protocol (UDP) 10

Chương 2: Tìm Hiểu Về Ngôn Ngữ Java 15

1 Khái niệm cơ bản về Java 15

2 Công dụng 15

3 Sự lựa chọn phổ biến 16

4 Java hoạt động như thế nào 17

5 Lập trình hướng đối tượng là gì 17

6 Các tính chất của Java 18

7 Các loại access modifier trong Java 19

8 Nested Class 20

9 Biến 20

10 Exception 21

11 Các kiểu dữ liệu 22

12 Ép kiểu trong Java 22

13 Toán tử Instanceof 23

14 Nạp chồng (Overloading) và ghi đè (Overriding) 24

15 Interface 24

16 Abstracts 24

Trang 7

18 Collection 26

19 Quan hệ kế thừa trong Java 29

Chương 3: Tổng quan về lập trình mạng 30

1 Tổng quan về mạng máy tính 30

2 Mô hình mạng OSI 33

3 Giao thức truyền thông 35

Chương 4:Xây dựng ứng dụng thực tế 37

1 Phân tích yêu cầu đề tài 37

2 Mục đích xây dựng 38

3 Xác định yêu cầu của người dùng 38

4 Yêu cầu giao diện 38

5 Phân tích các chức năng của hệ thống 38

6 Biểu đồ phân tích thiết kế hệ thống 38

7 Thiết kế giao diện và chức năng 39

KẾT LUẬN 43

TÀI LIỆU THAM KHẢO 44

Trang 8

Chương I: Giới Thiệu Tổng Quan

1 Khái niệm cơ bản về Internet

Internet là mạng của các máy tính trên toàn cầu được thành lập từnhững năm 80 bắt nguồn từ mạng APARRNET của bộ quốc phòng Mỹ

Vào mạng Internet, bạn có thể tìm thấy nhiều tài liệu để nghiêncứu, học tập, trao đổi thư từ, đặt hàng, mua bán Một trong những mụctiêu của Internet là chia sẻ thông tin giữa những người dùng trên nhiềulĩnh vực khác nhau

Mỗi máy tính trên Internet được gọi là một host Mỗi host cókhả năng như nhau về truyền thông tới máy khác trên Internet Một sốhost được nối tới mạng bằng đường nối Dial-up (quay số) tạm thời, sốkhác được nối bằng đường nối mạng thật sự 100% (như Ethernet,Tokenring )

Các máy tính trên mạng được chia làm 2 nhóm Client và Server

 Client: Máy khách trên mạng, chứa các chương trình Client

 Server: Máy phục vụ-Máy chủ Chứa các chương trình Server, tàinguyên (tập tin, tài liệu ) dùng chung cho nhiều máy khách Serverluôn ở trạng thái chờ yêu cầu và đáp ứng yêu cầu của Client

 Internet Server: Là những server cung cấp các dịch vụ Internetnhư Web Server, Mail Server, FPT Server…

2 Network Socket

Socket là một cấu trúc phần mền trong nút mạng của mạng máytính đóng vai trò là điểm cuối để gửi và nhận dữ liệu trên mạng Cấu

Trang 9

trúc và thuộc tính của socket được xác định bởi giao diện lập trình ứngdụng (API) cho kiến trúc mạng Các ổ cắm chỉ được tạo trong suốt thờigian tồn tại của một quy trình ứng dụng đang chạy.

Do tiêu chuẩn hóa các giao thức TCP/IP trong quá trình phát triểnInternet, thuật ngữ network socket được sử dụng phổ biến nhất trongngữ cảnh của bộ giao thức Internet và do đó thường được gọi là ổ cắmInternet Socket được xác định bên ngoài đối với các host khác bằngsocket address, là transport protocol, IP address, và số port

Giao diện lập trình ứng dụng (API) cho ngăn xếp giao thức mạngtạo một tay cầm cho mỗi socket được tạo bởi một ứng dụng, thườngđược gọi là socket descriptor Tại thời điểm tạo với API, network socketliên kết với sự kết hợp của một loại giao thức mạng được sử dụng đểtruyền, địa chỉ mạng của máy lưu trữ và số port Ports là các tài nguyênđược đánh số đại diện cho một loại cấu trúc phần mềm khác Chúngđược sử dụng làm loại dịch vụ và sau khi được tạo bởi một quy trình,chúng sẽ đóng vai trò là thành phần vị trí có thể định địa chỉ bên ngoài(từ mạng), để các máy chủ khác có thể thiết lập kết nối Network Socket

có thể được dành riêng cho các kết nối liên tục để liên lạc giữa hai núthoặc chúng có thể tham gia vào liên lạc multicast và không kết nối

Giao diện lập trình ứng dụng (API) mà các chương trình sử dụng

để giao tiếp với ngăn xếp giao thức, sử dụng network socket, được gọi

là API socket Việc phát triển các chương trình ứng dụng sử dụng APInày được gọi là lập trình network socket hoặc lập trình mạng APIsocket Internet thường dựa trên tiêu chuẩn socket Berkeley Trong tiêuchuẩn socket Berkeley, socket là một dạng mô tả tệp, do triết lý Unixrằng "mọi thứ đều là tệp" và sự tương đồng giữa socket và tệp Cả haiđều có chức năng đọc, viết, mở và đóng Trong thực tế, sự khác biệt làm

Trang 10

căng thẳng sự tương tự và các giao diện khác nhau (gửi và nhận) được

sử dụng trên một socket Trong giao tiếp giữa các quá trình, mỗi đầuthường có socket riêng

Trong các giao thức Internet tiêu chuẩn TCP và UDP, socketaddress là sự kết hợp của địa chỉ IP và số port, giống như một đầu củakết nối điện thoại là sự kết hợp của số điện thoại và một số extension.Socket không cần có địa chỉ nguồn để chỉ gửi dữ liệu, nhưng nếu mộtchương trình liên kết socket với source address, thì socket có thể được

sử dụng để nhận dữ liệu được gửi đến địa chỉ đó Dựa trên address,socket Internet phân phát các data packets cho ứng dụng thích hợp

Socket thường đề cập cụ thể đến socket Internet hoặc socket TCP.Socket Internet được đặc trưng tối thiếu bởi những điều sau đây:

 Địa chỉ socket cục bộ, bao gồm địa chỉ IP cục bộ và (đối với TCP

và UDP, nhưng không phải IP) số port

 Giao thức: Giao thức vận chuyển, ví dụ: TCP, UDP, IP Điều này

có nghĩa là các điểm cuối (cục bộ hoặc từ xa) có cổng TCP 53 và cổngUDP 53 là các socket riêng biệt, trong khi IP không có port

 Một socket đã được kết nối với một socket khác, ví dụ, trong quátrình thiết lập kết nối TCP, cũng có một địa chỉ socket từ xa

3 Transmission control protocol (TCP)

Internet đã và đang là một phần không thể thiếu trong cuộc sốnghàng ngày của chúng ta Tuy nhiên, không phải ai cũng hiểu được tườngtận về cách thức hoạt động của Internet Phương thức truyền dẫn màInternet đang sử dụng là phương thức TCP/IP, một trong những phươngthức truyền dẫn phổ biến nhất hiện nay

TCP là một giao thức mạng quan trọng được sử dụng trong việc

Trang 11

một tập hợp các quy tắc và trình tự kiểm soát việc thực hiện truyền dữ liệusao cho tất cả mọi người trên thế giới bất kể vị trí địa lý, bất kể ứng dụng,phần mềm họ đang sử dụng đều có thể thao tác theo cùng một phương thứcgiống nhau được gọi là TCP.

TCP thường kết hợp với IP (Giao thức Internet) theo một cặp được gọi là TCP/IP Bạn có thể bắt gặp cụm thuật ngữ này trong phần network setting trên máy tính, điện thoại thông minh hoặc các thiết bị cầm tay của mình IP sẽ xử lý việc gán địa chỉ và chuyển tiếp các gói tin từ nguồn đến đích trong khi TCP kiểm soát độ tin cậy của truyền dẫn

3.2. Các kết nối TCP và các cổng

Hai ứng dụng dùng TCP phải thiết lập một kết nối TCP trước khi

dữ liệu có thể được truyền Mỗi kết nối sẽ tồn tại giữa một cặp TCP socketvới socket được định nghĩa như là sự kết hợp của địa chỉ IP, cổng đượcdùng, giao thức lớp vận chuyển Quá trình thiết lập kết nối, khởi tạo socketbao gồm giá trị cổng nguồn và cổng đích, chỉ số tuần tự và ACK Hình 1

mô tả tiến trình bắt tay ba bước trong thiết lập một kết nối TCP và quá trìnhhủy một kết nối TCP

Hình 1

Trang 12

Trong quá trình thiết lập kết nối, hai host sẽ chọn lựa cổng, chọnlựa chỉ số tuần tự (sequence number) và dùng các chỉ số của TCP để nhận

ra thông điệp trong quá trình bắt tay ba bước Đầu tiên, đối với vấn đềcổng, bên máy chủ (máy chủ) phải lắng nghe các yêu cầu kết nối từ máyyêu cầu (máy khách), trong trường hợp này là cổng 80 Phía máy khách sẽchọn một cổng chưa dùng làm cổng nguồn, thường là giá trị 1024 hoặc lớnhơn Lưu ý rằng khi so sánh các phân đoạn (segment) trong tiến trình trên,giá trị cổng là không đổi Segment là đơn vị mô tả dữ liệu tại lớp vậnchuyển được gọi là PDU (Protocol Data Unit)

Trong phần header của TCP có bao gồm vài trường có giá trị 1 bit,gọi là các cờ Các cờ này phục vụ cho các mục đích khác nhau Các cờSYN và ACK sẽ chỉ ra một segment có phải là segment đầu tiên hay là thứhai trong một kết nối TCP mới Một segment có cờ SYN sẽ là segment đầutiên trong một kết nối TCP Một segment có cả SYN và ACK sẽ là segmentthứ hai trong một kết nối Các cờ này cho phép các host dễ dàng nhận racác yêu cầu kết nối mới Chỉ số ban đầu có thể được gán về bất kỳ giá trịhợp lệ nào và thường không được gán về 0 Hãy nhớ rằng trong quá trìnhkhôi phục lỗi, việc sử dụng các giá trị này là độc lập trong cả hai chiều

Trang 13

3.3 Cấu trúc header TCP

Do là giao thức tin cậy nên cấu trúc gói tin của TCP rất phức tạp

Source port và destination port (đều dài 16 bit): được sử dụng để

định danh cho session của giao thức nào đó trên lớp ứng dụng đang được truyền tải trong TCP segment đang xét

Sequence number (32 bit): dùng để đánh thứ tụ gói tin (từ số

sequence nó sẽ tính ra được số byte đã được truyền)

Acknowledge number (32 bit): : sùng để báo đã nhận được gói tin

nào và mong nhận được byte mang số thứ tự nào tiếp theo

Header length (4 bit): cho biết toàn bộ header dài bao nhiêu tính

theo đơn vị word(1 Word = 4 byte)

Các bit reserverd (4 bit): đều được thiết lập bằng 0.

Các bit control (9 bit): các bit dùng để điều khiển các cờ (flag)

ACK, cờ Sequence

Window size (16 bit): số lượng byte được thiết bị sẵn sàng tiếp

nhận

Trang 14

Checksum (16 bit): kiểm tra lỗi của toàn bộ TCP segment.

Urgent pointer (16 bit): sử dụng trong trường hợp cần ưu tiên dữ

liệu

Options (tối đa 32 bit): cho phép thêm vào TCP các tính năng khác

Data: dữ liệu của lớp trên

3.4 Tính toán tổng kiểm tra

Tổng kiểm tra có 16 bit cho cả phần header và dữ liệu, nó xác minhtính toàn vẹn dữ liệu của TCP

Tổng kiểm tra TCP cho IPv4

Khi TCP chạy trên IPv4 , phương thức được sử dụng để tính toántổng kiểm tra được định nghĩa như sau:

Trường tổng kiểm tra là phần bù 16 bit của tổng phần bù 1 của tất

cả các từ 16 bit trong tiêu đề và văn bản Tính toán tổng kiểm tra cầnđảm bảo căn chỉnh 16 bit của dữ liệu được tính tổng Nếu một phân đoạnchứa một số lẻ các octet tiêu đề và văn bản, thì có thể đạt được sự liênkết bằng cách đệm octet cuối cùng bằng các số 0 ở bên phải của nó đểtạo thành một từ 16 bit cho mục đích tổng kiểm tra Phần đệm khôngđược truyền như một phần của phân khúc Trong khi tính toán tổng kiểmtra, trường tổng kiểm tra được thay thế bằng số không

Tổng kiểm tra TCP cho IPv6

Khi TCP chạy trên , phương thức được sử dụng để tính toán tổng kiểm tra sẽ thay đổi:

Bất kỳ giao thức truyền tải hoặc giao thức lớp trên nào khác baogồm các địa chỉ từ tiêu đề IP trong tính toán tổng kiểm tra của nó phảiđược sửa đổi để sử dụng qua IPv6, để bao gồm các địa chỉ IPv6 128 bitthay vì địa chỉ IPv4 32 bit

4 Độ tin cậy và kiểm soát tắc nghẽn

Giao thức TCP có độ tin cậy cao, các gói tin được gửi bằng TCP sẽđược theo dõi do vậy dữ liệu sẽ không bị mất hoặc hỏng trong quá trìnhvận chuyển Đó là lý do tại sao file tải xuống không bị hỏng ngay cả khimạng có vấn đề Tất nhiên, nếu bên nhận hoàn toàn ngoại tuyến, máy tính

sẽ từ bỏ và hiển thị một thông báo lỗi ghi nó không thể giao tiếp với máychủ lưu trữ từ xa

Kiểm soát luồng đạt được bởi TCP sử dụng trường kích thước cửa

sổ Trường này xác định số byte, bắt đầu bằng byte được xác nhận, mà

Trang 15

người nhận sẵn sàng chấp nhận Nếu người nhận bận hoặc không muốnnhận thêm dữ liệu từ người gửi, giá trị này có thể được đặt thành 0.Ngoài điều khiển luồng dựa trên kích thước cửa sổ, tiêu chuẩn TCP hiệntại (RFC 2581 ) sử dụng một cơ chế kiểm soát tắc nghẽn phức tạp baogồm bốn thuật toán: Slow Start, Congestion Avoidance, FastRetransmission, và Fast Recovery Thuật toán khởi động chậm (SlowStart) được sử dụng bởi TCP cố gắng tránh tắc nghẽn bằng cách bắt đầutruyền ở tốc độ thấp và nhanh chóng tăng tốc độ cho đến khi có dấu hiệuđầu tiên cho thấy giới hạn băng thông khả dụng đã đạt đến Tránh tắcnghẽn (Congestion Avoidance) tiếp tục tăng tốc độ dần dần đến mức cóthể chấp nhận được với các tài nguyên băng thông hiện có Cả khởiđộng chậm và tránh tắc nghẽn đều sử dụng cách tiếp cận Tăng dần Giảmnhân lên [an Incremental Reduce Multiplying (AIMD)], cho phép tốc độtruyền dữ liệu tăng dần, trong khi mạng vẫn có khả năng duy trì tốc độhiện tại (nghĩa là không xảy ra mất gói) Ngay khi tốc độ này vượt quábăng thông mạng khả dụng (nghĩa là các gói bị mất được phát hiện),người gửi sẽ giảm đáng kể tốc độ dữ liệu Các thuật toán truyền lạinhanh và phục hồi nhanh (Fast retransmission and fast recovery) đãđược giới thiệu để tăng tốc độ phân phối dữ liệu sau khi mất và do đóTCP giảm mạnh tốc độ truyền

Trang 16

Chương 2: Tìm Hiểu Về Ngôn Ngữ Java

1 Khái niệm cơ bản về Java

Java là một ngôn ngữ lập trình được sử dụng rộng rãi để viết mãcho các ứng dụng web Ngôn ngữ này là lựa chọn phổ biến của các nhàphát triển trong hơn 2 thập niên Hiện nay có hàng triệu ứng dụng Javađang được sử dụng Java là một ngôn ngữ đa nền tảng, hướng đến đốitượng, lấy mạng làm trung tâm và có thể được sử dụng như một nềntảng Đây là một ngôn ngữ lập trình nhanh, bảo mật, đáng tin cậy dùng

để viết mã cho mọi thứ từ ứng dụng di động, phần mềm doanh nghiệpcho đến các ứng dụng dữ liệu lớn và công nghệ phía máy chủ

2 Công dụng

Vì Java là một ngôn ngữ miễn phí và linh hoạt, nó có thể đượcdùng để phát triển các phần mềm cục bộ và phân tán Một số công dụngphổ biến của Java bao gồm:

 Phát triển trò chơi:

Nhiều trò chơi điện tử, trò chơi máy tính và di động nổi tiếngđược phát triển bằng Java Ngay cả những trò chơi hiện đại được tíchhợp công nghệ tiên tiến như máy học hay thực tế ảo cũng được pháttriển bằng công nghệ Java

 Điện toán đám mây:

Java thường được gọi là ngôn ngữ WORA (Viết một lần, chạy ởmọi nơi), khiến nó trở thành ngôn ngữ lý tưởng cho các ứng dụng phitập trung dựa trên đám mây Các nhà cung cấp đám mây chọn ngôn ngữJava để chạy các chương trình trên nhiều nền tảng cơ sở khác nhau

 Dữ liệu lớn:

Java được dùng cho các công cụ xử lý dữ liệu có thể làm việc vớinhững tập dữ liệu phức tạp và số lượng dữ liệu thời gian thực khổng lồ

Trang 17

 Trí tuệ nhân tạo:

Java là một trung tâm thư viện máy học đồ sộ Sự ổn định và tốc

độ của ngôn ngữ này rất lý tưởng cho việc phát triển ứng dụng trí tuệnhân tạo như xử lý ngôn ngữ tự nhiên và học sâu

 Internet vạn vật:

Java đã được sử dụng để lập trình các cảm biến và phần cứng trongthiết bị biên có thể kết nối một cách độc lập với Internet

3 Sự lựa chọn phổ biến

Java phổ biến vì nó được thiết kế để có thể dễ dàng sử dụng Một

số lý do mà nhà phát triển tiếp tục chọn Java thay vì những ngôn ngữlập trình khác bao gồm:

 Tài nguyên học tập chất lượng cao

Java đã ra mắt từ lâu nên các nhà phát triển mới có thể tiếp cận rấtnhiều tài nguyên học tập Tài liệu chi tiết, những cuốn sách toàn diện vàcác khóa học sẽ hỗ trợ nhà phát triển trong quá trình học hỏi Ngoài ra,người mới làm quen có thể bắt đầu viết mã bằng Java Cơ bản trước khichuyển sang Java Nâng cao

 Các chức năng và thư viện sẵn có

Khi sử dụng Java, nhà phát triển không cần phải viết mọi chứcnăng mới từ đầu Thay vào đó, Java cung cấp một hệ sinh thái phongphú gồm các chức năng và thư viện sẵn có để phát triển hàng loạt ứngdụng đa dạng

 Sự hỗ trợ tích cực của cộng đồng

Java có rất nhiều người dùng hoạt động và một cộng đồng có thể

hỗ trợ nhà phát triển khi họ đối mặt với các thách thức trong việc viết

mã Phần mềm nền tảng Java cũng được duy trì và cập nhật thườngxuyên Công cụ phát triển chất lượng cao Java cung cấp nhiều công cụkhác nhau để hỗ trợ chỉnh sửa tự động, gỡ lỗi, thử nghiệm, triển khai và

Trang 18

quản lý thay đổi Những công cụ này khiến việc lập trình bằng Java tiếtkiệm thời gian và chi phí

 Độc lập với nền tảng

Mã Java có thể chạy trên bất kỳ nền tảng cơ sở nào như Windows,Linux, iOS hoặc Android mà không cần viết lại Đây là điều khiến ngônngữ này trở nên đặc biệt mạnh mẽ trong môi trường hiện nay khi chúng

ta muốn chạy ứng dụng trên nhiều thiết bị

 Bảo mật

Người dùng có thể tải mã Java không tin cậy từ trên mạng xuống

và chạy mã này trong môi trường bảo mật để nó không thể gây hại Mãkhông tin cậy sẽ không thể lây nhiễm vi-rút cho hệ thống máy chủ vàcũng không thể đọc hoặc ghi tệp từ ổ cứng Bạn cũng có thể cấu hìnhnhiều cấp độ và hạn chế bảo mật trong Java

4 Java hoạt động như thế nào

Mọi ngôn ngữ lập trình đều là phương thức để giao tiếp với máy.Phần cứng của máy chỉ phản hồi thông tin giao tiếp điện tử Các ngônngữ lập trình cấp độ cao như Java đóng vai trò là cầu nối giữa ngôn ngữcon người và ngôn ngữ phần cứng Để sử dụng Java, nhà phát triển cầnphải hiểu được 2 điều:

 Ngôn ngữ và API Java:

Đây là hoạt động giao tiếp front-end giữa nhà phát triển và nềntảng Java

 Máy ảo Java:

Đây là hoạt động giao tiếp back-end giữa nền tảng Java và phầncứng cơ sở Hãy cùng xem xét chi tiết từng yếu tố này ở bên dưới

Trang 19

5 Lập trình hướng đối tượng là gì

Lập trình hướng đối tượng (Object Oriented Programing – OOP)

là một phương pháp để thiết kế một chương trình bởi sử dụng các lớp vàcác đối tượng

Java là một ngôn ngữ lập trình hướng đối tượng vì vậy nó cũng hỗtrợ các đặc tính của lập trình hướng đối tượng:

 Đa hình (Polymorphism)

 Thừa kế (Inheritance)

 Đóng gói (Encapsulation)

 Trừu tượng (Abstraction)

 Đối tượng (object):

 Đối tượng là một thực thể có trạng thái và hành vi Nó có thểmang tính vật lý hoặc logic

 Nếu chúng ta xem xét thực tế chúng ta có thể tìm thấy nhiều đồvật xung quanh chúng ta: cái bàn, con chó, con người, v.v… Tất cả cácđối tượng này đều có thuộc tính và hành vi

 Nếu chúng ta xem xét một con chó, thuộc tính của nó sẽ là – tên,giống, màu sắc, và các hành vi là: sủa, chạy, ăn, … Nếu bạn so sánh cácđối tượng trong phần mềm với một đối tượng trong thế giới thực, chúng

sẽ có đặc điểm rất giống nhau: thuộc tính đối tượng trong phần mềmđược lưu trữ trong trường (field) và hành vi được lưu trữ trong phươngthức (method)

 Lớp (Class):

 Chúng ta có thể xem lớp như một khuôn mẫu (template) của đốitượng (Object) Trong đó bao gồm dữ liệu của đối tượng (fields hayproperties) và các phương thức(methods) tác động lên thành phần dữliệu đó gọi là các phương thức của lớp

Trang 20

6 Các tính chất của Java

Đóng gói là sự che giấu dữ liệu riêng bên trong mỗi đối tượng củalớp được khai báo và chỉ được truy xuất thông qua hệ thống các phươngthức có sẵn của lớp

Tính đóng gói dùng để bảo vệ dữ liệu, ngăn ngừa việc truy cập vàgán giá trị trực tiếp cho thuộc tính bên trong đối tượng, nhằm bảo vệtính chính xác của giá trị thuộc tính

Trong từng trường hợp, hoàn cảnh khác nhau thì đối tượng cóhình thái khác nhau tùy thuộc vào từng ngữ cảnh

Tính trừu tượng trong Java là tính chất không thể hiện cụ thể màchỉ nêu tên vấn đề

Đó là một quá trình che giấu các hoạt động bên trong và chỉ hiểnthị những tính năng thiết yếu của đối tượng tới người dùng

Ưu điểm khi sử dụng tính trừu tượng để lập trình:

 Tính trừu tượng cho phép các lập trình viên loại bỏ tính chất phứctạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thứccần thiết của đối tượng trong lập trình, cải thiện khả năng bảo trì của hệthống Tính trừu tượng giúp chúng ta tập trung vào những cốt lõi cầnthiết của đối tượng thay vì quan tâm đến cách nó thực hiện

Tính trừu tượng cung cấp nhiều tính năng mở rộng khi sử dụngkết hợp với tính đa hình và kế thừa trong lập trình hướng đối tượng

Java trừu tượng hóa thông qua các lớp trừu tượng (Abstract class)

và các giao diện (Interface)

Trang 21

6.4 Tính kế thừa (Inheritance)

Là sự liên quan giữa hai class với nhau, trong đó có class cha(superclass) và class con (subclass) Khi kế thừa class con được hưởngtất cả các phương thức và thuộc tính của class cha

7 Các loại access modifier trong Java

 Default: chỉ truy cập được bởi các lớp trong cùng một package.

 Public: Truy cập được ở mọi nơi.

 Protected: chỉ truy cập được bởi các lớp trong cùng một package.

 Private: Chỉ gọi được khi ở trong cùng 1 lớp.

8 Nested Class

Nested class được phân chia thành 2 loại:

Static nested classes: là class được khai báo dạng static bên

trong một class khác

Non-static nested classes: bao gồm Inner classes, Local

classes và Anonymous Classes

Inner Classes: là khai bao một class không phải dạng static

bên trong một class khác

Local Classes: là khai báo một class bên trong một method

khác

Anonymous Classes: là class giống như Inner classes và

Local classes, nó được khai bao bên trong class hoặc method mà không

Trang 22

Biến có 2 loại: Biến cục bộ và biến toàn cục.

Biến cục bộ: là biến được khởi tạo bên trong các phương thức và

sẽ bị huỷ khi phương thức bị huỷ

Biến toàn cục (Instant): là biến nằm bên trong một lớp và bên

ngoài mọi phương thức

Biến static: biến static được khai báo trong một class với từ khóa

‘static’, phía bên ngoài các phương thức, constructor và block

Figure 1: Exception trong Java

 Sự khác nhau giữa “Checked Exceptions” và “Unchecked

Exceptions” trong Java?

 Checked Exceptions:

Trang 23

 Là một ngoại lệ được kiểm tra và thông báo bởi trình biêndịch tại thời điểm biên dịch.

 Checked Exceptions xảy ra tại thời gian biên dịch(Compile-time Exceptions)

 Và Checked Exceptions là những Exceptions mà lập trìnhviên không thể lường trước

Trang 24

Figure 2: Các kiểu dữ liệu trong Java

12 Ép kiểu trong Java

Ép kiểu Nới rộng (Widening): Là quá trình làm tròn số từ kiểu

dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn Kiểubiến đổi này không làm mất thông tin Ví dụ chuyển từ int sang float.Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biêndịch

Figure 3: Ép kiểu Nới rộng trong Java

Trang 25

Ép kiểu Thu hẹp (Narrowwing): Là quá trình làm tròn số từ kiểu

dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn Kiểubiến đổi này có thể làm mất thông tin như ví dụ ở trên Chuyển kiểu loạinày không thể thực hiện ngầm định bởi trình biên dịch, người dùng phảithực hiện chuyển kiểu tường minh

Figure 4: Ép kiểu thu hẹp trong Java

13 Toán tử Instanceof

Toán tử instanceof trong java được sử dụng để kiểm tra một đốitượng có phải là thể hiển của một kiểu dữ liệu cụ thể không (lớp, lớpcon, interface)

Instanceof trong java được gọi là toán tử so sánh kiểu vì nó sosánh thể hiện với kiểu dữ liệu Nó trả về giá trị boolean là true hoặcfalse

Nếu bạn dùng toán tử instanceof với bất kỳ biến nào mà có giátrị null, giá trị trả về sẽ là false

14 Nạp chồng (Overloading) và ghi đè (Overriding)

 Nạp chồng (Overloading): Là 2 phương thức có cùng tên nhưng

khác tham số sẽ trả về kết quả khác nhau

 Ghi đè (Overriding): là lớp con cung cấp lại một cài đặt cụ thể

cho một phương thức mà lớp cha đã cung cấp thì đó gọi là ghi đèphương thức nó được thục hiện dựa trên 2 lớp có tính chất kế thừa

Trang 26

15 Interface

Được xem như là một bản thiết kế, 1 khuôn mẫu của class, chứacác phương thức trừu tượng không có lệnh thực thi, cung cấp chức năngcho các class implement nó, các class implement chúng sẽ phải overridelại các phương thức có trong interface, vì Java không cho phép đa kếthừa nên Interface là một giải pháp thay thế để có được tính đa kế thừa

vì 1 class có thể implement nhiều interface

Interface như là một bản thiết kế chức năng cho class, và các classimplement chúng sẽ phải override những chức năng đó

16 Abstracts

Abstract class: là một class được khai báo với từ khoá abstract,Abstract class là một lớp cha chứa các biến và phương thức để mô tảthuộc tính và hành vi cho tất cả các class có cùng bản chất (Tính năng,hành vi, kiểu, loài)

Abstract class là một class được khai báo với từ khoá abstract, nóchứa các phương thức trừu trượng hoặc các phương thức thường,abstract class không thể khởi tạo, chỉ có thế được kế thừa bởi các lớpcon có sự tương quan, các lớp con kế thừa lớp cha sẽ phải override lạicác phương thức trừu tượng ở trong lớp cha

17 Thuật toán

 Bubble Sort (Sắp xếp nổi bọt) là một thuật toán sắp xếp đơn giản,với thao tác cơ bản là so sánh hai phần tử kề nhau, nếu chúng chưa đứngđúng thứ tự thì đổi chỗ (swap)

Có thể tiến hành từ trên xuống (bên trái sang) hoặc từ dưới lên(bên phải sang)

Ngày đăng: 26/12/2022, 04:44

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

w