# Java面向對象(綜合實戰)
?    前言:學習完Java面向對象,所以對于不太了解的地方就得從實戰一些小項目練習獲得需要知道的東西,從這些練習中就能更加直觀清晰的明白和使用。
### 案例一:電腦模型(OO實現)
#### 1.1 需求分析
?   一個可以運行的電腦核心就是電腦主板,而電腦主板的核心部分包括:CPU插槽(AMD的CPU或者Intel的CPU)、聲卡、顯卡、網卡都符合PCI的插槽標準所以可以插到PCI插槽中
類:
>電腦類(Computer)
>主板類(MainCard)
接口:
>CPU接口
>PCI接口
基于CPU接口的實現:AMPCPU或者InterCPU
聲卡:華碩(ASUSSoundCard)聲卡
顯卡:七彩虹(ColorFulCard)
網卡:TPLinkNetWorkCard
組件關鍵分析:
電腦有一個屬性-主板類
主板 屬性1個(CPU接口)和3個PCI接口
#### 1.2 代碼實現
?   對于電腦主板上的CPU和PCI插槽為滿足不同品牌的設備,分別定義CPU接口和PCI接口,例如:
```java
/**
* CPU.java(CPU插槽接口)
* @author baishenghua
*
*
*/
public interface CPU {
// CPU工作
public void work();
}
```
?   **PCI接口代碼:**
```java
/**
* PCI.java(主板上PCI插槽標準接口)
* @author baishenghua
*
*
*/
public interface PCI {
public void run();
}
```
?   對于主板上的CPU定義為接口,但對應的實現可以是AMD的CPU也可以是Intel的CPU,例如:
?   **AMD的CPU代碼:**
```java
/**
* AMDCPU.java(AMDCPU類)
* @author baishenghua
*
*/
public class AMDCPU implements CPU {
@Override
public void work() {
System.out.println("====AMDCPU開始工作=====");
}
}
```
?   **Intel的CPU代碼:**
```java
/**
* IntelCPU.java(Intel的CPU類)
* @author baishenghua
*
*/
public class IntelCPU implements CPU {
@Override
public void work() {
System.out.println("====IntelCPU開始工作======");
}
}
```
?   對于電腦主板上的三個PCI插槽可以匹配聲卡、顯卡、網卡,在這里我們對應的實現分別為華碩聲卡(ASUSSoundCard)、七彩虹顯卡(ColorFulCard)、 Tp-Link網卡(TPLinkNetWorkCard),代碼如下:
?   **華碩聲卡(ASUSSoundCard)代碼:**
```java
/**
* ASUSSoundCard.java(華碩聲卡類)
* @author baishenghua
*
*/
public class ASUSSoundCard implements PCI {
@Override
public void run() {
System.out.println("====華碩聲卡開始運行=====");
}
}
```
?   **七彩虹顯卡(ColorFulCard)代碼**
```java
/**
* ColorFulCard.java(七彩虹顯卡)
* @author baishenghua
*
*/
public class ColorFulCard implements PCI {
@Override
public void run() {
System.out.println("======七彩虹顯卡開始運行=====");
}
}
```
?   **Tp-Link網卡(TPLinkNetWorkCard)代碼**
```java
/**
* TPLinkNetWorkCard.java(Tp-Link網卡類)
* @author baishenghua
*
*/
public class TPLinkNetWorkCard implements PCI {
@Override
public void run() {
System.out.println("====Tp-Link網卡開運行===");
}
}
```
?   **主板(MainCard)代碼**
```java
/**
* MainCard.java(主板類)
* @author baishenghua
*
*/
public class MainCard {
// CPU接口
private CPU cpu;
// PCI插槽
private PCI pci1;
private PCI pci2;
private PCI pci3;
public void setCpu(CPU cpu) {
this.cpu = cpu;
}
public void setPci1(PCI pci1) {
this.pci1 = pci1;
}
public void setPci2(PCI pci2) {
this.pci2 = pci2;
}
public void setPci3(PCI pci3) {
this.pci3 = pci3;
}
public CPU getCpu() {
return cpu;
}
public PCI getPci1() {
return pci1;
}
public PCI getPci2() {
return pci2;
}
public PCI getPci3() {
return pci3;
}
}
```
  電腦主要設備是主板,所以在電腦類(Computer)對應有主板(MainCard)屬性,同時也提供一個電腦運行的方法run()方法,代碼如下:
```java
/**
* Computer.java(電腦類)
* @author baishenghua
*
*/
public class Computer {
// 主板
private MainCard mainCard;
public Computer() {
}
public Computer(MainCard mainCard) {
this.mainCard = mainCard;
}
// 電腦運行
public void run() {
System.out.println("====電腦開始啟動=====");
if (mainCard == null) {
System.out.println("====電腦主板未匹配成功====");
} else {
if (mainCard.getCpu() == null) {
System.out.println("====CPU設備未配置成功===");
return;
} else {
// CPU正常工作
mainCard.getCpu().work();
}
// CPI1
if (mainCard.getPci1() == null) {
System.out.println("===PCI1未匹配設備");
return;
} else {
mainCard.getPci1().run();
}
// PIC2
if (mainCard.getPci2() == null) {
System.out.println("===PCI2未匹配設備");
return;
} else {
mainCard.getPci2().run();
}
// PCI3
if (mainCard.getPci3() == null) {
System.out.println("===PCI3未匹配設備");
return;
} else {
mainCard.getPci3().run();
}
}
System.out.println("====電腦啟動成功===");
}
}
```
?   **ComputerTest類代碼**
```java
/************************************
* ComputerTest.java(電腦測試)
* @author baishenghua
*
*/
public class ComputerTest {
public static void main(String[] args) {
// AMDCPU設備
AMDCPU admcpu = new AMDCPU();
// 華碩聲卡設備
ASUSSoundCard sondCard = new ASUSSoundCard();
// 七彩虹顯卡
ColorFulCard colorFulCard = new ColorFulCard();
// TP-Link網卡
TPLinkNetWorkCard linkNetWorkCard = new TPLinkNetWorkCard();
MainCard mainCard = new MainCard();
mainCard.setCpu(admcpu);
mainCard.setPci1(sondCard);
mainCard.setPci2(colorFulCard);
mainCard.setPci3(linkNetWorkCard);
Computer computer = new Computer(mainCard);
computer.run();
}
}
```
- 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:汽車銷售系統