Xu Hướng 11/2022 # Lập Trình Hướng Đối Tượng Trong Java / 2023 # Top 12 View | 2atlantic.edu.vn

Xu Hướng 11/2022 # Lập Trình Hướng Đối Tượng Trong Java / 2023 # Top 12 View

Bạn đang xem bài viết Lập Trình Hướng Đối Tượng Trong Java / 2023 được cập nhật mới nhất trên website 2atlantic.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Bài tập

Bạn hãy tạo ra lớp Student với thông tin giống như sau:

name, address, gpa là 3 thuộc tính chỉ tên, địa chỉ và điểm GPA của lớp Student.

Student(name: String, address: String, gpa: double) là phương thức khởi tạo có tham số dùng để khởi tạo giá trị cho các thuộc tính.

toString() là phương thức ghi đè từ lớp Object (bạn sẽ hiểu tại sao phương thức này lại ghi đè từ lớp Object ở phần lý thuyết), phương thức này sẽ trả về thông tin của đối tượng dưới dạng String. Ví dụ nếu name = "Kien", address = "Ha Noi", gpa = "6.6" thì phương thức toString() sẽ trả về: "Name: Kien, address: Ha Noi, GPA: 6.6".

Chương trình để test lớp Student:

public class Entry { public static void main(String[] args) { Student s = new Student("Kien", "Ha Noi", 6.6); System.out.println(s); } }

Kết quả khi chạy chương trình:

Name: Kien, addres: Ha Noi, GPA: 6.6

Lý thuyết

Bài này sẽ giúp bạn hiểu rõ hơn về lớp Object. Trước hết bạn hãy xem ví dụ sau:

class Student{ } public class Entry { public static void main(String[] args) { Student s = new Student(); System.out.println(s.hashCode()); System.out.println(s.toString()); System.out.println(s.getClass()); } }

Kết quả khi chạy chương trình:

1554547125 [email protected] class OOP.Student

Nhìn vào ví dụ trên chắc bạn sẽ thắc mắc là tại sao lớp Student lại có những phương thức như hashCode(), toString(), getClass() trong khi bạn không khai báo các phương thức này. Lý do là tất cả các lớp trong Java đều được kế thừa từ lớp Object và trong lớp Object có các phương thức này.

Ngoài các phương thức trên, lớp Object còn có một số phương thức khác, trong đó toString() là phương thức dùng để biểu diễn đối tượng dưới dạng xâu ( String). Trong thực tế bạn sẽ sử dụng phương thức toString() rất nhiều. Ví dụ khi bạn gọi hàm System.out.println() với một đối tượng thì chương trình sẽ hiển thị phương thức toString() của đối tượng đó:

public class Student { private String name; private String address; private double gpa; public Student(String name, String address, double gpa) { chúng tôi = name; this.address = address; chúng tôi = gpa; } @Override public String toString() { return "Name: " + name + ", address: " + address + ", GPA: " + gpa; } }

Kết quả khi chạy chương trình:

Name: Kien, age: 23

Có thể thấy, bạn hoàn toàn có thể sử dụng phương thức toString() để thay thế cho phương thức display() mà bạn đã học ở các bài trước.

Đọc tới đây bạn đã hiểu về phương thức toString(), hãy quay lại phần bài tập và làm thử.

Hướng dẫn

Bạn cần tạo ra lớp Student giống như sau:

public class Student { private String name; private String address; private double gpa; public Student(String name, String address, double gpa) { chúng tôi = name; this.address = address; chúng tôi = gpa; } @Override public String toString() { return "Name: " + name + ", address: " + address + ", GPA: " + gpa; } }

Khái Niệm Lập Trình Hướng Đối Tượng Trong Java / 2023

Trong bài viết này, chúng ta sẽ tìm hiểu về những khái niệm cơ bản của Lập trình hướng đối tượng (OOPs Concepts).

Lập trình hướng đối tượng là một mô hình cung cấp nhiều khái niệm, chẳng hạn như kế thừa (inheritance), ràng buộc dữ liệu (data binding), đa hình (polymorphism), v.v.

