【无标题】

第三周预习 面对对象入门2与类的的识别

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

1.标题应该使用static修饰的方法:

  • 工具方法:
如果一个方法不依赖于对象的状态,其目的是执行一个操作,那么它可以被声明为static。例如,数学计算、字符串操作等。
  • 工厂方法:
用于创建对象实例的方法,尤其是当这些方法不需要访问类的非静态成员时。
  • 常量访问器:
如果一个方法只是用来返回一个静态常量,那么这个方法应该被声明为static。
不需要访问实例变量的方法:如果一个方法在其定义和实现中不需要访问任何非静态成员,则它应该被声明为static。

2.不使用static修饰的方法特性:

  • 依赖于对象状态:
这些方法通常需要访问或修改对象的实例变量。
  • 每个对象都有自己的方法行为:
非静态方法可以被子类覆盖,以提供不同的实现。
  • 需要通过对象实例调用:
非静态方法必须通过类的实例来调用。

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

1. 步骤与方法:

1.识别名词:

在问题描述中,名词通常代表可能的类或者属性。例如,在购物车案例中,“商品”、“用户”、“订单”等都是潜在的类。

识别动词和动词短语:

动词和动词短语通常代表类可能执行的动作,即方法。例如,“添加商品到购物车”、“移除商品”、“结算”等都是方法。

确定关联:

分析名词之间的关系,确定类之间的关联。关联可以是“一对一”、“一对多”、“多对多”等。

确定属性:
、```
分析名词的特性,确定类的属性。例如,“商品”可能有“名称”、“价格”、“库存数量”等属性。

确定方法:

分析动词和动词短语,确定类的方法。同时,考虑这些方法是否需要访问类的属性,或者是否应该被声明为静态的。

## 2.判定方法与属性属于哪个类:
属性归属:

属性通常属于那个描述其特性的类。例如,“商品名称”和“商品价格”是“商品”类的属性。

方法归属:
```方法通常属于执行该动作的类。例如,“添加商品到购物车”是“购物车”类的方法,因为这是购物车的行为。

2.以下是一些判定方法:

  • 封装性:
一个方法或属性应该封装在它所描述的那个类中。如果某个方法或属性与类的其他部分紧密相关,那么它应该属于这个类。
  • 单一职责原则:
一个类应该只有一个引起变化的原因。如果一个方法或属性与类的其他部分不相关,可能需要重新考虑它的位置。
  • 高内聚性:
一个类内的方法和属性应该高度相关,共同实现类的职责。

3.例子:

假设我们有以下购物车问题描述:

用户可以将商品添加到购物车。
用户可以从购物车中移除商品。
用户可以查看购物车中的商品列表。
用户可以结算购物车中的商品。

根据上述步骤,我们可以得到以下类、方法和属性:

  • 类:
User
Product
ShoppingCart
Order
  • 属性:
User 类可能包含 username, email 等属性。
Product 类可能包含 name, price, stock 等属性。
ShoppingCart 类可能包含 items(一个包含商品的列表)属性。
  • 方法:
ShoppingCart 类可能包含 addItem(Product product), removeItem(Product product), getList(), checkout() 等方法。

三、一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。

1.避免类名冲突:

使用包(Packages):

在Java中,包是组织类的一种方式。通过将类放在不同的包中,可以避免类名冲突。例如,如果你的公司名为MyCompany,项目名为MyProject,则可以使用com.mycompany.myproject作为包名。

遵循命名约定:

为类名使用有意义的、描述性的命名,并且遵循项目的命名约定。这有助于减少与外部类名冲突的可能性。

使用模块化:

如果使用的是支持模块化的语言(如Java 9+),可以通过模块化来组织代码,这样不同模块中的类即使同名也不会冲突。

2.管理项目中的类:

  • 分层架构:
将项目分为多个层次,例如表示层、业务逻辑层和数据访问层。这样可以按照功能模块来组织类。
  • 代码组织:
使用子包来进一步组织类。例如,在com.mycompany.myproject包下,可以有model、service、dao、controller等子包。
  • 代码规范:
制定并遵循代码规范,包括命名约定、代码格式、注释要求等。
  • 使用IDE功能:
现代IDE(如IntelliJ IDEA、Eclipse)提供了代码重构、自动导入和管理依赖等功能,可以帮助管理代码。
  • 文档和注释:
为每个类和重要的方法编写文档和注释,这样其他开发者更容易理解代码结构和功能。
  • 举例说明:
    假设我们正在开发一个在线书店项目,以下是如何组织和管理代码的例子:

  • 包结构:

com.mycompany.bookstore
│
├── model
│   ├── Book.java
│   ├── User.java
│   └── ShoppingCart.java
│
├── service
│   ├── BookService.java
│   ├── UserService.java
│   └── ShoppingCartService.java
│
├── dao
│   ├── BookDao.java
│   ├── UserDao.java
│   └── ShoppingCartDao.java
│
├── controller
│   ├── BookController.java
│   ├── UserController.java
│   └── ShoppingCartController.java
│
└── util
    ├── DatabaseUtil.java
    └── SecurityUtil.java

在这个例子中:

model 包包含了代表项目实体的类,如 Book、User 和 ShoppingCart。
service 包包含了业务逻辑的类,如 BookService、UserService 和 ShoppingCartService。
dao 包包含了与数据库交互的类,如 BookDao、UserDao 和 ShoppingCartDao。
controller 包包含了处理用户请求的类,如 BookController、UserController 和 ShoppingCartController。
util 包包含了项目中的通用工具类,如 DatabaseUtil 和 SecurityUtil。

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

  • 变量命名:
    【强制】变量命名应使用驼峰命名法,第一个单词的首字母小写,后续单词的首字母大写。尽量做到见名知意,避免使用缩写,除非是一些公认的缩写,如maxSize。
  • 类命名:
    【强制】类名使用大驼峰命名法,首字母大写,后续单词的首字母也大写。类名通常是名词或名词短语,例如UserDao、HttpClient。
  • 方法命名:
    【强制】方法名使用小驼峰命名法,第一个单词的首字母小写,后续单词的首字母大写。方法名通常是动词或动词短语,如sendMessage、getUserById。
  • 常量命名:
    【强制】常量名全部大写,单词之间用下划线分隔。例如:MAX_SIZE、DEFAULT_TIMEOUT。
  • 包命名:
    【强制】包名统一使用小写字母,点分隔符之间有且仅有一个自然语义的英语单词。包名通常是顶级域名加公司名加项目名,如com.alibaba.fastjson。
  • 代码格式:
    【推荐】左大括号 { 不单独占一行,与其前面的代码在同一行;右大括号 } 后面必须换行。
  • OOP规约:
    【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值