- У меня есть класс, который содержит много защищенных членов данных и множество групп различных функций, которые обрабатывают эти элементы данных.
- Я хочу отделить этот класс от подклассов, чтобы разные группы методов были в разных подклассах.
1.I имеет этого классОтдельные методы класса по группам в Java
class Student {
protected String name;
protected int courseNumber;
protected TreeMap<String, Integer> marks;
protected double successRate;
protected Pair<String, Integer>[] conferences; //name, place
void setName(String name) { this.name = name; }
//... setters
String getName() { return name; }
//... getters
//...constructors
int getHashCode() {
int res = 0;
//...
return res;
}
boolean less (Student b) {
boolean ls = false;
//...
return ls;
}
//... functions to compare objects
String lastConferenceName() {
return conferences[conferences.length - 1].getKey();
}
//... some last data
double marksMedium(String[] s) {
int res = 0;
for (int i = 0; i < s.length; i++)
res += marks.get(s[i]);
return (double) res/s.length;
}
//... some medium functions
//... some group of functions
//... some other groups
}
Я хочу сделать что-то вроде этого
class Student{
protected String name;
protected int courseNumber;
protected TreeMap<String, Integer> marks;
protected double successRate;
protected Pair<String, Integer>[] conferences; //name, place
void setName(String name) { this.name = name; }
//... setters
String getName() { return name; }
//... getters
//...constructors
}
class StudentComparator{
int getHashCode() {
int res = 0;
//...
return res;
}
boolean less (Student b) {
boolean ls = false;
//...
return ls;
}
//... functions to compare objects
}
class LastStudentInfoGetter{
String lastConferenceName() {
return conferences[conferences.length - 1].getKey();
}
//... some last data
}
class StudentMediumGetter{
double marksMedium(String[] s) {
int res = 0;
for (int i = 0; i < s.length; i++)
res += marks.get(s[i]);
return (double) res/s.length;
}
//... some medium functions
}
class SomeStudentFunctions{
//... some group of functions
}
///... SomeOtherClasses
Было бы лучше, если эти классы не используют сеттер и добытчик
Обновление
Например, у меня есть этот класс
class Handler{
void handle(){
Student s = new Student();
///////........
System.out.println(s.lastConferenceName());
System.out.println(s.getHashCode());
}
}
И я хочу ручку() (или что-то подобное), чтобы работать после трансформации
Обратите внимание, что lastConferenceName() и GetHashCode() находятся в разных группах
Вы можете установить интерфейсы с этими методами, а затем выполнить «Студент». – markspace
Я хочу, чтобы класс учеников был меньше. Я не хочу реализовывать все методы в классе Student – PolyProgrammist
Если вы хотите получить к ним доступ, вы сделаете свою область доступа защищенной или общедоступной. Я добавлю код .. –