Mô hình lập trình hướng đối tượng là nơi mọi thứ được biểu diễn dưới dạng một đối tượng được gọi là ngôn ngữ lập trình hướng đối tượng thực sự.

Ngày nay Java quá phát triển với mô hình lập trình hướng đối tượng nên có thể sẽ có nhiều người nhầm lẫn.

Java không phải là ngôn ngữ lập trình hướng đối tượng đầu tiên.

Chính Simula mới được coi là ngôn ngữ lập trình hướng đối tượng đầu tiên.

Và Smalltalk là ngôn ngữ lập trình hướng đối tượng thực sự đầu tiên.

Và các ngôn ngữ hướng đối tượng phổ biến là: C #, JAVA, PHP, Python, C ++, v.v.

Mục đích chính của lập trình hướng đối tượng là để thực hiện các thực thể trong thế giới thực vào máy tính thông qua: Object, Class, Abstract, Inheritance, Polymorphism…

I. OOP (Hệ thống lập trình hướng đối tượng)

Đối tượng (Object) có nghĩa là một thực thể trong thế giới thực như bút, ghế, bàn, máy tính, đồng hồ, v.v …

Lập trình hướng đối tượng là một phương pháp hoặc mô hình để thiết kế chương trình bằng cách sử dụng các lớp (class) và đối tượng (object). Nó đơn giản hóa việc phát triển và bảo trì phần mềm bằng cách cung cấp một số khái niệm:

Object: Đối tượng

Class: Lớp

Inheritance: Kế thừa

Polymorphism: Đa hình

Abstraction: Trừu tượng

Encapsulation: Đóng gói

Ngoài các khái niệm này, còn có một số thuật ngữ khác được sử dụng trong thiết kế Hướng đối tượng:

Coupling

Cohesion

Association

Aggregation

Composition

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

1) Lập trình hướng đối tượng giúp lập trình và bảo trì dễ dàng hơn, trong khi đó, trong khi đó ngôn ngữ lập trình hướng thủ tục, không dễ quản lý nếu code khi quy mô dự án tăng.

2) OOP cung cấp khả năng ẩn dữ liệu, trong khi đó, trong ngôn ngữ lập trình hướng thủ tục, dữ liệu có thể được truy cập từ bất cứ đâu.

3) OOP cung cấp khả năng mô phỏng sự kiện trong thế giới thực hiệu quả hơn nhiều. Do đó, chúng ta có thể cung cấp giải pháp cho vấn đề từ thực tế.

IV. Sự khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ lập trình dựa trên đối tượng là gì?

Ngôn ngữ lập trình dựa trên đối tượng (object-based programming language) tuân theo tất cả các tính năng của lập trình hướng đối tượng ngoại trừ Kế thừa (inheritance). JavaScript và VBScript là ví dụ về ngôn ngữ lập trình dựa trên đối tượng.

Lời kết.

JavaDEV

Class Trong Lập Trình Hướng Đối Tượng / 2023

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu cho các bạn sơ qua về LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG. Bây giờ, Kteam sẽ giải thích các bạn rõ hơn về Class trong lập trình hướng đối tượng.

Nội dung

Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:

Bài này chúng ta sẽ tìm hiểu những vấn đề sau:

Class là gì?

Cú pháp khai báo class.

Thuộc tính và phương thức trong hướng đối tượng.

Phương thức khởi tạo

Class là gì?

Class (Lớp) là người dùng định nghĩa thiết kế cho hướng đối tượng. Nó đại diện cho những tập thuộc tính và phương thức chung cho tất cả các đối tượng của lớp này.

Nếu trong những ngôn ngữ thuần hướng đối tượng như Java, C#,.. thì Class chính là kiểu dữ liệu mà lập tình viên tự tạo ra.

Cú pháp khai báo Class

Trong đó:

public class Person { public String name; public int age; public float height; public void eat() { System.out.print("Person is eating"); } }

Khái báo một class tên là Person.

Class Person có các thuộc tính: name lưu tên, age lưu tuổi, height lưu chiều cao

Class Person có phương thức eat: Khi được gọi sẽ in ra màn hình “Person is eating“

Các từ khóa public sẽ giải thích ở bài sau.

Thuộc tính và phương thức trong hướng đối tượng

Thuộc tính

Chúng ta cần phải thống nhất nhóm đối tượng cần có những thông tin cơ bản gì? Không thể có chuyện đối tượng bạn A có tên, tuổi, chiều cao; bạn B chỉ có tên, cân nặng, quê quán; Việc thông tin không thống nhất gây ra quản lý khó đảm bảo.

Đó là lý do ta phải khai báo các thuộc tính trong lớp để các đối tượng của lớp đó bắt buộc phải có thông tin lưu trữ các thuộc tính trên.

Phương thức

Đây là kiến thức khá mới mẻ trong loạt bài viết này. Phương thức trong hướng đối tượng là cách xử lý hành vi của đối tượng. Bản chất, trong phương thức sẽ chứa loạt code, khi ta gọi phương thức của đối tượng, những dòng code trong phương thức đó sẽ thực hiện.

Nếu các bạn đã từng học các ngôn ngữ lập trình hướng thủ tục, thì phương thức nó khá giống hàm. Tuy nhiên, phương thức khác hàm là phương thức phải khai báo trong lớp, còn hàm thì khai báo độc lập.

[Tham số]: Là những tham số ta muốn truyền vào phương thức để thực hiện.

public class Person { public String name; public int age; public float height; public void eat(String foodName) { System.out.println(name + " is eating "+ foodName); } public int getAge() { return age; } } public class HelloWorld { public static void main(String[] args) { Person a = new Person(); chúng tôi = "Chau"; chúng tôi = 21; a.height = 1.7f; a.eat("Rice"); int age = a.getAge(); System.out.println("His age:"+age); } }

Trong khái báo lớp Person. Ta có phương thức eat(), có tham số truyền vào là biến foodName kiểu String. Ta sẽ in ra màn hình tên của đối tượng Person ăn món có tên là foodName. Vì phương thức eat() không trả về giá trị gì, ta để từ khóa là void.

Ở phương thức getAge() là trả về tuổi của đối tượng. Vì vậy ta chọn từ khóa là int vì biến age trong class thuộc kiểu int. Rồi trong phương thức, ta return giá trị age của đối tượng về.

Trong chương trình main. Sau khi khởi tạo đối tượng và gán giá trị cho các thuộc tính. Ta thử chạy phương thức eat(), ta truyền vào giá trị “Rice” vào tham số. Như vậy, giá trị tham số foodName sẽ đại diện giá trị “Rice”. Sau đó sẽ in ra màn hình là ” Chau is eating Rice “.

Ở phương thức getAge(), vì phương thức sẽ return giá trị thuộc tính age của đối tượng. Ta khai báo một biến age để lưu giá trị mà phương thức trả về. Sau đó in nó ra màn hình.

Phương thức khởi tạo

Các bạn sẽ thấy, khi chúng ta tạo ra một đối tượng ta sẽ viết Person a = new Person();. Thực ra, khi chúng đang gọi phương thức khởi tạo của đối tượng. Thường phương thức khởi tạo sẽ cùng tên với class.

Mặc định, phương thức khởi tạo tự có như trên. Tuy nhiên, ta thường cần chỉnh sửa phương thức khởi tạo cho hợp yêu cầu. Ví dụ như đoạn code này:

public class HelloWorld { public static void main(String[] args) { Person a = new Person(); chúng tôi = "Chau"; chúng tôi = 21; a.height = 1.7f; } }

Sau khi khởi tạo, ta cần phải gán giá trị cho các thuộc tính của đối tượng a. Tuy nhiên, trong quá trình phát triển phần mềm, người sử dụng class chưa chắc hiểu hết toàn bộ code bên trong một class. Vì vậy, từ vấn đề trên, ta muốn mỗi khi khởi tạo một đối tượng Person thì cần cung cấp thông tin ngay trong phương thức khởi tạo.

Ta sẽ khai báo phương thức khởi tạo như sau:

public class Person { public String name; public int age; public float height; public Person(String name, int age, float height) { } public void eat(String foodName) { System.out.println(name + " is eating "+ foodName); } public int getAge() { return age; } }

Như vậy trong phương thức khởi tạo yêu cầu cần 3 tham số truyền vào là name, age, height. Bây giờ, ta sẽ gán các giá trị của 3 tham số đó vào 3 thuộc tính đối tượng tương ứng.

Tuy nhiên, nơi ta đang viết là đang định nghĩa của lớp, không phải chương trình xử lý của đối tượng. Như vậy, làm sao gán giá trị cho 3 thuộc tính của đối tượng. Để làm được điều đó, ta sẽ sử dụng từ khóa this để ám chỉ đối tượng trong class. Ở những bài viết sau, sẽ giải thích rõ về từ khóa this hơn.

public class Person { public String name; public int age; public float height; public Person(String name, int age, float height) { chúng tôi = name; chúng tôi = age; this.height = height; } public void eat(String foodName) { System.out.println(name + " is eating "+ foodName); } public int getAge() { return age; } }

Ta sẽ sửa làm chương trình main như sau:

public class HelloWorld { public static void main(String[] args) { Person a = new Person("Chau", 21, 1.7f); a.eat("Rice"); } }

Ta sẽ khởi tạo Person a = new Person(“Chau”, 21, 1.7f);. Truyền các tham số vào để gán cho các thuộc tính của đối tượng a.

Khi chạy phương thức khởi tạo, các thuộc tính của đối tượng a sẽ gán giá trị. Ta thấy sự tương đồng như sau:

Như vậy, ta đang rút gọn lại code. Khi khởi tạo đối tượng thì lập tức gán các giá trị và các đối tượng luôn, người lập trình sẽ giảm code gán giá trị (Việc giảm code như thế này cũng giảm được rủi ro trong lập trình). Và ta thấy từ khóa this chính là đại diện cho đối tượng a, và sau này ta tạo các đối tượng b,c,… thì this sẽ đại diện tương tự.

Kết

Như vậy chúng ta đã tìm hiểu class trong lập trình hướng đối tượng

Ở bài sau, Kteam sẽ giới thiệu đến bạn về CÁC LOẠI PHẠM VI TRUY CẬP TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Class trong lập trình hướng đối tượng dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.

Lập Trình Hướng Đối Tượng Oop Với Php / 2023

OOP – Khái niệm về lập trình hướng đối tượng

Hướng đối tượng là gì?

OOP – lập trình hướng đối tượng không chỉ sử dụng các cú pháp viết code mới mà nó làm bạn thay đổi cách nghĩ về một vấn đề bài toán đặt ra. Rất nhiều lập trình viên mắc lỗi khi ứng dụng một cách không thích hợp lý thuyết về lập trình hướng đối tượng. Việc lập trình ứng dụng quen thuộc thực hiện theo một quy trình có thể bạn đã bết ví dụ: Một người dùng nhập thông tin vào HMTL form; Mã PHP sẽ kiểm tra dữ liệu đó; gửi dữ liệu đó bằng email; lưu trữ dữ liệu đó vào database … vân vân …, ở quy trình đó ta thấy nó biểu thị bởi các động từ đơn giản (hành động) như: kiểm tra, gửi mail, lưu trữ … và các danh từ như dữ liệu. Với lập trình hướng thủ tục thì việc lập trình tập trung vào các động từ: làm điều gì đó, sau đó làm gì đó, làm gì đó … Với lập trình hướng đối tượng thì nó lại tập trung trên các danh từ: cái gì giúp cho ứng dụng hoạt động.

Một cách tương đối, bạn cần xác định các động từ, danh từ cần thiết cho ứng dụng. Dựa trên so sánh của hai tập hợp này mà chọn cho mình mô hình thiết kế ứng dụng sao cho phù hợp là dựa trên hướng đối tượng hay hướng thủ tục

Một vài khái niệm cơ sở về OOP

class và object

