# Java面向对象(综合实战)
  前言:学习完Java面向对象,所以对于不太了解的地方就得从实战一些小项目练习获得需要知道的东西,从这些练习中就能更加直观清晰的明白和使用。
### 案例二:银行转账(OO实现)
#### 1.1 需求分析
  银行转账业务操作步骤:
>1. 查询对应账号是否存在-findAccountByName();
>2. 查询银行账号余额是否充足findAccountByMoney();
>3. 扣款--deduction
>4. 汇款-remittance
  完成思路分析:
  以上为每个数据操作单位,但整体又是一个工作单位,为了满足整体的系统设计高聚合低耦合的设计思路,所以把整体业务定义为银行业务对象-AccountService接口(AccountServiceImpl对应实现类)汇款方法-remitMoney(),而在业务类依赖数据操作单位,我们在这里定义AccoutDao类,此类包上面操作单元
> 1、查询对应账号是否存在-findAccountByName();
> 2、查询银行账号余额是否充足findAccountByMoney();
> 3、扣款--deduction
>4、汇款-remittance
#### 1.2 代码实现
  根据以上整体需求分析,我们需要提供数据操作对象(AccountDao)和业务操作对象(AccountServiceImpl对象),而两者的关系是业务对象需要依赖数据操作对象,但值得注意的是业务日后需要提供对外的接口,所有业务接口的开发需要基于接口的开发,所以业务定义业务接口
(AccountService),代码如下:
  银行数据操作对象(AccountDao)代码:
```java
/**
* AccountDao.java(银行数据操作类)
* @author baishenghua
*
*/
public class AccountDao {
public void findAccountByName() {
System.out.println("====执行查询对应账号是否存在===");
}
public void findAccountByMoney() {
System.out.println("====执行查询银行账号余额是否充足==");
}
public void deduction() {
System.out.println("====执行扣款操作===");
}
public void remittance() {
System.out.println("===执行汇款操作=====");
}
}
```
  银行业务接口(AccountService)代码:
```java
package com.yiniuedu.cms.bank.dao.service;
/**
* AccountService.java(银行业务接口)
* @author baishenghua
*
*/
public interface AccountService {
// 汇款
public void remitMoney();
}
```
  银行业务实现类(AccountServiceImpl)代码:
```java
/**
* AccountServiceImpl.java(业务实现类)
* @author baishenghua
*/
public class AccountServiceImpl implements AccountService {
private AccountDao accountDao;
public AccountServiceImpl(AccountDao accountDao) {
this.accountDao = accountDao;
}
public AccountDao getAccountDao() {
return accountDao;
}
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void remitMoney() {
// 1、查询对应账号是否存在-findAccountByName();
accountDao.findAccountByName();
// 2、查询银行账号余额是否充足findAccountByMoney();
accountDao.findAccountByMoney();
// 3、扣款--deduction
accountDao.deduction();
// 4、汇款-remittance
accountDao.remittance();
}
}
```
  银行业务实现测试类(银行业务实现类)代码:
```java
/**
* AccountServiceTest(Account业务单元测试)
* @author chong
*/
public class AccountServiceTest {
public static void main(String[] args) {
// 实例化数据库操作对象
AccountDao dao = new AccountDao();
// 实例化业务对象
AccountService accountService = new AccountServiceImpl(dao);
// 调用业务方法
accountService.remitMoney();
}
}
```
总结:
  遇到一个业务复杂的项目时,首先要做的就是分析,先分析各个类和接口之间的关系,然后设计,整理思路,例如要创建的包,包名,包里要放的东西,包之间的调用,类与类之间的继承,是否抽象,是否要实现接口,在做之前一定要分化清楚,然后再去实现。
  至于还有一些经典例子和练习,也得靠自己去理解,所以慢慢来吧,把这些理解清楚了,对于后面的三层就应该更容易做了。
