Java类&;对象,我能把这个编码得更好吗?
我为Author和Book编写了两个类,然后将Author包含在Book类中。这里没有任何用户输入,只是一种让我了解Java类的方法。在我的驱动程序中,我试图创建book对象来显示细节。细节如预期的那样结合和显示,但我觉得有更好的方法来做到这一点。你有什么建议吗 3个文件: BookDriver.javaJava类&;对象,我能把这个编码得更好吗?,java,Java,我为Author和Book编写了两个类,然后将Author包含在Book类中。这里没有任何用户输入,只是一种让我了解Java类的方法。在我的驱动程序中,我试图创建book对象来显示细节。细节如预期的那样结合和显示,但我觉得有更好的方法来做到这一点。你有什么建议吗 3个文件: BookDriver.java import java.util.Scanner; import java.util.*; import java.io.*; public class BookDriver{ public
import java.util.Scanner;
import java.util.*;
import java.io.*;
public class BookDriver{
public static void main(String[] args) {
Scanner userKeyboardInput = new Scanner(System.in);
System.out.println("");
System.out.println("===========================");
System.out.println(" Book Driver Output ");
System.out.println(" ****** ");
System.out.println(" genericCog ");
System.out.println("===========================");
System.out.println("");
Book.CreateBook1();
Book.ShowBook1();
Book.CreateBook2();
Book.ShowBook2();
System.out.println("");
System.out.println("===========================");
}//END main
}//END class
public class Book {
static String Title;
static String Category;
static String CoverType;
static int YearPublished;
static int NumberOfPages;
static String FirstName;
static String LastName;
static String AuthorFullName;
// BOOK 1
static void CreateAuthor1(){
Author Author1 = new Author();
FirstName = "J. R. R.";
LastName = "Tolkien";
AuthorFullName = Author1.CombineAuthorName(FirstName, LastName);
}
static void CreateBook1() {
CreateAuthor1();
Title = "The Hobbit; or, There and Back Again";
YearPublished = 1937;
NumberOfPages = 300;
Category = "Fantasy";
CoverType = "Paperback";
}
static void ShowBook1() {
System.out.println("----- -----");
System.out.println(" Book 1 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
// BOOK 2
static void CreateAuthor2(){
Author Author2 = new Author();
FirstName = "Christian";
LastName = "Keur";
AuthorFullName = Author2.CombineAuthorName(FirstName, LastName);
}
static void CreateBook2() {
CreateAuthor2();
Title = "IOS Programming: The Big Nerd Ranch Guide";
YearPublished = 2011;
NumberOfPages = 563;
Category = "Educational";
CoverType = "Paperback";
}
static void ShowBook2() {
System.out.println("----- -----");
System.out.println(" Book 2 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
}//END class Book
public class Author {
static String FirstName;
static String LastName;
static String AuthorFullName;
public String CombineAuthorName (String FirstName, String LastName){
AuthorFullName = FirstName + " " + LastName;
return AuthorFullName;
}
}//END class Author
Book.java
import java.util.Scanner;
import java.util.*;
import java.io.*;
public class BookDriver{
public static void main(String[] args) {
Scanner userKeyboardInput = new Scanner(System.in);
System.out.println("");
System.out.println("===========================");
System.out.println(" Book Driver Output ");
System.out.println(" ****** ");
System.out.println(" genericCog ");
System.out.println("===========================");
System.out.println("");
Book.CreateBook1();
Book.ShowBook1();
Book.CreateBook2();
Book.ShowBook2();
System.out.println("");
System.out.println("===========================");
}//END main
}//END class
public class Book {
static String Title;
static String Category;
static String CoverType;
static int YearPublished;
static int NumberOfPages;
static String FirstName;
static String LastName;
static String AuthorFullName;
// BOOK 1
static void CreateAuthor1(){
Author Author1 = new Author();
FirstName = "J. R. R.";
LastName = "Tolkien";
AuthorFullName = Author1.CombineAuthorName(FirstName, LastName);
}
static void CreateBook1() {
CreateAuthor1();
Title = "The Hobbit; or, There and Back Again";
YearPublished = 1937;
NumberOfPages = 300;
Category = "Fantasy";
CoverType = "Paperback";
}
static void ShowBook1() {
System.out.println("----- -----");
System.out.println(" Book 1 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
// BOOK 2
static void CreateAuthor2(){
Author Author2 = new Author();
FirstName = "Christian";
LastName = "Keur";
AuthorFullName = Author2.CombineAuthorName(FirstName, LastName);
}
static void CreateBook2() {
CreateAuthor2();
Title = "IOS Programming: The Big Nerd Ranch Guide";
YearPublished = 2011;
NumberOfPages = 563;
Category = "Educational";
CoverType = "Paperback";
}
static void ShowBook2() {
System.out.println("----- -----");
System.out.println(" Book 2 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
}//END class Book
public class Author {
static String FirstName;
static String LastName;
static String AuthorFullName;
public String CombineAuthorName (String FirstName, String LastName){
AuthorFullName = FirstName + " " + LastName;
return AuthorFullName;
}
}//END class Author
Author.java
import java.util.Scanner;
import java.util.*;
import java.io.*;
public class BookDriver{
public static void main(String[] args) {
Scanner userKeyboardInput = new Scanner(System.in);
System.out.println("");
System.out.println("===========================");
System.out.println(" Book Driver Output ");
System.out.println(" ****** ");
System.out.println(" genericCog ");
System.out.println("===========================");
System.out.println("");
Book.CreateBook1();
Book.ShowBook1();
Book.CreateBook2();
Book.ShowBook2();
System.out.println("");
System.out.println("===========================");
}//END main
}//END class
public class Book {
static String Title;
static String Category;
static String CoverType;
static int YearPublished;
static int NumberOfPages;
static String FirstName;
static String LastName;
static String AuthorFullName;
// BOOK 1
static void CreateAuthor1(){
Author Author1 = new Author();
FirstName = "J. R. R.";
LastName = "Tolkien";
AuthorFullName = Author1.CombineAuthorName(FirstName, LastName);
}
static void CreateBook1() {
CreateAuthor1();
Title = "The Hobbit; or, There and Back Again";
YearPublished = 1937;
NumberOfPages = 300;
Category = "Fantasy";
CoverType = "Paperback";
}
static void ShowBook1() {
System.out.println("----- -----");
System.out.println(" Book 1 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
// BOOK 2
static void CreateAuthor2(){
Author Author2 = new Author();
FirstName = "Christian";
LastName = "Keur";
AuthorFullName = Author2.CombineAuthorName(FirstName, LastName);
}
static void CreateBook2() {
CreateAuthor2();
Title = "IOS Programming: The Big Nerd Ranch Guide";
YearPublished = 2011;
NumberOfPages = 563;
Category = "Educational";
CoverType = "Paperback";
}
static void ShowBook2() {
System.out.println("----- -----");
System.out.println(" Book 2 Details ");
System.out.println("----- -----");
System.out.println("Title: " + Title);
System.out.println("Author: " + AuthorFullName);
System.out.println("Published: " + YearPublished);
System.out.println("Pages: " + NumberOfPages);
System.out.println("Category: " + Category);
System.out.println("Cover Type: " + CoverType);
System.out.println("");
System.out.println("############################");
System.out.println("");
}
}//END class Book
public class Author {
static String FirstName;
static String LastName;
static String AuthorFullName;
public String CombineAuthorName (String FirstName, String LastName){
AuthorFullName = FirstName + " " + LastName;
return AuthorFullName;
}
}//END class Author
我建议
- 对于变量和方法名称,您可以使用
而不是camelcase
TitleCase
- 当您可以使用实例字段时,不要初始化静态字段
- 删除不使用的字段。例如,
中不需要任何字段Author
- 使用构造函数初始化实例值,而不是使用方法重置静态变量。尽量避免可变的静态字段
- 尽量不要重复你自己
和ShowBook1
几乎完全相同。您可以设置一个包含图书编号的字段ShowBook2
- 尽量避免初始化过多的类。设置书籍所需的所有数据都可以传入,BookDriver类可以创建许多不同的书籍,而无需更改书籍代码
static
而不是newauthor()
。有了一些基本的写作知识,你肯定会做出很好的代码设计,因为代码本身看起来很有条理。