Java教程

第三周-自主学习任务-面向对象基础与类的识别

本文主要是介绍第三周-自主学习任务-面向对象基础与类的识别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 学习目标
  • 学习任务
  • 问题列表
    • static问题
    • 购物车案例中的类、方法、属性
    • 项目管理代码
    • 阿里巴巴Java开发手册编程规范
      • 命名规范
      • 代码格式
      • OOP规范

学习目标

1.重点:掌握pivate、public关键字的用途及其与setter/getter模式和封装性之间的关系。
2.理解static属性与static方法的用途。
3.掌握使用初始化块初始类的方法。掌握初始化块与静态初始化块的区别。
4.掌握使用我package管理类。
5.重点:学会识别问题中的类并定义解决问题所需要的类。
6.初步了解Java编程规范。

学习任务

1.观看Java线上课程

  • 视频:3.3-3.7.
  • 重点观看:3.3、3.4、3.7(面向对象-类的设计).

2.重点:结合视频与预习课件以博客或者帖子的形式完成如下"问题列表",需提交。本次作业基础分1分,最高3分。

3.尝试完成PTA题集:

  • 编程题:3.1 构造方法与toString,3.2 构造方法与初始化块,3.3 形状。提前完成这3题的同学,实验课上检查后加分。
  • 程序填空题:b3.1
  • 阅读:阿里巴巴Java开发手册 终极版(1.3.0)》中的1.1-1.4.

问题列表

static问题

1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?

  • 当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static
  • 这个静态成员被该类所有的对象所共享
  • 用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用
  • 如果一个成员没用static关键字,那么这个成员是属于对象的,每一个对象都会有一个自己的这个成员
  • 不应该,因为一个学校的学生,姓名属性是不同的

购物车案例中的类、方法、属性

2.购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?

  • 首先要了解系统,用一段文字描述即将要设计的系统及其功能,然后将其中的名词和动词找出来
  • 对于名词,可以考虑是否创建相应的类,或者是某个类的属性
  • 对于动词,分析是否可以当作方法,可以当作哪一个类中的方法
  • 对于购物车来说,具有名称,价格等属性,具有把商品放入购物车,增加或减少商品数量等方法,可分为购物车,商品条目等分析

项目管理代码

3.一个项目中有很多类。项目中要怎么管理这些代码呢?

  • 使用包管理类,包机制可以将一组相关的类,接口组织起来,提供访问控制,命名空间管理功能
  • Java类库中有很多包,不同的包包含不同功能的类
  • 在不同的包中放置不同的类,把不同的类放入相对应的包中

阿里巴巴Java开发手册编程规范

4.阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。

命名规范

  • 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束
  • 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式,要求使用正确的英文拼写和语法
  • 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO
  • 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式
  • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
  • 抽象类命名使用 Abstract 或 Base 开头
  • 异常类命名使用 Exception 结尾;
  • 测试类命名以它要测试的类的名称开始,以 Test 结尾
  • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
  • 接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释

代码格式

  • 大括号的使用约定
    • 如果是大括号内为空,则简洁地写成{}即可,不需要换行
    • 如果是非空代码块则:
      • 左大括号前不换行。
      • 左大括号后换行。
      • 右大括号前换行。
      • 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
  • 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格
  • if/for/while/switch/do 等保留字与括号之间都必须加空格
  • 任何二目、三目运算符的左右两边都需要加一个空格


  • 换行原则
    • 单行字符数限制不超过 120 个,超出需要换行
    • 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进
    • 运算符与下文一起换行。
    • 方法调用的点符号与下文一起换行。
    • 方法调用时,多个参数,需要换行时,在逗号后进行。
    • 在括号前不要换行
    • 方法参数在定义和传入时,多个参数逗号后边必须加空格

OOP规范

  • 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可
  • 所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较
  • 定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值
  • 循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展
这篇关于第三周-自主学习任务-面向对象基础与类的识别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!