[零基础学JAVA]Java SE面向对象部分-10.面向对象基础(05)

简介:
上季内容回顾: 
1、类和对象 
2、引用的内存分配 
3、封装性 
4、构造方法 
5、String类 
6、this关键字
在编写代码之前建立好应该具备的类,之后再为类添加一些属性,属性都是需要被封装的,封装之后必须写setter和getter方法才可以访问属性,如果有需要则可以加入构造方法设置属性。
本季主要知识点:
1、 题目讲解 
2、 如何去分析题目
本次课程是习题课程,将之前所学到的各种知识综合应用在题目之中, 并进行综合讲解,在讲解的时候为读者提供了解决问题的基本思路。
image
分析下这个题目哈~
我们最好先画下类图
类名
属性
方法
属性的表示: 
权限 属性名称:类型 
-name:String ==>  private String name ;
方法的表示: 
权限 方法名称(参数名称:参数类型,参数名称:参数类型):返回值类型 
+setName(name:String):void ==>  public void setName(String name)
用手工画类图会非常麻烦哈,我们可以使用jude这样的工具。
JUDE(Java and UML Developers Environment) 1.2.1
image
在这里,我们新建三个类:Student,Class_,Out
image
类我们定义好了后,我们再来定义下类滴属性哈,先Student类定义name、age、score属性。
image
属性定义后我们就定义其setter和getter方法并设置其参数。
image
依此类推
image
然后是班级Class类定义name、de.ion两个属性。
image
同样设置其setter和getter方法并设置参数。
image
最后是输出类Out,这个非常简单,只要定义一个print方法就可以了。
image
最后一张完整的类图就出来了哈~
image
在这个工具中,可以根据图形生成代码,我们看下面哈~
选择文件----导出Java
image
选择存放的路径
image
image
image
现在目录中就生成了这三个类文件
image
我们把它们合并到一个文件中,这样直观一点哈~
image
验证下效果哈~
image
修改代码为其加入构造方法
class Student { 
   private String name; 
   private  int age; 
   private  float score; 
   //修改程序,加入一个构造 
   public Student(){} 
   public Student(String name, int age, float score){ 
     this.setName(name) ; 
     this.setAge(age) ; 
     this.setScore(score) ; 
  } 
   public  void setName(String name) { 
     this.name = name ; 
  } 
   public String getName() { 
     return  this.name ; 
  } 
   public  void setAge( int age) { 
     this.age = age ; 
  } 
   public  int getAge() { 
     return  this.age ; 
  } 
   public  void setScore( float score) { 
     this.score = score ; 
  } 
   public  float getScore() { 
     return  this.score ; 
  } 

class Class_ { 
   private String name; 
   private String de.ion; 
   public Class_(){} 
   public Class_(String name,String de.ion){ 
     this.setName(name) ; 
     this.setDe.ion(de.ion) ; 
  } 
   public  void setName(String name) { 
     this.name = name ; 
  } 
   public String getName() { 
     return  this.name ; 
  } 
   public  void setDe.ion(String de.ion) { 
     this.de.ion = de.ion ; 
  } 
   public String getDe.ion() { 
     return  this.de.ion ; 
  } 

class Out { 
   public  void print(Student stu, Class_ cla) { 
    System.out.println( "学生姓名:"+stu.getName()) ; 
    System.out.println( "学生年龄:"+stu.getAge()) ; 
    System.out.println( "学生成绩:"+stu.getScore()) ; 
    System.out.println( "班级名称:"+cla.getName()) ; 
    System.out.println( "班级描述:"+cla.getDe.ion()) ; 
  } 

public  class Demo02 

   public  static  void main(String args[]){ 
    Student s =  new Student() ; 
    s.setName( "王乾") ; 
    s.setAge(27) ; 
    s.setScore(99.9f) ; 
    Class_ c =  new Class_() ; 
    c.setName( "JAVA强化班") ; 
    c.setDe.ion( "学习JAVA技术强化班") ; 
     new Out().print(s,c) ; 
  } 
}
 
加入构造方法后效果怎么样呢?验证一下哈~
image
程序我们已经修改了,我们可以将程序代码导入到工具之中,自动生成类图。
首先我们新建一个文件
image
然后选择导入Java
image
找到Java程序的路径
image
单击start
image
image
image
如果属性是两个单词的,则第一个单词的首字母小写,之后每个单词的首字母大写。
/* 
1、定义好要使用的类 
2、定义好类中的属性 
3、为属性封装 
4、为封装后的属性设置setter和getter方法 
5、如果需要可以为类中添加构造方法 
6、为类中添加所需要的其他方法 
*/
 
class Student 

   //学生编号 
   private String stuno ; 
   //学生姓名 
   private String name ; 
   //数学成绩 
   private  float mathScore ; 
   //英语成绩 
   private  float englishScore ; 
   //计算机成绩 
   private  float computerScore ; 

