一、首先,我們來了解什麼是面向過程編程?
1.閱讀以下代碼
代碼:
package day01;
/**
* Author: Cai Rong fei
* Date: 2018-09-01 09:15:27 PM
* Description:面向過程編程演示
*/
public class OPPTest {
/** 打印僱員信息 */
public static void printEmpInfo(String name, int age, char gender, double salary) {
System.out.println("--------------------");
System.out.println("姓名: " + name);
System.out.println("年齡:" + age);
System.out.println("性別:" + gender);
System.out.println("薪水:" + salary);
}
public static void main(String[] args) {
// 僱員1
String emp1Name = "張三";
int emp1Age = 22;
char emp1Gender = '男';
double emp1Salary = 8000.00;
// 打印員工信息
printEmpInfo(emp1Name, emp1Age, emp1Gender, emp1Salary);
// 修改工資
emp1Salary *= 115.0 / 100.0;
// 調用如上printEmpInfo方法打印僱員信息
printEmpInfo(emp1Name, emp1Age, emp1Gender, emp1Salary);
}
}
運行:
--------------------
姓名: 張三
年齡:22
性別:男
薪水:8000.0
--------------------
姓名: 張三
年齡:22
性別:男
薪水:9200.0
2.總結
如上代碼的實現方式即爲面向過程的結構化程序設計, 何爲面向過程?面向過程是一種以過程爲核心的編程思想,即分析出解決問題所需要的步驟,然後使用方法將這些步驟一步一步的實現,使用的時候,在main方法中一個一個依次調用就可以了。
分析如上代碼,看看結構化程序的弊端所在,首先,如上代碼缺乏對數據的封裝,變量emp1Name,emp1Age,emp1Gender,emp1Salary爲4個完全獨立的變量, 並不是一個整體。其次,數據和方法(對數據的操作)的分離,在打印僱員信息方法中,傳遞了4個參數,而這4個參數與在main方法中所定義的4個變量並無直接關係。這就是面向過程程序設計的弊端,那如何解決?使用面向對象的程序設計。
二、什麼是面向對象編程?
面向對象編程是把有相同行爲與屬性的執行過程抽象化,具體就是把面象過程編程中涉及的屬性(變量),行爲(方法)封裝成類,類的封裝並沒有具體的調用,而是在需要的時候爲這個類創建對象並用 對象.方法名/對象.屬性 去調用
代碼:
package day01;
/**
* Author: Cai Rong fei
* Date: 2018-09-01 09:34:10 PM
* Description:面向對象編程演示
*/
// 封裝一個簡單的類
class Emp {
// 聲明變量
String name;
int age;
char gender;
double salary;
// 實現一個顯示僱員信息的方法
public void printEmpInfo() {
System.out.println("姓名:" + name + " 年齡:" + age + " 性別:" + gender + " 工資:" + salary);
}
}
public class OOPTest {
public static void main(String[] args) {
// 創建名爲emp1的對象
Emp emp1 = new Emp();
// 給變量賦值
emp1.name = "張三";
emp1.age = 20;
emp1.gender = '男';
emp1.salary = 8000.00;
// 調用以上類中封裝的printEmpInfo方法
emp1.printEmpInfo();
}
}
運行:
姓名:張三 年齡:20 性別:男 工資:8000.0