面向物件的思想概述
面向物件的思想概述
面向過程思想概述
那麼什麼是面向過程開發呢? 面向過程開發,其實就是面向著具體的每一個步驟和過程,
把每一個步驟和過程完成,然後由這些功能方法相互呼叫,完成需求。
面向過程的代表語言:C語言
什麼是面向物件的思想
面向物件的思想是基於面向過程思想發展而來的。
- 面向過程:強調的是實現功能每一個步驟
- 面向物件:強調的是物件,然後由這個物件去呼叫功能
面向物件的特點:
- 是一種更符合我們思想習慣的思想
- 可以將複雜的事情簡單化
- 將我們從執行者變成了指揮者
舉例:
吃飯:
面向過程的思想:先去菜市場買菜--洗菜--切菜--做菜--裝盤--吃
面向物件的物件:你點外賣--(點菜)--廚師(做菜)--外賣小哥(送餐)
虛擬碼舉例
需求:將大象裝進冰箱裡
面向過程的思想:
分析過程:
1、開啟冰箱門
2、把大象裝進冰箱
3、關閉冰箱門
虛擬碼實現:
class Demo{
public static void main(String[] args){
System.out.println("開啟冰箱門");
//開啟冰箱門這個動作,肯定不是一行程式碼就搞得定的
//現在僅僅是為了演示面向過程的編碼思想
//假設我們將來這個程式要開啟很多次冰箱門
//可以將開啟冰箱門這個功能封裝成一個方法然後去呼叫
//把大象裝進冰箱以及關閉冰箱門這兩個功能也可以封裝成方法
open();
put();
close();
}
public static void open(){
//寫開啟冰箱門的功能實現程式碼
}
public static void put(){
//寫把大象裝進冰箱的功能實現程式碼
}
public static void close(){
//寫關閉冰箱門的功能實現程式碼
}
}
面向物件的思想:
使用面向物件的思想去實現該需求:
1、我們需要考慮該需求中有哪些類?
2、每一個類中都有些什麼呢?
3、類與類之間的關係又是什麼呢?
1、我們需要考慮該需求中有哪些類?
如何分析有哪些類,
方式1:需要用到UML這門課的知識
方式2:名詞提取法
有哪些類呢?
通過名詞提取法,我們知道有大象類,冰箱類外加一個測試類
2、每一個類中都有些什麼呢?
大象類:
屬性:體積,鼻子,腳掌,耳朵...
功能:被裝進冰箱,喝水,叫....
冰箱類:
屬性:立方體,材質,功率...
功能:開啟冰箱門,關閉冰箱門,冷藏,保鮮....
測試類:
main方法,實現需求
3、類與類之間的關係又是什麼呢?
測試類中使用大象類和冰箱類的功能
虛擬碼實現:
//大象類
class Elephant{
體積;
鼻子;
腳掌;
耳朵;
被裝進冰箱();
喝水();
叫();
}
//冰箱類
class IceBox{
立方體;
材質;
功率;
開啟冰箱門()
關閉冰箱門()
冷藏()
保鮮()
}
//測試類
class Demo2{
public static void main(String[] args){
呼叫冰箱類中的開啟冰箱門的方法;
呼叫大象類中的被裝進冰箱的方法;
呼叫冰箱類中的關閉冰箱門的方法;
}
}
3、面向物件開發,設計,特徵
面向物件的開發:
實際上就是不斷建立物件,使用物件,指揮物件做事情的過程
面向物件的設計:
其實就是管理和維護類與類之間的關係的過程
面向物件的特徵:
1、封裝
2、繼承
3、多型
類與物件關係
我們學習程式語言,就是為了模擬現實世界的事物,實現資訊化。比如:去超市買東西的計費系統,去銀行辦業務的系統。
我們如何表示一個現實世界事物呢: 屬性 就是該事物的描述資訊 行為 就是該事物能夠做什麼 舉例:學生事物
我們學習的Java語言最基本單位是類,所以,我們就應該把事物用一個類來體現。
類:是一組相關的屬性和行為的集合
物件:是該類事物的具體體現
類的定義
現實世界的事物
屬性 人的身高,體重等
行為 人可以學習,吃飯等
Java中用class描述事物也是如此
成員變數 就是事物的屬性
成員方法 就是事物的行為
定義類其實就是定義類的成員(成員變數和成員方法)
如何使用java語言描述現實生活中的事物呢?
舉例:人
五官,姓名,性別,年齡...
吃飯,學習,說話,敲程式碼...
水杯
顏色,形狀,材質,容積...
裝水,泡茶...
屬性:用來描述事物的資訊
行為:用來描述事物能夠做什麼
我們學習程式語言的目的,其實就是用來模擬現實世界的事物的
而我們現在所學習的語言叫做: java
java中最基本的單位:類
所以,我們通過java把現實世界的事物給描述出來
所以我們要學習如何用java去描述一個現實世界的事物
得出一個對應關係:
事物: 類:
屬性:用來描述事物的資訊 成員變數:用來描述事物的資訊
行為:用來描述事物能夠做什麼 成員方法:用來描述事物能夠做什麼
類:是一組成員變數和成員方法的集合,其實是一個抽線的概念
物件:是該類事物的具體表現,具體到某一個個體
舉例:
事物:人
屬性:五官,姓名,性別,年齡...
行為:吃飯,學習,說話,敲程式碼...
類:Person
成員變數:facialFeatures,name,gender,age
成員方法:eat(),study(),talk(),coding()
物件:是該類事物的具體表現,具體到某一個個體
學生,老師,醫生,程式設計師...
虛擬碼程式示例
類是用來描述現實世界中的事物
現實世界中
學生:
屬性:學號,姓名,年齡
行為:吃飯,學習,睡覺
類中:
Student:
成員變數:id,name,age
成員方法:eat(),study(),sleep()
public class Student {
//定義該類中的成員變數
//格式:
// 修飾符 資料型別 變數名;
//目前還沒有系統地學習過修飾符,目前不加修飾符
//學號
int id;
//姓名
String name;
//年齡
int age;
//定義成員方法
//目前定義的格式:
// 修飾符 返回值型別 方法名(引數列表){..}
//目前修飾符使用 public static
//吃飯
public static void eat(){
System.out.println("吃飯");
}
//學習
public static void study(){
System.out.println("學習");
}
//睡覺
public static void sleep(){
System.out.println("睡覺");
}
}
測試學生類
建立物件,呼叫成員變數和方法
public class StudentDemo {
public static void main(String[] args) {
//如何建立物件呢?
//格式: 類 物件名(自定義) = new 類名(...);
//建立一個學生物件
Student xiaozhu = new Student();
//如何獲取成員變數呢?
//格式:
// 物件名.成員變數名
//獲取xiaozhu的學號
System.out.println(xiaozhu.id);
//獲取xiaozhu的姓名
System.out.println(xiaozhu.name);
//獲取xiaozhu的年齡
System.out.println(xiaozhu.age);
System.out.println("=================賦值後:=================");
//由於我們打印發現結果都是系統給的預設值
//現在我們想給這個物件的成員變數進行賦值
//給成員變數賦值的格式:
// 物件名.成員變數名 = 成員變數對應的資料型別的值;
//給xiaozhu這個物件的學號進行賦值
xiaozhu.id = 10001;
//給xiaozhu這個物件的姓名進行賦值
xiaozhu.name = "朱佳樂";
//給xiaozhu這個物件的年齡進行賦值
xiaozhu.age = 18;
//獲取xiaozhu的學號
System.out.println(xiaozhu.id);
//獲取xiaozhu的姓名
System.out.println(xiaozhu.name);
//獲取xiaozhu的年齡
System.out.println(xiaozhu.age);
//如何呼叫該物件中的方法
//格式:
// 物件名.成員方法
//呼叫xiaozhu中的吃飯方法
xiaozhu.eat();
xiaozhu.study();
xiaozhu.sleep();
}
}