第03周 预习、实验与作业:面向对象入门2与类的识别
1.3 课前问题列表
1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特点?Student的getName应该用static修饰吗?
适合用static修饰的方法:工具类中的通用方法(如Math.random())、工厂方法(用于创建对象)、类的静态初始化相关方法等,这类方法不需要依赖对象的实例状态,属于类级别的操作。
不用static修饰的方法(实例方法)特点:需要访问或操作对象的实例属性(如对象的name、age等),依赖于具体的对象实例,不同对象调用该方法可能有不同结果。
Student的getName不应该用static修饰,因为getName是获取某个学生对象的名字,不同学生对象有不同的名字,需要依赖具体的Student实例,属于实例级别的操作。
2.购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?
提取方法:采用面向对象的分析方法,从问题描述中识别出参与的实体(即类,如 “商品”“购物车”“用户” 等),然后分析每个实体的特征(即属性,如商品的id、name、price等)和行为(即方法,如购物车的addItem、removeItem、calculateTotal等)。
判定归属:属性和方法属于哪个类,要看它们是描述或作用于哪个实体的。比如 “添加商品到购物车” 这个行为,是购物车的行为,所以addItem方法属于ShoppingCart类;商品的价格是商品的特征,所以price属性属于Product类。
3.一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。
避免同名:使用包(package)机制,将不同功能或模块的类放在不同的包下。例如,自己项目中的com.mycompany.order.Order类和别人项目中的com.othercompany.Order类,由于包名不同,即使类名相同也不会冲突。
管理代码:通过包来组织类,不同的包对应不同的功能模块(如com.mycompany.entity放实体类,com.mycompany.service放业务逻辑类,com.mycompany.dao放数据访问类等)。同时,遵循命名规范,让类名能清晰体现其功能或所代表的实体,方便查找和管理。
4.阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约
变量命名:使用小驼峰命名法,如userName;成员变量尽量避免使用单字符(如i、j除外在循环中);POJO类中布尔类型变量不要加is前缀(数据库字段除外)。
类命名:使用大驼峰命名法,如UserService;抽象类命名使用Abstract开头(如AbstractUser);异常类命名使用Exception结尾(如UserNotFoundException)。
方法命名:使用小驼峰命名法,动词在前,如getUserName、addProduct;查询单个对象的方法用get开头,查询多个对象的方法用list开头,插入方法用save(或insert)开头,删除方法用remove(或delete)开头。
常量命名:全部大写,单词间用下划线分隔,如MAX_STUDENT_COUNT。
包命名:使用小写字母,多级包用点分隔,且一般以公司域名倒置开头,再结合模块名,如com.alibaba.dubbo.config。
代码格式:缩进使用 4 个空格;行宽不超过 120 个字符;方法体内的代码块如果为空,要写成{}而不是{}(即一对大括号占一行);不同逻辑块之间用空行分隔。
OOP规约:类成员按public static final(常量)、private static(静态变量)、private(实例变量)顺序排列;重写方法时,@Override注解必须加上;工具类(只有静态方法的类)要私有构造方法,防止被实例化。

浙公网安备 33010602011771号