我一直在嘗試用 Java 建模一所學校(沒有主要方法,只有屬性)。如何將 30 個學生和一個老師分配到一個教室?(是否可以沒有 main 方法?)
public class Person{
private String name;
private String surname;
private String age;
private String job;
}
public class Teacher extends Person{
private String job = "teacher";
}
public class Student extends Person{
private String job = "student";
}
private class Classroom{
// 1 teacher and max. 30 students per classroom
}
我最好的猜測:使用陣列?
private Student[] students = new Student[30]; // there can be less students so would this be okay?
private Teacher classroomTeacher;
最后一個問題,使用“擴展”創建教師和學生班級是一種好習慣嗎?如果沒有,我該如何改進它?如果是這樣,Person、Student、Teacher 應該在同一個檔案中還是分開?
public class School{
private enum schoolTypes{
ArtSchool,
ScienceSchool,
SportsSchool,
}
private Classroom classrooms;
}
如果我要創建一個 School 班級并指定班級可以擁有的學生人數,我會使用 ArrayLists 還是 Arrays 就足夠了?
uj5u.com熱心網友回復:
為清楚起見,更改name為givenName. 參見維基百科。
private String givenName;
private String surname;
年齡應該是整數,而不是文本。
private int age;
如果在編譯時已知所有可能的作業,請使用 Java 強大的靈活列舉工具。請參閱Oracle 的教程。
enum Job { TEACHER , ADMINISTRATOR , STUDENT }
但實際上,你不需要這份作業。您有教師和學生的子類。所以注意到他們的作業是多余的。
選擇您要走的路線:
Person具有列舉型別的job成員欄位的類。Job- 子類
Teacher&Student。
兩條路線都有效,各有利弊。但不要將兩者混為一談。
您問:
使用“擴展”創建教師和學生班級是一種好習慣嗎?
是的,如果您選擇上面兩個專案符號中的第二個。
Classroom應該是它自己的類,而不是private你標記的。是的,您可以使用陣列。但是使用Java Collections 框架更加靈活和方便。
public Classroom
{
private Teacher teacher ;
private Set< Student > students ;
… add constructor
… add getters, and possible setters
}
您問:
我會使用 ArrayLists 還是 Arrays 就足夠了?
一般最好使用 和 等List集合Set。當速度至關重要或記憶體有限時,請使用陣列。
您問:
Person,Student,Teacher應該在同一個檔案中還是分開?
是的,通常最好將每個類保存在自己的.java檔案中。使用IDE可以很容易地在檔案之間導航:IntelliJ、NetBeans、Eclipse。
創建一個學校班級
public class School
{
String schoolName ;
Administrator principal ;
Set< Classroom > classrooms ;
…
}
您問:
沒有主要方法可以嗎?
首先定義你的現實世界模型,就像你正在做的那樣。決定你的“問題領域”課程的結構,例如學校、教室、教師、學生等。
該main方法是運行您的應用程式的入口點。這是您開始實體化物件的地方。您從用戶、檔案或資料庫中獲取輸入,并使用這些資料從您的類中創建物件。
如何將 30 名學生和一名教師分配到一個教室?
在您的主要方法或稍后呼叫的某些方法中:
Set< Student > students = new HashSet<>() ;
students.add( new Student( … ) ) ;
students.add( new Student( … ) ) ;
…
Teacher teacher = new Teacher( … ) ;
Classroom classroom = new Classroom( teacher , students ) ;
您問:
指定班級可以擁有的學生人數
對班級中的學生人數進行限制是所謂的資料驗證的一部分。您必須為此撰寫代碼,并在添加學生時檢查限制。
Jakarta Bean Validation框架可以幫助完成這項作業。(對于實際作業,而不是簡單的功課專案。)
uj5u.com熱心網友回復:
你有基本的想法,但我會考慮以下幾點:
您正在混合實作模式。我要么使用列舉來標記作業(不是字串),要么使用子類,但不能同時使用兩者。我會更傾向于自己的子類化;只是放棄這個job領域,這是不必要的。
至于學生串列,我將繼承 ArrayList 并簡單地覆寫add并addAll檢查其自身的大小,并在嘗試添加超過限制時拋出例外。
你的教室就會變成這樣:
public class Classroom {
private Teacher teacher;
private List<Student> students;
public Classroom(Teacher teacher, List<Student> students) {
this.teacher = teacher;
this.students = new LimitedList(students, 30); //class you should make
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481951.html
上一篇:未捕獲的型別錯誤:代理集處理程式為屬性“長度”回傳false
下一篇:不兼容的兩個void函式宣告