Hai khái niệm quan trọng nhất trong OOP là lớp(class) và đối tượng (object). Một lớp class là định nghĩa về đối sự việc tổng quát. Còn một đối tượng object là một triển khai cụ thể về điều được định nghĩa bởi class. Để lập trình theo OOP, bạn phải thiết kế ra các class và triển khai (ứng dụng) chúng để sinh ra các đối tượng cần thiết.

Module hóa ứng dụng

Trừu tượng hóa abstract

Tính đóng gói

Đóng gói cũng là một khái niệm cơ sở của OOP, có nghĩa là cách hoạt động sao cho có kết quả yêu cầu/cách thay đổi trạng thái của đối tượng sẽ không cần biết bởi đối tượng sử dụng. Có nghĩa nó là một hộp đen, không cần biết bên trong hoạt động ra sao mà chỉ quan tâm kết quả phản ứng của hộp đen đó với các yêu cầu.

Tạo class (lớp)

Để tạo ra một lớp bạn sử dụng từ khóa class tiếp theo là tên class, toàn bộ nội dung class định nghĩa trong cặp {}

<?php class MyClass { }

Sau khi có được định nghĩa lớp như vậy, việc tạo ra một đối tượng của lớp thì dùng toán tử new: $obj = new MyClass;, để xem nội dung class có thể dùng var_dump

Bạn ghi đoạn code sau vào file ví dụ chúng tôi và chạy thử

<?php class MyClass { } $obj = new MyClass; var_dump($obj);

Các thuộc tính, phương thức là thành viên của lớp

Bên trong class có biến và hàm được gọi với tên là thuộc tính của lớp, phương thức của lớp. Toàn bộ tập hợp các thuộc tính và phương thức của lớp được gọi là thành viên ( member) của lớp.

Các phương thức được định nghĩa, khai báo bên trong lóp giống như cách khai bảo một hàm bên ngoài thông thường, nó có thể trả về giá trị, nó có thể có tham số, tham số mặc định ...Ví dụ sau định nghĩa hàm functionName trong lớp.

class ClassName { function functionName() { } }

Lưu ý, với hàm trong lớp (phương thức) khi định nghĩa thì nó thường bắt đầu bằng các từ xác định phạm vi truy cập ( visibility bạn sẽ tìm hiểu kỹ hơn ở phần kế thừa) với các từ khóa: public, private hoặc protected nếu khi định nghĩa hàm không chỉ ra một trong các từ khóa này thì phương thức đó được hiểu là public

Một thành viên lớp (method và thuộc tính), có các khả năng truy cập khi định nghĩa như sau:

public thành viên này có thể truy cập ở bất kỳ đâu

private chỉ có thể truy cập từ chính lớp định nghĩa ra thành viên

protected chỉ có thể truy cập từ chính lớp định nghĩa ra thành viên và các lớp kế thừa nó

Định nghĩa các thuộc tính (biến) của lớp giống với định nghĩa biến thông thường nhưng có kèm theo tiền tố là các từ khóa xác định phạm vi truy cập. Ví dụ sau định nghĩa lớp có thuộc tính và phương thức sử dụng các từ khóa định nghĩa phạm vi truy cập:

<?php class User { public $name = "User Name"; private $age; private $info; public function setAge($name, $age) { } protected function processInfomation() { } } <?php class User { public $name = "User Name"; private $age; private $info; public function setAge($name, $age) { } protected function processInfomation() { } public function getInfo() { } } $user = new User();

Hàm tạo

Hàm tạo là loại hàm đặc biệt trong lớp, sự khác biệt của nó với các hàm thông thường ở 3 điểm:

Tên của hàm luôn là __construct

Hàm này luôn được tự động chạy khi đối tượng được tạo ra

Nó không thể có câu lệnh return để trả về giá trị hàm

Hàm tạo là nơi thích hợp để khởi tạo các tham số cho lớp, thi hành các tác vụ ban đầu khi đối được tạo ra. Hàm tạo cũng chứa tham số như các hàm thông thường khác.

<? class bookdef { protected $price; protected $title; function __construct( $title, $price ){ } public function getTitle() { } } $vatly = new bookdef("VAT LY LOP 10",20000); $toan = new bookdef("TOAN 10",30000);

Tính kế thừa

Khi định nghĩa các lớp (lớp con) bạn có thể cho lớp đó kế thừa các đặc tính từ một lớp khác (gọi là lớp cha) bằng từ khóa extends.

class Child extends Parent { }

Khi định nghĩa lớp như vậy

Lớp con sẽ có tất cả các thành viên biến (thuộc tính) khai báo trong lớp cha

Lớp con sẽ có tất cả các thành viên hàm giống lớp cha, mặc định những hàm này làm việc giống với cách làm việc của lớp cha

Trong lớp con có thể thêm các thuộc tính riêng, các phương thức riêng hoặc định nghĩa lại (quá tải) phương thức cha

Quá tải hàm là định nghĩa hàm trùng tên với hàm của lớp cha, mục đích chính là định nghĩa lại hàm nào đó quả lớp cha. Ví dụ dưới là hàm play

Ví dụ tạo lớp cha Pet và lớp con Dog và Cat kế thừa từ Pet

<? class Pet { public $name; function __construct($pet_name) { } function eat() { } function sleep() { } function play() { } } class Cat extends Pet { function play() { } } class Dog extends Pet { function play() { } } $dog = new Dog('Satchel'); $cat = new Cat('Bucky'); $pet = new Pet('Rob');

Giao diện - Interface

Interface nó cung cấp tên các hàm chung để triển khai mã. Có thể nói interface (giao diện) là bộ khung mẫu để triển khai mã.

Để tạo ra interface cách tạo tương tự như class với keyword là interface và phần thân các phương thức không phải định nghĩa. Tất cả các phương thức trong interface là public

Ví dụ về tạo một interface

<?php interface ILogger { public function log($message); }

Như vậy bạn thấy interface chỉ có tên interface và tên các phương thức. Giờ một lớp triển khai mã theo giao diện này sẽ định nghĩa lớp với cách sử dụng từ khóa implements

<?php class ClassName implements InterfaceName1, InterfaceName2 { }

Khi lớp triển khai theo giao diện nào thì tất cả các hàm của giao diện đó lớp phải định nghĩa code đầy đủ. Ví dụ triển khai giao diện ILogger

<?php class FileLogger implements ILogger{ public function log($message){ echo sprintf("Log %s to the filen",$message); } } class DBLogger implements ILogger{ public function log($message){ echo sprintf("Log %s to the databasen",$message); } }

Lớp trừu tượng

Phương thức trừu tượng(hàm) là hàm khai báo với từ khóa abstract, nó chỉ là tên phương thức không chứa mã triển khai. Hàm khai báo như sau:

abstract public function abstractMethod();

Khi một lớp có ít nhất một hàm trừu tượng thì lớp đó được gọi là lớp trừu tượng và trong khai báo lớp cũng chỉ ra từ khóa abstract

<?php abstract class abstractClass{ abstract public function abstractMethod(); }

Lớp trừu tượng trong PHP được dùng như một lớp mẫu, không được sử dụng trực tiếp mà phải triển khai kế thừa lớp trừu tượng và định nghĩa lại các hàm trừu tượng.

Ví dụ về lớp trừu tượng:

<?php abstract class Person{ protected $firstName; protected $lastName; public function __construct($firstName,$lastName){ } public function __toString(){ } abstract public function getSalary(); }

Với lớp trừu tượng Person trên nếu dùng khởi tạo trực tiếp lớp như sau sẽ lỗi:

$p = new Person('John','Doe');

Để sử dụng đúng, cần kế thừa lớp trừu tượng và định nghĩa lại hàm trừu tượng cần thiết:

<?php class Employee extends Person{ private $salary; public function __construct($firstName,$lastName,$salary){ parent::__construct($firstName, $lastName); } public function getSalary(){ return $salary; } } $e = new Employee('John','Doe',5000); echo $e;

Cập nhật thông tin chi tiết về Lập Trình Hướng Đối Tượng Trong Java / 2023 trên website 2atlantic.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!