# 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:汽車銷售系統