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

测试下效果
一般来说分析面向对象程序的步骤:
1、可以画一些类的草图
2、之后定义每个类中的属性,属性定义完之后必须封装
3、封装的属性如果需要被外部所访问,则肯定必须写setter和getter
4、如果需要在对象实例化时可以为其属性赋初始值,则可以加入构造方法,如果有必要则可以加入多个构造(一个是无参的,其他的是有参的)
5、为类中添加程序所必须的方法
6、进行测试
记住:
开发中main 方法就是一个测试端,只在里面写少量的代码即可,不可多写,也可以把main 方法称为客户端。

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

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

  1. 零基础是学java还是python-零基础学编程java和python哪个好

    零基础学编程java和python哪个好 更新时间:2019年02月17日18时56分 来源:传智播客java培训 浏览次数: 如今人工智能行业的蓬勃发展让很多想要学习编程的人会犹豫Java和Pyth ...

  2. 零基础学 Python 爬虫(13):urllib 基础使用(三)

    人生苦短,我用 Python 引言 前面两篇基础,我们介绍请求发送的过程. 不知道各位同学有没有想过这样一个问题,如果在爬虫运行的过程中,网络突然波动了下,比如突然网速很慢很慢,造成当前的请求超时,程 ...

  3. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  4. 零基础学ui设计教学教你从0基础建立设计规范

    从一开始的立项到现在落地上线,可以说是从零开始进行APP全部细节的梳理并且规定规范,这一路走过来还是能总结出很多心得,本文将分为3个部分,阐述如何从0到1建立设计规范. 目录: 一.如何确定内容,规范 ...

  5. 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...

    很多朋友想学一门编程语言,尤其是大学生经常私信问我现在学习Python好还是C/C++比较好.这里简单给一些我个人的看法,当然我现在已经不写代码了,所以我的建议仅仅是应用方面的参考,希望可以抛砖引玉, ...

  6. 0基础学Python第四天:Python3的基础语法

    文章目录 目录 文章目录 前言 一.Python3基础语法 二.编码 三.标识符 四.Python保留字 五.注释 六.行和缩进 七.多行语句 八.数字类型 九:字符串 十.空行 十一.同一行显示多条 ...

  7. 学计算机应用基础学到了什么,2021年学习计算机应用基础心得体会-得范文网

    计算机,即电脑,随着科学技术的发展,不断进行着更新发展.伴随着计算机走入人类生活,它已成为人们日常生活必不可少的一部分,甚至成为当下许多人工作生活依赖的工具,并衍生了一些与计算机有关的职业,如电脑工程 ...

  8. 零基础学软件测试有前途吗?

    随着软件工程活动的不断演化,测试工作某种程度上是可以很大幅度提高软件的产品质量以及提升用户的使用满意度,因此软件测试工程师的地位在企业中也越来越受到重视.不少零基础学IT的朋友也开始把软件测试作为一个 ...

  9. 零基础学stm32要多久?stm32应该怎么学?

    STM32由于资料丰富.稳定.性价比高深得广大工程师和企业的喜爱. 现在随便在招聘平台上搜索单片机开发或者嵌入式开发,基本都要求会STM32. 我用STM32也有很多年了,基本上是围绕着F103.F0 ...

最新文章

  1. CAPSNET:具有自我注意路由的胶囊网络
  2. Delphi Form Designer (窗体设计器)之四
  3. c+还是python好-既然C+不如Java、Python,为什么还要学C+?
  4. 计算机与程序设计语言教案,计算机程序设计(c语言)教案
  5. 10分钟看懂, Java NIO 底层原理
  6. nginx做grpc负载均衡时长连接或者短连接
  7. 给数组添加自定义方法
  8. Cloud for Customer的work center显示逻辑
  9. python特殊函数__str__、__repr__和__len__
  10. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
  11. python几种括号表示的类型
  12. 【2019杭电多校第九场1002=HDU6681】Rikka with Cake(离散化+树状数组+思维)
  13. SAS安装后无法使用增强型编辑器问题解决方法
  14. 深度学习小白入门教程(一):以英雄联盟为例,爬取你感兴趣图片,构建你自己的数据集
  15. Python OpenSSL基本操作接口
  16. [解疑][TI]TI毫米波雷达系列(一):Texas Instruments德州仪器 相关软件安装及使用时问题汇总,持续更新......
  17. SDI、PDI、UART,I2C,SPI 接口总结
  18. python中pop什么意思
  19. 第二代计算机主要应用领域转为____.,计算机应用基础知识2解答.doc
  20. 音视频开发之旅(58) -H.264 帧内预测

热门文章

  1. static关键字的作用?
  2. javascript中的事件问题的总结
  3. MySQL · 捉虫动态 · event_scheduler 慢日志记错
  4. android ListView包含Checkbox滑动时状态改变
  5. 最短路径问题 java实现 源代码
  6. 运行从别处复制过来的linux可执行程序
  7. c++返回值 注意事项
  8. Flex警告:framework.swc”具有默认样式并且在 library-path 中,表...
  9. IOS上路_07-简单示例-电子书
  10. winphone8 模拟器设置(新)