第二单元 Part1 类的设计和编写
特别提醒
- 软件开发:先思考设计,在开发(写代码)
问题:上来就写代码,调试,改代码。
- 软件开发的流程是什么?
- 招投标-签合同-建立项目组-需求调研与分析(需求分析工程师/需求管理工程师)-数据库设计(DBA数据库管理员)-架构设计(架构师)-详细设计(系统分析师)-编码(开发)(研发工程师)-测试(测试工程师)-部署实施(实施工程师)-甲方验收-维护(技术支持工程师)
一、如何设计类
-
1.用什么工具设计?
- 答:UML工具:Enterprise Architecture、VP、Rational Rose、StarUML、Word、VISIO、PowerDesigner、Eclipse中的Green插件等等。
-
2.谁来设计类?
- 系统分析师、系统分析员:软考(中级)
动手任务1. 设计类
-
1.面向的编程主线(步骤)
- 写类-创建对象-对象调用方法
-
2.什么是类?
- 类就是类型的简称;类是抽象的,不具体、不明确;同类事物的概括。
-
3.什么是对象?
- 具体物件就是对象,万物皆对象。对象是具体的、明确的。
- 在编程时,要和日常生活结合来理解。
- 实际办事情,是对象办,还是类办? 答:对象。
-
4.类和对象的区别:
- 类是抽象的,对象是具体的。
- 类是对同一类型对象共同特征的概括(抽象)。
-
5.设计类
- 设计教务系统中的学生类。
- 类里的属性:Attributes,名词性质。
- 类里的操作:Operations,方法,动词性质。
方法形参等是什么有程序员定,只要符合需求就可以。我们在编程序,不是程序编我。
-
6.在Eclipse中写这个类Student
- 写Student类,加上标准注释
-
7.在Eclipse中设置新建class快捷键(新建包的方法类似:Ctrl + shift + p)
步骤: window-preferences-搜索keys-点key一下,输入new class-在下边输入Ctrl+shift+N-点应用并关闭,In window:在窗口中起作用。
动手任务2: 带包的类
-
1.为什么用包?
- 防止类名冲突,一人一个包,包名不同,就能区分类。
-
2.包怎么命名?
- 全小写,域名倒写,一般的规则:域名倒写.系统代号.模块名称
-
3.Student类名
-
4.全限定的类名:com.ychs.corejava.unit2.Student
动手任务3:生成JavaDoc文档
- 注意输入编码和字符集参数
动手任务4:如何使用
-
1.API文档:(https://docs.oracle.com/javase/8/docs/api/?java/lang/NullPointerException.html)
-
2.软件=程序+数据+文档+服务
-
3.Application Programming Interface,应用程序接口
-
4.java.lang Java语言的核心包,这个包不需要导入
-
5.java.io
-
6.java.util
-
7.java.sql
-
8.java.lang.reflect
-
9.java开头的包 :java的基础包
-
10.javax开头的:扩展包
-
11.org开头的:第三方包
-
12.com开头的:自定义包
-
13.如何导入包?import;快捷键Ctrl shift O/M(import java.lang.* 表示的是导入java.lang包包含的所有包。)
-
14.在Java中不支持嵌套导入
导入包的次序:基础包、扩展包、第三方包、自定义包
动手任务5:看API源码
-
能找到API源码位置:jdk目录下有一个src压缩包,这个就是所有API的源码
-
在Eclipse中点击查看源码:按住Ctrl键点想看源码的类:跳转到这个类的源码。
二、口述面试题
-
1.什么是OOP?
- OOP:Object Oriented Programming,面向对象编程,一种编程方式,也是一种编程思想
- 编程方式有哪些?
- 面向过程编程:c
- 面向对象编程:Java、C++、C#、Python
- 面向组件编程。
- 面向服务编程:前端后端分离,微服务。
-
2.面向对象的编程步骤(开发主线)?
- OOP编程多与生活场景联系
- 写类–创建对象–对象调用方法(属性)
- 先设计类,UML设计软件的语言,不是编程,是图形符号。
-
3.如何理解类?如何理解对象?如何理解属性和方法?
- 类就是类型的简称;类是抽象的,不具体、不明确;类是对同一类型对象共同特征的概括
- 对象:具体物件就是对象,万物皆对象。对象是具体的、明确的。
-
把人当作一个类的话:那么他的名字,性别,身高等,就是他的属性。(理解:每个人都有不同的属性)跑步,吃饭这些行为就是他的方法。(理解:每个人都能做跑步,吃饭这些相同的行为)
4.面向对象(OOP)的特征有哪些? 封装 继承 多态 抽象
第二单元 Part2 使用设计好的类
3.1动手任务
3.1.1如何使用类里面的方法
-
OPP:面向对象编程(Object Oriented Programming)
- 第一步:创建类
- 第二步:创建对象,使用new
- 第三步:对象调用方法,发挥作用
3.1.2.如何使用构造方法
一、构造方法:
-
同时具备两个条件:
- (1)名字和类名相同
- (2)没有返回类型
二、构造方法作用:
-
1.与new配合创建对象
-
2.给对象属性赋初值
:默认构造方法,如果程序员不写构造方法,JVM自动提供一个;程序员写了,JVM不提供。
3.1.3如何接收键盘输入
-
Scanner 形参=new Scanner(System.in);
-
int 参数=形参.nextint();
-
或者参数=形参。next();
package com.ychs.corejava.unit2;
import java.util.Date;
/**
* 学生类
* @author zhaobiao
* @version 1.0
*/
public class Student {
/**
* 学生学号
*/
private String studentId;
/**
* 学生姓名
*/
private String name;
/**
* 学生年龄
*/
private int age;
/**
* 学生籍贯
*/
private String nation;
/**
* 吃饭方法
* @param food 吃的食物
* @return 吃完后的反馈
*/
public String eat(String food) {
System.out.println("我正在吃:" + food);
return "好吃!";
}
/**
* 说话方法
*/
public void speak() {
System.out.println("大家好!");
}
/**
* 咬人方法
* @param name 被咬的人姓名
*/
public void bite(String name) {
System.out.println(name + "被咬了!");
}
/**
* 按学校和姓名咬人
* @param schoolName 学校名字
* @param name 被咬的人姓名
* @return 咬完后的结果 形参(放在方法括号里的),实际上就是占位置的;
*/
public String bite(String schoolName, String name) {
System.out.println(name + "被咬了");
return name + "喊疼";
}
public static void main(String[] args) {
/*第二步、创建对象,使用new*/
/*构造方法:同时具备两个条件,一、名字和类名相同;二、没有返回类型
* 构造方法的作用:1.与new配合创建对象 2.给对象属性赋初值
* 默认构造方法:如果程序员不写构造方法,JVM自动提供一个:程序员写了,JVM不提供。
* */
Student zhangsan = new Student();
/*第三步、对象调用方法,才能发挥它的作用*/
String eatResult = zhangsan.eat("薯条");
System.out.println("eat方法调用后的结果:" + eatResult);
zhangsan.speak();
zhangsan.bite("孔主任");
String biteResult = zhangsan.bite("太原科技大学计算机系","孔主任");
System.out.println("第二个bite方法被调用得到的结果:" + biteResult);
}
}
3.2准确口述
3.2.1构造方法的特征及作用是什么?
-
1.构造方法的两个条件:名字和类名相同,没有返回类型
-
2.作用:与new配合创建对象,给对象属性赋值
3.2.2属性赋值方式有哪些?次序是?
-
1.默认值
-
2.显示赋值
-
3.构造方法赋值
3.2.3属性默认值?
-
默认初值:
- 对象默认值为null
- 整数为默认0
- 小数为0.0
- 布尔值为false
3.3Git Commit Message格式说明
-
(1)commit Message格式(type):(subject)说明文字,即:(类型):(主题)说明
-
(2)type用于说明commit 的类别,使用下面7个类型;
-
1.feat:新功能(feature)
-
2.fix:修补bug
-
3.docs:文档(documentation)
-
4.style:格式(不影响代码运行的变动)
-
5.refactor:重=重构(即不是新增功能,也不是修改bug的代码变动)
-
6.test:增加面试
-
7.chore:构建过程或辅助工具的变动
-
subject是commit目的的简述,不超过50个字符,且结尾不加句号(。)由程序员确定
-
示例:
- feat(增加功能):增加请假审批的方法
- fix(bug修复):修复密码未加密问题
- doc(注释修改):修改addUser的文档注释