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 1TRƯỜ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 4NHẬ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 6truyề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 718 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 8Chươ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 9trú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 10că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 11mộ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 12Trong 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 133.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 15ngườ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 16Chươ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 18quả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 195 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 206 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 216.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 22Biế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 24Figure 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 2615 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)