面向对象的一点小的收获

来源:互联网 发布:淘宝网如何投诉物流 编辑:程序博客网 时间:2024/05/17 03:25

学习JAVA已有一月,对于一个新手来讲,面向对象是一个门槛,如何更好地学好面向对象的内容?

一般编写小的项目时,一般定义一个管理类,一个数据类,一个测试类和一个属性类。管理类中存放各种方法,初始化工作留给数据类,在测试类中调用方法。

public class Data {
private List<Student> stus=new ArrayList<Student>();//定义一个属性设置为私有

public Data(){//每当调用构造函数时实现数据的传值初始化工作。
initial();
}

public List<Student> getStus() {//获取LIst类型的数据,后面会有调用到的。
return stus;
}
public void setStus(List<Student> stus) {
this.stus = stus;
}

public void initial(){//编写的初始化方法,为构造函数所调用。
stus.add(new Student("Tom",18,100,"class05"));
stus.add(new Student("Jerry", 22, 70, "class04"));
stus.add(new Student("Owen", 25, 90, "class05"));
stus.add(new Student("Jim", 30,80 , "class05"));
stus.add(new Student("Steve", 28, 66, "class06"));
stus.add(new Student("Kevin", 24, 100, "class04"));


}
}

在属性类中定义各种属性,应该定义为私有的,并且提供set和Get共有的方法来访问这些属性,可以通过类的对象来访问。构造方法也要写上。

public class Student {
private String name;
private int age;
private double score;
private String classNum;
public Student(){

}
public Student(String name, int age, double score, String classNum){
this.name = name;
this.age = age;
this.score = score;
this.classNum = classNum;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}


}

在各种方法的类中,最重要的就是各种转化和调用了,不会调用类中的属性应当注意

public class StudentService {
private Data data;//此处是先将Data类在本类中成为一个属性,以便后续能够调用得到其中的数据
public StudentService(Data data){
this.data = data;//1234
}
public int getStuAvgAge(){
int sum = 0;
List<Student> stus = data.getStus();//此处是通过Data的属性来获取Data类中的Get方法来得到所有的信息。并将其定义为List类型的。然后stus就可以调用相关类型的数据了。
for(int i=0;i<stus.size();i++){
Student s = stus.get(i);//通过LIst的get方法获取数据传值给Student类的对象s。
sum += s.getAge();
}
return sum/stus.size();
}


public double[] getClassAvgScore(){
//1. 遍历集合获取对应的班级成绩的平局分
//定义各个班的总成绩
double sum04 = 0.0;
double sum05 = 0.0;
double sum06 = 0.0;
//定义各个班级的人数
int num04 = 0;
int num05 = 0;
int num06 = 0;
List<Student> stus = data.getStus();
for(int i=0;i<stus.size();i++){
Student s = stus.get(i);
String num = s.getClassNum();
if("class04".equals(num)){
num04++;
sum04 += s.getScore();
}else if("class05".equals(num)){
num05++;
sum05 += s.getScore();
}else{
num06++;
sum06 += s.getScore();
}
}
//获取各个班级的平局成绩并返回
double[] scores = new double[]{sum04/num04,sum05/num05,sum06/num06};
return scores;
}

public static void main(String[] args) {
// TODO Auto-generated method stub


}

public class Test {
    


public static void main(String[] args) {
Data data = new Data();
StudentService ss = new StudentService(data);
int avgAge = ss.getStuAvgAge();
System.out.println("平局年龄:"+avgAge);
double[] scores = ss.getClassAvgScore();
System.out.println("平局成绩如下");
for(double s : scores){
System.out.println(s+"分");
}
}以上是测试类,各种实例化,用对象即可调用方法求值了。

0 0
原创粉丝点击