程式設計界不論是php、python都有這麼兩種程式設計思想,oop物件導向、pop面向過程,這兩種在功能上沒有多大區別,但是在**編寫上卻有很大區別。今天就記錄一下物件導向和面向過程的優點、缺點、定義、實現過程。
oop 物件導向
物件導向有兩個重要的概念:類和物件。
什麼是類?類是具備某項功能的抽象模型,在應用當中類需要例項化也就是new之後使用,這個時候就引出了物件。
什麼是物件?物件是類例項化之後的乙個產物,是乙個實體。
物件導向的3個基礎特徵:
封裝把客觀事物封裝成乙個類,通過修飾符改變屬性或函式的訪問許可權達到保護作用
繼承子類繼承父類,可以使用父類的公共屬性和方法,可以實現介面,同時實現介面裡的所有方法
多型覆蓋和過載,子類繼承父類,子類可以覆蓋父類中的方法。乙個類中可以同時擁有同乙個函式名的方法,但是方法的引數不同,實現結果也不同。
物件導向的幾個名詞:類、物件、屬性、方法、例項化。
物件導向優點:可擴充套件性高,可復用,易維護
物件導向缺點:程式設計複雜度高,效能比面向過程低(需要例項化類)
來一段簡單的**demo:
1 <?php 2
3 /**
4 * 物件導向
5 * 兩個重要概念
6 * class app 就是乙個類
7 */
8 class oop
25 26 }
27 28 /**
29 * 物件導向三大特徵
30 * 繼承 子類繼承父類 子類可以使用父類的公共屬性和方法
31 */
32 class oop1 extends oop
37 38 /**
39 * 物件導向三大特徵
40 * 多型 覆蓋和過載 子類繼承父類 子類可以覆蓋父類的方法,乙個類裡可以存在用乙個函式名方法,但是引數不一樣,結果也不一樣
41 */
42 public function dump()
46 47 }
48 49 /**
50 * 物件導向三大特徵
51 * 繼承 子類繼承父類 子類可以使用父類的公共屬性和方法
52 */
53 class oop2 extends oop
63 64 }
65 66 //類是具備某項功能的抽象模型,實際應用中要先例項化(new)後使用,以下就是例項化類,列印$class看到的結果就是物件
67 $class = new oop();
68 //object(oop)#1 (2) }
69 var_dump($class);
70 echo '
';71 //例項化之後就可以呼叫公共屬性(變數)
72 $name = $class->name;
73 var_dump($name);
74 echo '
';75 //例項化之後就可以呼叫公共函式(方法)
76 $class->dump();
77 echo '
';78 $class1 = new oop1();
79 var_dump($class1);
80 echo '
';81 $class1->dump1();
82 echo '
';83 $class1->dump();
84 $class2 = new oop2();
85 var_dump($class2);
86 echo '
';87 $class2->dump();
執行結果:
pop 面向過程
面向過程的**執行是從上到下(從前到後),有乙個個函式去實現步驟,使用的時候需要乙個乙個依次呼叫。
面向過程優點:效能比物件導向高(不用去例項化類),將複雜的問題流程化,進而簡單化。
面向過程缺點:不易維護,可擴充套件性不高。
**片段:
1 <?php 2
3 /**
4 * 面向過程的資料庫連線方式
5 */
6 7
8 function db($cnf)
24 $link = mysqli_connect($config['host'], $config['username'], $config['password'], $config['databases'], $config['port']);
25 if(mysqli_connect_errno($link))
28 // if(!$config['databases']) '", $link);
31 // mysqli_select_db($config['databases'], $link);
32 // }
33 $sql = 'select * from niuniu_user limit 1';
34 $query = mysqli_query($link, $sql);
35 $row = mysqli_fetch_array($query, mysqli_assoc);
36 if(mysqli_num_rows($query) > 1)
40 } else
43 44 var_dump($rows);
45 46 mysqli_close($link);
47 }
48 49
50 echo '面向過程的資料庫連線方式
';51
52 $cnf = [
53 'host' => '172.17.0.2',
54 'username' => 'root',
55 'password' => 'cuiyuanxin66666',
56 'databases' => 'nndb'
57 ];
58 59 db($cnf);
源**已上傳github:
純手打筆記,如有錯誤請評論提出,謝謝。
PHP物件導向和面向過程
物件導向,一定要物件導向,沒有物件就沒有老婆,沒有老婆就沒有小孩,沒有小孩就沒有未來 你要不是為了未來,就不用找物件,如果只是簡單的搞搞,可以找馬子 把馬子 釣凱子,都是面向過程的,過程一結束,馬子就不存在了,就好像你每天早上總是乙個人醒來 另外馬子很難公升級 鑑於馬子的不可預計性,她的維護也很困難...
物件導向和面向過程
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...
物件導向和面向過程
物件導向和面向過程的區別 面向過程 更加關注整個程式的實現流程 物件導向 更加關注整個程式中有哪些類,每個類有哪些屬性,有哪些行為,它將整個功能劃分為許多小功能,分散到不同的類中,使用時,僅需命令相應的類完成相應的事情 物件導向的優勢 1.更高的容錯率 2.更易閱讀的 3.更易擴充套件 物件導向的劣...