- Java基础企业实践篇
- 一、Java开发环境搭建
- 1.Java的前世今生
- 2.JVM、JRE和JDK的概念及关系
- 3.Java的跨平台特性
- 4.Java运行机制
- 5.环境搭建
- 二、程序设计基础
- 1.掌握代码基本结构
- 2.熟练写注释
- 3.掌握标识符的使用
- 4.掌握关键字的使用
- 5.掌握常量的使用
- 6.认识变量
- 7.掌握数据类型的使用
- 8.掌握类型转换
- 9.掌握作用域
- 10.掌握运算符的使用
- 11.掌握顺序结构的使用
- 13.掌握循环结构的使用
- 14.掌握方法的使用
- 15.掌握数组的使用
- 16.掌握修饰符的使用
- 三、面向对象语言基础
- 1.对象的概念
- 2.类的概念
- 3.类和对象的关系
- 4.面向过程和面向对象的区别
- 5.实训项目:五子棋游戏设计与实现
- 6.案例练习
- 案例一:地址类
- 案例二:员工类
- 案例三:动物狗类
- 案例四:银行账户类
- 案例五:图书类
- 四、面向对象概念的理解,类和对象
- 1.类的构成
- 2.属性
- 3.方法和构造方法
- 4.重载和重写
- 5.变量的作用域
- 6.成员变量和局部变量
- 7.静态块的作用和加载机制
- 8.类生成对象的过程
- 9.对象参数传递过程
- 五、封装,继承,多态
- 1.理解封装、继承、多态的概念和目的
- 2.理解封装、继承、多态的实现方法和步骤
- 3.掌握Java访问修饰符
- 4.理解什么是内部类
- 5.理解this、static、final关键字
- 6.实训项目:租车系统设计与实现
- 六、抽象类和接口
- 1.理解抽象类的概念,为什么要有抽象类
- 2.掌握抽象类的声明格式
- 3.理解什么是接口,为什么要有接口
- 4.掌握接口的定义与实现
- 5.理解接口和抽象类的区别
- 6.实训案例
- 案例一:电脑模型(OO实现)
- 案例二:银行转账(OO实现)
- 七、Object类和常用API
- 1.理解什么是API
- 2.掌握Java API文档的使用
- 3.理解Java类库的概念
- 4.掌握Object类并掌握该类中的方法
- 5.掌握String类的应用
- 6.掌握StringBuffer、StringBuilder类的应用
- 7.掌握基本数据类型及其包装类
- 8.掌握Java日期类
- 八、泛型、集合
- 1.理解泛型的概念和实现语法
- 2.理解Java集合框架三大接口:List、Set、Map
- 3.掌握List接口的实现类ArrayList、LinkedList的使用
- 4.掌握HashSet的使用
- 5.掌握HashMap的使用
- 6.掌握Collections类中提供的静态方法
- 九、异常和IO技术
- 1.理解异常的概念
- 2.掌握异常的分类和Java常见的异常
- 3.理解掌握Java的异常处理机制
- 4.掌握自定义异常
- 5.理解文件系统和File类
- 6.理解I/O概念和分类
- 7.掌握常见的I/O流对象
- 8.掌握文件流与缓冲流
- 十、泛型的延伸
- 1.理解并掌握泛型的基本原理与具体运作过程
- 2.掌握泛型类的定义
- 3.掌握泛型方法的定义
- 十一、流的延伸
- 1.理解数据流的作用
- 2.掌握对象流的作用
- 3.理解对象序列化的概念
- 5.理解线程死锁
- 4.理解对象反序列化的概念
- 十二、反射技术
- 1.理解反射的概念
- 2.理解反射的工作原理
- 3.理解Reflection API中相关类的作用
- 十三、多线程技术
- 1.理解多线程的概念
- 2.理解线程的状态与生命周期
- 3.理解多线程通信
- 4.理解线程同步
- 十四、网络编程技术
- 1.理解网络编程常用协议TCP/UDP/HTTP/FTP等基础知识
- 2.掌握TCP网络编程连接建立的3次握手和4次挥手的具体过程
- 3.掌握UDP网络通信工作原理
- 4.掌握Socket通信模型的工作原理
- 十五、图形化界面
- 5.理解线程死锁
- 十六、JDBC技术
- 1.熟练掌握JDBCAPI中常用接口的基本概念
- 2.理解JDBC连接数据库的思路和实现方法
- 3.熟练掌握JDBC连接数据库的基本步骤
- 4.理解并掌握数据库连接公共类的设计思路和方法
- 5.熟练掌握JDBC使用公共类连接数据库的基本步骤
- 6.熟练掌握JDBC操作数据库的基本步骤
- 7.熟练掌握JDBC操作数据库的SQL语句
- 8.熟练掌握JDBC操作单表的方法及SQL语句
- 9.熟练掌握JDBC操作多表的方法及SQL语句
- 10.理解事务的基本概念
- 11.熟练掌握JDBC在综合项目的使用方法(包含:基本数据、业务处理等)
- 十七、课外补充
- 附录1.各种字符集和编码详解
- 项目实训
- 项目2:汽车销售系统