   public Student(){} 
   public Student(String stuno,String name, float mathScore, float englishScore, float computerScore){ 
          this.setStuno(stuno) ; 
     this.setName(name) ; 
     this.setMathScore(mathScore) ; 
     this.setEnglishScore(englishScore) ; 
     this.setComputerScore(computerScore) ; 
  } 

   public  void setStuno(String stuno){ 
     this.stuno = stuno ; 
  } 
   public  void setName(String name){ 
     this.name = name ; 
  } 
   public  void setMathScore( float mathScore) 
  { 
     this.mathScore = mathScore ; 
  } 
   public  void setEnglishScore( float englishScore) 
  { 
     this.englishScore = englishScore ; 
  } 
   public  void setComputerScore( float computerScore) 
  { 
     this.computerScore = computerScore ; 
  } 
   public String getStuno(){ 
     return  this.stuno ; 
  } 
   public String getName(){ 
          return  this.name ; 
  } 
   public  float getMathScore(){ 
          return  this.mathScore ; 
  } 
   public  float getEnglishScore(){ 
          return  this.englishScore ; 
  } 
   public  float getComputerScore(){ 
          return  this.computerScore ; 
  } 
   //添加所需要的其他方法 
   // 在编写类的时候一定要记住一个原则:任何的输出绝对不能在类中完成 
   // 所有要输出的内容在类中只是把值返回来,交给调用处输出 
   // 取得全部成绩的总和 
   public  float getSum(){ 
          return  this.mathScore+ this.englishScore+ this.computerScore ; 
  } 
   //取得平均成绩 
   public  float getAvg(){ 
          return  this.getSum() / 3 ; 
  } 
   //取最高的成绩 
   public  float getMax(){ 
          //三个成绩相比 
     float max = 0.0f ; 
     if ( this.mathScore> this.englishScore) 
    { 
      max =  this.mathScore ; 
    } 
     else 
    { 
      max =  this.englishScore ; 
    } 
     if (max< this.computerScore) 
    { 
      max =  this.computerScore ; 
    } 
     return max ; 
  } 
   //取最低的成绩 
   public  float getMin(){ 
          //三个成绩相比 
     float min = 0.0f ; 
     if ( this.mathScore> this.englishScore) 
    { 
      min =  this.englishScore ; 
    } 
     else 
    { 
      min =  this.mathScore ; 
    } 
     if (min> this.computerScore) 
    { 
      min =  this.computerScore ; 
    } 
     return min ; 
  } 

public  class Demo03{ 
   public  static  void main(String args[]){ 
    Student s =  new Student() ; 
    s.setStuno( "s01") ; 
    s.setName( "王乾") ; 
    s.setMathScore(89.8f) ; 
    s.setEnglishScore(99.0f) ; 
    s.setComputerScore(88.8f) ; 
    System.out.println(s.getName()+ "的成绩单("+s.getStuno()+ "):") ; 
    System.out.println( "\t|- 总成绩:"+s.getSum()) ; 
    System.out.println( "\t|- 平均成绩:"+s.getAvg()) ; 
    System.out.println( "\t|- 最高成绩:"+s.getMax()) ; 
    System.out.println( "\t|- 最低成绩:"+s.getMin()) ; 
  } 
};
 
测试下效果
image
一般来说分析面向对象程序的步骤: 
1、可以画一些类的草图 
2、之后定义每个类中的属性,属性定义完之后必须封装 
3、封装的属性如果需要被外部所访问,则肯定必须写setter和getter 
4、如果需要在对象实例化时可以为其属性赋初始值,则可以加入构造方法,如果有必要则可以加入多个构造(一个是无参的,其他的是有参的) 
5、为类中添加程序所必须的方法 
6、进行测试
记住: 
开发中main 方法就是一个测试端,只在里面写少量的代码即可,不可多写,也可以把main 方法称为客户端。

总结 
通过这一季的习题练习哈,我们一定要培养面向对象的解决的思路起来哈~~~
#########################################################################






本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/123947 ,如需转载请自行联系原作者
相关文章
|
21天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
1天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
5 0
|
7天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
10天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
13天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
46 0
对象的交响曲:深入理解Java面向对象的绝妙之处
|
24天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
24 4
|
1月前
|
算法 IDE Java
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
【软件设计师备考 专题 】面向对象程序设计语言:C++、Java、Visual Basic和Visual C++
41 0
|
1月前
|
Java
java面向对象高级分层实例_测试类(main方法所在的类)
java面向对象高级分层实例_测试类(main方法所在的类)
10 1
|
1月前
|
Java 数据库
java面向对象高级分层实例_数据库操作类
java面向对象高级分层实例_数据库操作类
11 1