根据面向对象的思想,我们在这里通过一个普通的Java类来为笔记定义数据模型。
1. 确定模型类包含哪些属性的思路
思路:应当考虑一个“笔记”对象中,它的哪些组成要素是我们当前感兴趣的,并且适度考虑扩展性。
根据“全部笔记”页面的设计,将在列表视图中显示笔记条目。每个笔记条目即对应一篇笔记。笔记条目中显示的内容包括:
- 笔记标题(title)
- 笔记正文(content)
-
笔记的创建时间(create-time)
无疑,我们创建的笔记类中至少需要包含这三方面属性。
再考虑一点——笔记与笔记之间如何区分?我们可以为每篇笔记设置一个独一无二的标识符(id),这样就可以通过这个标识符来唯一确定一篇笔记。
所以我们将笔记类命名为Note,包含上述4个属性,简单的类图如下:
2. 创建Note类
在项目中创建一个类难度不大,但是有一些要领要注意:
- 通过不同的包(package)来区分职能不同的类,从而使程序模块划分清晰易懂。可以将描述笔记、笔记本这类逻辑实体的类全都放到一个单独的包下。
- 善用Android Studio开发环境提供的便利操作,以减少纯手工书写代码中可能带来的错误。
首先,我们在项目视图中的包名上点击右键,选择“New->package”,系统弹出以下对话框,填写包名“model”:
点击“OK”后,可以发现在原包名之下已经创建了子包“model”。继续选取该子包,右键选择“New->Java Class”,在弹出的对话框中填写类名“Note”:
点击“OK”,则可以看到Android Studio自动在model包下创建了Note.java文件。
3. 为Note类增加属性
编辑Note类,为其添加4个属性,注意类型要适当。为每个属性增加注释进行说明是好习惯,例如:
/**
* 笔记唯一标识
*/
private long id;
/**
* 笔记标题
*/
private String title;
/**
* 笔记正文
*/
private String content;
/**
* 笔记创建时间
*/
private long createTime;
4. 为Note类增加构造方法和访问方法
-
构造方法:我们创建一个对4个属性进行初始化的构造方法。当然可以让Android Studio替我们完成:
将光标定位在已经添加的属性代码下方空白处,点击“Code”菜单,选择“Generate...”,将弹出如下菜单:
选择“Constructor”,在弹出的对话框中将全部属性选中:
点击“OK”后查看代码,构造方法已自动生成:
public Note(long id, String title, String content, long createTime) {
this.id = id;
this.title = title;
this.content = content;
this.createTime = createTime;
}
- 属性访问方法:即常见的getXxx()和setXxx()方法。方法与创建构造方法类似,只是在弹出菜单中选择“Getter and Setter”,可以看到下面的对话框,同样全选所有属性并确认:
到此为止,我们只是通过一系列设置操作,再加上编写少量代码,即创建好了Note类,并为其添加了属性、构造方法和属性访问方法:
package com.jing.app.sn.model;
/**
* Created by jing on 2018/3/3.
*/
public class Note {
/**
* 笔记唯一标识
*/
private long id;
/**
* 笔记标题
*/
private String title;
/**
* 笔记正文
*/
private String content;
/**
* 笔记创建时间
*/
private long createTime;
public Note(long id, String title, String content, long createTime) {
this.id = id;
this.title = title;
this.content = content;
this.createTime = createTime;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
}