JavaRush /Blog Java /Random-VI /Nghỉ giải lao #114. Hàm tạo mặc định trong Java là một ví...

Nghỉ giải lao #114. Hàm tạo mặc định trong Java là một ví dụ về hàm tạo lớp. Maven vs Gradle: Cách chọn công cụ xây dựng phù hợp

Xuất bản trong nhóm

Trình xây dựng mặc định trong Java - Ví dụ về Trình xây dựng lớp

Nguồn: FreeCodeCamp Trong bài viết này, chúng ta sẽ nói về các hàm tạo, cách tạo chúng và các hàm tạo mặc định trong Java là gì. Nghỉ giải lao #114.  Hàm tạo mặc định trong Java là một ví dụ về hàm tạo lớp.  Maven vs Gradle: Cách chọn công cụ xây dựng phù hợp - 1

Một nhà xây dựng là gì?

Là một thuật ngữ lập trình hướng đối tượng dựa trên lớp, hàm tạo là một phương thức duy nhất được sử dụng để khởi tạo một đối tượng (lớp) mới được tạo. Có một số quy tắc bạn nên tuân theo khi tạo hàm tạo. Những quy tắc này bao gồm:
  • Tên hàm tạo phải khớp với tên lớp.
  • Hàm tạo không được có kiểu trả về.
Trước khi tiếp tục, hãy xem một lớp trông như thế nào trong Java:
public class Student {
  String firstName;
  String lastName;
  int age;
}
Đoạn mã trên hiển thị một lớp Sinh viên với ba thuộc tính - firstName , LastNameage . Chúng ta sẽ giả định rằng lớp học phải là một hình mẫu cho việc đăng ký học sinh. Hãy nhớ lại rằng ba thuộc tính này không có bất kỳ giá trị nào, vì vậy thông tin trong chúng không được mã hóa cứng. Bây giờ chúng ta sẽ sử dụng hàm tạo để tạo một thể hiện mới của đối tượng Sinh viên :
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор Student
  public Student(){
      firstName = "Ihechikara";
      lastName = "Abba";
      age = 100;
  }

  public static void main(String args[]) {
      Student myStudent = new Student();
      System.out.println(myStudent.age);
      // 100
  }
}
Chúng ta đã tạo một hàm tạo dùng để khởi tạo các thuộc tính được xác định trong đối tượng Sinh viên . Đoạn mã trên là một ví dụ về hàm tạo không có đối số . Bây giờ chúng ta hãy xem một loại ví dụ khác:
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор
  public Student(String firstName, String lastName, int age){
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
  }

  public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }

}
Bây giờ chúng ta đã tạo một hàm tạo được tham số hóa. Hàm tạo được tham số hóa là hàm tạo được tạo bằng các đối số/tham số. Bây giờ hãy thay đổi nó.
public Student(String firstName, String lastName, int age){

  }
Chúng tôi đã tạo một hàm tạo mới có ba đối số - hai chuỗi và một số nguyên.
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
Sau đó, chúng tôi liên kết các đối số này với các thuộc tính mà chúng tôi đã xác định khi tạo lớp của mình. Bây giờ chúng ta đã khởi tạo đối tượng Sinh viên bằng cách sử dụng hàm tạo.
public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }
Cuối cùng, chúng ta đã tạo một phiên bản mới của đối tượng Sinh viên và truyền các đối số của mình cho nó. Chúng tôi có thể làm điều này vì chúng tôi đã xác định chúng trong hàm tạo. Tôi đã tạo một hàm tạo với ba đối số, nhưng bạn cũng có thể tạo các hàm tạo riêng biệt để khởi tạo từng thuộc tính. Bây giờ bạn đã biết hàm tạo trong Java là gì và cách sử dụng nó, hãy xem xét các hàm tạo mặc định.

Hàm tạo mặc định là gì?

Hàm tạo mặc định là hàm tạo do trình biên dịch tạo ra nếu chúng ta không định nghĩa bất kỳ hàm tạo nào cho lớp. Đây là một ví dụ:
public class Student {
  String firstName;
  String lastName;
  int age;

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
Bạn có thể tìm thấy sự khác biệt giữa ví dụ này và hai ví dụ trước không? Lưu ý rằng trước khi tạo, chúng ta không định nghĩa hàm tạo myStudent để khởi tạo các thuộc tính được tạo trong lớp. Điều này sẽ không gây ra lỗi trong đường dẫn của chúng tôi. Chính xác hơn, trình biên dịch sẽ tạo một hàm tạo trống, nhưng bạn sẽ không thấy hàm tạo này ở bất kỳ đâu trong mã - nó xảy ra “dưới mui xe”. Đoạn mã trên sẽ trông như thế này khi trình biên dịch bắt đầu thực hiện công việc của nó:
public class Student {
  String firstName;
  String lastName;
  int age;


  /* пустой конструктор, созданный компилятором. Этот конструктор не будет отображаться в вашем codeе*/
  Student() {

  }

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
Nhiều người nhầm lẫn hàm tạo mặc định với hàm tạo không có đối số, nhưng trong Java chúng không giống nhau. Bất kỳ hàm tạo nào do lập trình viên tạo ra đều không được coi là hàm tạo mặc định trong Java.

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu hàm tạo là gì cũng như cách tạo và sử dụng chúng để khởi tạo các đối tượng của mình. Chúng ta cũng đã nói về hàm tạo mặc định và chúng khác với hàm tạo không có đối số như thế nào. Chúc mừng mã hóa!

Maven vs Gradle: Cách chọn công cụ xây dựng phù hợp

Nguồn: Hackernoon Xây dựng tự động hóa là một khía cạnh quan trọng của phát triển phần mềm. Trong bài viết này, chúng tôi sẽ so sánh hai trong số các công cụ xây dựng phổ biến nhất để phát triển Java: MavenGradle . Nghỉ giải lao #114.  Hàm tạo mặc định trong Java là một ví dụ về hàm tạo lớp.  Maven vs Gradle: Cách chọn công cụ xây dựng phù hợp - 2

Tạo và Apache Ant

Trước đây, các nhà phát triển đã sử dụng công cụ Make để tạo các dự án Java và quá trình xây dựng không khác nhiều so với việc tạo ứng dụng bằng bất kỳ ngôn ngữ nào khác. Nhưng vào năm 2000, hệ thống xây dựng An t (Another Neat Tool) đã được phát hành. Ant, giống như Make, sử dụng kiểu mệnh lệnh và các tập lệnh xây dựng của nó có cú pháp XML. Ant được thiết kế như một hệ thống tự động hóa xây dựng cho các dự án Java. Do đó, các nhà phát triển Java có thể dễ dàng mở rộng chức năng của nó.

Maven

Năm 2004, hệ thống xây dựng Maven mới ra đời và thay đổi quy trình xây dựng các ứng dụng Java. Trước đây, các nhà phát triển tự tổ chức cấu trúc thư mục để lưu trữ mã nguồn, tài nguyên, thư mục đường dẫn lớp và thư mục đầu ra. Do đó, các tập lệnh xây dựng Ant cho hai ứng dụng khác nhau có thể rất khác nhau: biên dịch, tập hợp, sao chép tệp vào thư mục đầu ra, v.v. được viết riêng. Trong Maven, một dự án Java luôn có cấu trúc rõ ràng. Ví dụ: nguồn phải ở dạng src/main/java, tài nguyên dành cho kiểm tra phải ở dạng src/test/resources. Maven cho phép bạn tạo cấu trúc tệp của một dự án điển hình chỉ bằng một lệnh duy nhất. Maven cũng giới thiệu khái niệm về “vòng đời xây dựng” với các giai đoạn tuần tự: xác thực ➞ biên dịch ➞ kiểm tra ➞ gói ➞ xác minh ➞ cài đặt ➞ triển khai) Giờ đây, nhờ các thư mục cấu trúc cố định và một bộ mục tiêu, không cần phải viết và duy trì một tập lệnh xây dựng lớn - chúng đã trở thành tập lệnh khai báo. Nó đã trở nên thuận tiện hơn cho các nhà phát triển khi làm việc không chỉ với mã của riêng họ mà còn với các dự án của bên thứ ba, vì mã nguồn hoạt động rõ ràng và cách lắp ráp nó. Có khá nhiều thư viện trong thế giới Java và các ứng dụng lớn sử dụng hàng trăm thư viện trong số đó. Nếu bạn sử dụng Ant, hãy nhớ rằng bạn sẽ phải tự thêm các tệp jar cần thiết vào dự án. Bạn cũng cần quan tâm đến các phụ thuộc bắc cầu cần thiết. Maven cung cấp chức năng quản lý phụ thuộc thông qua Kho lưu trữ trung tâm Maven. Bây giờ, khi chỉ định một phần phụ thuộc mới trong tập lệnh xây dựng, Maven sẽ tự động tìm jar cần thiết của phiên bản tương ứng và tất cả các phần phụ thuộc bắc cầu của nó, tải chúng xuống và đảm bảo rằng chúng sẽ nằm trong đường dẫn lớp của dự án. Bạn cũng có thể duy trì kho lưu trữ riêng của mình, nơi bạn có thể lưu trữ các thư viện được vá hoặc của riêng mình hoặc các thư viện tiêu chuẩn được tạo thủ công. Cần lưu ý rằng Ant có thể được sử dụng cùng với Apache Ivy Project , dự án này cũng cho phép bạn quản lý các phần phụ thuộc và làm việc với kho lưu trữ Maven. Bất chấp tất cả những ưu điểm của Maven, cách tiếp cận khai báo của nó có thể là một bất lợi trong một số trường hợp. Ví dụ: khi bạn cần thay đổi vòng đời xây dựng và thêm mục tiêu mới vào quy trình xây dựng. Chức năng Maven có thể được mở rộng bằng cách sử dụng plugin. Có rất nhiều plugin Maven được tạo sẵn để giải quyết các vấn đề khác nhau, tất cả đều có sẵn từ Kho lưu trữ trung tâm Maven. Nhưng nếu vì lý do nào đó mà bạn cần thay đổi một chút vòng đời tiêu chuẩn và không có plugin phù hợp thì nhà phát triển sẽ phải tự tạo ra nó.

Lớp

Bản phát hành đầu tiên của hệ thống xây dựng Gradle được phát hành vào năm 2008. 4 năm sau phiên bản 1.0 được phát hành. Mục tiêu của dự án Gradle là giữ lại tất cả lợi ích của Maven, nhưng đồng thời tăng khả năng tùy chỉnh quá trình xây dựng. Các tập lệnh xây dựng Gradle được viết bằng Groovy DSL. Gradle cho phép bạn viết các build script khai báo và gọn hơn Maven vì XML khá cồng kềnh. Bạn có thể dễ dàng thêm logic tùy chỉnh vào quy trình xây dựng Gradle của mình. Tất cả những gì bạn cần làm là viết một tập lệnh Groovy và bạn không cần phải phát triển các plugin. Nhà phát triển có thể dễ dàng gỡ lỗi việc thực thi các tập lệnh xây dựng vì chúng là các tệp Groovy thông thường. Do đó, Gradle kết hợp các cách tiếp cận khai báo và mệnh lệnh. Gradle cũng hỗ trợ plugin, cho phép nhà phát triển thay đổi cài đặt. Một trong những lợi thế đáng kể của Gradle là các bản dựng tăng dần. Khi quá trình xây dựng được khởi động lại, Gradle xác định xem các tệp đầu vào của mục tiêu có thay đổi hay không và nếu không, quá trình thực thi của mục tiêu sẽ bị bỏ qua vì các tạo phẩm đầu ra của mục tiêu đã được tạo. Điều này giúp tốc độ xây dựng tăng đáng kể so với Maven, đặc biệt là trong các dự án lớn nhiều mô-đun. Gradle cũng có thể chạy daemon Gradle, một quy trình nền giúp tránh lãng phí tài nguyên và thời gian khởi tạo mỗi khi chạy bản dựng. Gradle có một tính năng trình bao bọc Gradle tiện dụng - khả năng tạo các tập lệnh shell và Windows tự động tải xuống bản phân phối Gradle của phiên bản được chỉ định và sử dụng nó để xây dựng dự án. Điều này có nghĩa là để xây dựng dự án Gradle, bạn không cần cài đặt Gradle riêng mà chỉ cần cài đặt Java. Nếu cần, bạn có thể dễ dàng chuyển dự án của mình sang một phiên bản Gradle khác.

Lựa chọn giữa Maven và Gradle

Bất chấp những lợi ích của Gradle, khá nhiều dự án sử dụng hệ thống xây dựng Maven. Sự lựa chọn phụ thuộc vào loại dự án và nhóm. Maven đã được sử dụng từ năm 2004 nên có nhiều nhà phát triển quen thuộc với nó hơn. Hơn nữa, Maven ổn định. Phiên bản chính mới nhất 3 được phát hành vào năm 2010. Gradle đã thay đổi đáng kể nhiều lần mà không có khả năng tương thích ngược và các nhà phát triển đã phải chuyển tập lệnh xây dựng của họ sang các phiên bản mới. Vì không phải ai cũng quen thuộc với Groovy hoặc Kotlin nên làm việc với Gradle đòi hỏi kiến ​​thức bổ sung, trong khi Maven sử dụng XML rõ ràng. Điều này đặt ra câu hỏi: nếu dự án bắt đầu phát triển trước khi Gradle trở nên phổ biến, việc chuyển các tập lệnh xây dựng sang Gradle có hợp lý không? Một mặt, ngày càng có nhiều nhà phát triển chọn Gradle. Ví dụ: Spring, Hibernate và LinkedIn sử dụng Gradle. Hệ thống xây dựng Android cũng là Gradle và nó thường được các nhà phát triển ứng dụng Android phổ biến. Mặt khác, tất cả các IDE nổi tiếng đều tích hợp với cả hệ thống xây dựng và hỗ trợ tự động hoàn thành khi chỉnh sửa tập lệnh xây dựng. Giống như Maven, Gradle có một số lượng lớn plugin cho phép bạn thêm các chức năng được sử dụng thường xuyên vào quá trình xây dựng dự án.

Phần kết luận

Từ những ưu và nhược điểm của từng hệ thống lắp ráp được mô tả ở trên, có thể rút ra kết luận sau. Maven phù hợp hơn với các dự án nhỏ không yêu cầu tùy chỉnh quy trình xây dựng và thời gian xây dựng dự án không quá quan trọng. Gradle phù hợp hơn với các dự án quy mô lớn với số lượng lớn mô-đun cũng như các ứng dụng Android.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION