![面向?qū)ο缶幊趟枷隷第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/8d1ef551-9dc1-401d-8fb5-20b636c2c052/8d1ef551-9dc1-401d-8fb5-20b636c2c0521.gif)
![面向?qū)ο缶幊趟枷隷第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/8d1ef551-9dc1-401d-8fb5-20b636c2c052/8d1ef551-9dc1-401d-8fb5-20b636c2c0522.gif)
![面向?qū)ο缶幊趟枷隷第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/8d1ef551-9dc1-401d-8fb5-20b636c2c052/8d1ef551-9dc1-401d-8fb5-20b636c2c0523.gif)
![面向?qū)ο缶幊趟枷隷第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/8/8d1ef551-9dc1-401d-8fb5-20b636c2c052/8d1ef551-9dc1-401d-8fb5-20b636c2c0524.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、面向?qū)ο缶幊趟枷?.面向?qū)ο蟮幕靖拍睿好嫦驅(qū)ο缶幊蹋?Object Oriented Programming, OOP,面向?qū)ο蟪绦蛟O(shè)計)是一種計算機編程架構(gòu)。 OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 是一種計算機編程模式 , 它將對象作為問題空間的基本元素 , 利用對象和對象之間的相互作用來設(shè)計程序。 OOP的設(shè)計思想是以數(shù)據(jù)為中心 , 自底向上 , 逐步合并。 OOP的最核心屬性就是其可重用性 , 相比其他范式卻并不具有明顯優(yōu)勢 , 但它更接近人類的認知模式。OOP 的核心思想可以歸納為 : 以數(shù)據(jù)為中心組織邏輯 , 將系統(tǒng)視為互相作用的
2、對象的集合 , 并利用繼承與多態(tài)來增強可維護性 , 可擴展性和可重用性。2.對象對象是人們要進行研究的任何事物 , 從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象 , 它不僅能表示具體的事物 , 還能表示抽象的規(guī)則 , 計劃或事件。 如我手上的這部手機是一個對象。3.類具有相同或相似性質(zhì)的對象的抽象就是類 .。因此 , 對象的抽象是類 , 類的具體化就是對象 , 也可以說類的實例是對象 .。 iphoneX 是一個類。4.關(guān)系繼承一般和特殊的關(guān)系 , 它指定了子類如何特化父類的特征和行為,繼承只能單一繼承不能多繼承。例如 , 小米手機定制版是小米手機的一種。繼承的好處1) 提高了代碼的復(fù)用性2) 多
3、個類相同的成員可以放到同一個類中3) 提高了代碼的維護性4) 如果功能的代碼需要修改,修改一處即可5) 讓類與類之間產(chǎn)生了關(guān)系,是多態(tài)的前提繼承的弊端1) 好處的第三點同時也是繼承的弊端2) 類與類之間產(chǎn)生了關(guān)系,讓類的耦合性增強了3) 設(shè)計原則:高內(nèi)聚低耦合實現(xiàn)是一種類與接口的關(guān)系 , 表示類是接口的特征和行為的實現(xiàn)。發(fā)短信這個功能大伙都知道 , 小米手機就實現(xiàn)了發(fā)短信這個功能 , 而且蘋果手機也實現(xiàn)了發(fā)短信這個功能。1.接口的成員特點成員變量只能是常量:默認修飾符public static final構(gòu)造方法沒有,因為接口主要是擴展功能的,而沒有具體存在成員方法默認修飾符public ab
4、stract2. 類與類 _類與接口 _接口與接口的關(guān)系類與類繼承關(guān)系,只能單繼承,但是可以多層繼承。類與接口實現(xiàn)關(guān)系,可以單實現(xiàn),也可以多實現(xiàn)。還可以在繼承一個類的同時實現(xiàn)多個接口。接口與接口繼承關(guān)系,可以單繼承,也可以多繼承。3. 抽象類與接口的區(qū)別成員區(qū)別1) 抽象類 變量 ,常量 ;有抽象方法 ;抽象方法 ,非抽象方法2) 接口 常量 ;抽象方法關(guān)系區(qū)別1) 類與類 繼承,單繼承2) 類與接口 實現(xiàn),單實現(xiàn),多實現(xiàn)3) 接口與接口 繼承,單繼承,多繼承設(shè)計理念區(qū)別1) 抽象類 被繼承體現(xiàn)的是: ” is a的”關(guān)系。共性功能2) 接口 被實現(xiàn)體現(xiàn)的是: ” like a的關(guān)”系。擴展功
5、能組合是整體與部分的關(guān)系 , 但部分不能離開整體而單獨存在。 如一臺小米手機擁有按鍵 , 可是離開了手機 , 按鍵也就失去了意義 .。聚合是整體與部分的關(guān)系 , 且部分可以離開整體而單獨存在。 一個豪華小米電視套餐還包含一套音箱 , 這個音箱也可以是單獨賣的。關(guān)聯(lián)是一種擁有的關(guān)系 , 一個類知道另外一個類的屬性和方法。小米手機可以控制小米電視機。依賴是一種使用的關(guān)系 , 一個類的實現(xiàn)需要另一個類的協(xié)助。小米手機控制小米電視機的時候需要有個路由器。5.基本特征封裝將對象或其中的方法屬性加一層包裝。電腦有硬盤 , 可是我們只能夠通過操作系統(tǒng)去訪問他。繼承對象的一個新類可以從現(xiàn)有的類中派生。多態(tài)不同
6、類的對象對同一消息做出不同反應(yīng)。我用不同牌子的手機 , 收到電話的時候鈴聲是不同的。6.設(shè)計原則間接 柔勝于剛 ,取勝于直編程中有一句名言 : 任何計算機問題均可通過增加一個間接層來解決。變量間接指代某個值或表達式, 函數(shù)也間接指代了某段代碼。一個適當?shù)闹虚g層, 在形式上表現(xiàn)為間接層 , 在實質(zhì)上體現(xiàn)為抽象層。抽象的意義A. 掩蓋了具體的細節(jié) , 提高代碼的簡潔度B. 賦予了明確的語意 , 提高代碼的清晰度間接的意義a) 建立了名與實的映射 , 提高了代碼的一致性和可維護性b) 實現(xiàn)了名與實的分離 , 提高了代碼的靈活性和可擴展性依賴 有求皆苦 , 無欲則剛抽象與規(guī)范是根本 , 間接與分離是手
7、段 , 依賴與控制是關(guān)鍵 , 接口與服務(wù)是核心。接口一方面作為一種抽象類型 , 描述了一類對象所應(yīng)遵守的行為規(guī)范 ; 另一方面作為間接層 , 把兩個耦合的具體類進行了分離。1) 依賴反轉(zhuǎn)原則 Dependency Inversion Principle高層模塊不應(yīng)該依賴底層模塊 , 它們都應(yīng)該依賴抽象 ; 抽象不應(yīng)該依賴細節(jié) ,細節(jié)應(yīng)依賴抽象。2) 依賴注入 Dependency Injection依賴的對象是從外部注入的, DI 強調(diào)依賴的來源 ,完全有外部提供。 DIP 強調(diào)依賴的抽象性。3)控制反轉(zhuǎn)IoC控制反轉(zhuǎn)是一種管理組建依賴的機制, 它打破了常規(guī)的流程控制模式, 把控制權(quán)從用戶的應(yīng)
8、用代碼轉(zhuǎn)給了底層的某個組建 , 以保證組建總能在合適的時候獲得合適的依賴。 依賴注射是控制反轉(zhuǎn)的一種實現(xiàn)方式。7.內(nèi)聚 ( 不是一家人 , 不進一家門)耦合反映模塊之間的關(guān)聯(lián)程度, 內(nèi)聚反映模塊內(nèi)部的關(guān)聯(lián)成強度。面向?qū)ο缶幊淘O(shè)計思想原則:高內(nèi)聚,低耦合,就近原則。1) 單一職責原則一個類應(yīng)當只有一個變更的理由。2) 局部化原則讓代碼的物理緊密程度與邏輯緊密程度保持一致。3) 接口隔離原則不應(yīng)強迫客戶依賴那些他們不用的方法 , 多個專用的接口比單純一個總接口更好。8.現(xiàn)在講一個經(jīng)典的面向?qū)ο缶幊痰陌咐a*數(shù)據(jù)庫的增刪改查操作 *1. 首先創(chuàng)建一個 Account 類public class A
9、ccount private Integer id;private String name;private Double money;public Integer getId() return id;public void setId(Integer id) this.id = id;public String getName() return name;public void setName(String name) = name;public Double getMoney() return money;public void setMoney(Double money
10、) this.money = money;Overridepublic String toString() return "Account id=" + id + ", name=" + name + ", money=" + money + ""2.其次創(chuàng)建 JDBCUtils 工具類/* JDBC 的工具類* author jt*/public class JDBCUtils2 / 創(chuàng)建一個連接池:但是這個連接池只需要創(chuàng)建一次即可。privatestaticfinalComboPooledDataSourced
11、ataSource=newComboPooledDataSource();/* 獲得連接的方法* throws SQLException*/public static Connection getConnection() throws SQLExceptionreturn dataSource.getConnection();/* 獲得連接池 :*/public static DataSource getDataSource()return dataSource;/* 釋放資源的方法*/public static void release(Statement stmt,Connection c
12、onn)if(stmt != null)try stmt.close(); catch (SQLException e) e.printStackTrace();stmt = null;if(conn != null)try conn.close(); catch (SQLException e) e.printStackTrace();conn = null;public static void release(ResultSet rs,Statement stmt,Connection conn)/ 資源釋放:if(rs != null)try rs.close(); catch (SQL
13、Exception e) e.printStackTrace();rs = null;if(stmt != null)try stmt.close(); catch (SQLException e) e.printStackTrace();stmt = null;if(conn != null)try conn.close(); catch (SQLException e) e.printStackTrace();conn = null;3.然后利用DBUtils 工具類庫實現(xiàn)面向?qū)ο缶幊檀a:/* ResultSetHandler的實現(xiàn)類* author jt*/public class D
14、BUtilsDemo3 Test/* ArrayHandler:將一條記錄封裝到一個Object 數(shù)組中*/public void demo1() throws SQLException QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();Objectobjs= queryRunner.query("select* from accountwhereid = ?", newArrayHandler(), 1);Test/* ArrayListHandler:將多條記錄封裝到一個裝有Obje
15、ct 數(shù)組的List集合中* 一條記錄封裝到Objecct數(shù)組中,多條記錄就是多個Object,那么多個Object 數(shù)組就將其裝入List 集合中即可。*/public void demo2() throws SQLException QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();List<Object>list=queryRunner.query("select*fromaccount",newArrayListHandler();for (Object object
16、s : list) Test/* BeanHandler:將一條記錄封裝到一個JavaBean中*/public void demo3() throws SQLException QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();Account account = queryRunner.query("select * from account where id = ?",new BeanHandler<Account>(Account.class), 2);Test/* B
17、eanListHandler:將多條記錄封裝到一個裝有JavaBean的 List 集合中。* *一條記錄就是一個 Java 的對象( JavaBean ),如果多條記錄 (多個 Java 的對象),將多個 Java 對象裝到一個 List 集合中。*/public void demo4() throws SQLException QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();List<Account>list=queryRunner.query("select*fromaccou
18、nt",newBeanListHandler<Account>(Account.class);for (Account account : list) Test/* MapHandler :將一條記錄封裝到一個Map 集合中,Map 的 key 是列名,Map 的 value就是表中列的記錄值。*/public void demo5() throws SQLExceptionQueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();Map<String,Object> map =
19、queryRunner.query("select * from account where id= ?", new MapHandler(), 4);Test/* MapListHandler:將多條記錄封裝到一個裝有Map 的 List 集合中。*/public void demo6() throws SQLExceptionQueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();List<Map<String,Object>> list = queryRunner
20、.query("select * from account", newMapListHandler();for (Map<String, Object> map : list) Test/* ColumnListHandler:將某列的值封裝到List 集合中*/public void demo7() throws SQLExceptionQueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();List<Object> list = queryRunner.query(
21、"select name,money from account", newColumnListHandler("name");for (Object object : list) Test/* ScalarHandler:單值封裝*/public void demo8() throws SQLExceptionQueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();Objectobj=queryRunner.query("selectcount(*)fromacc
22、ount",newScalarHandler();Test/* KeyedHandler :將一條記錄封裝到一個Map 集合中。將多條記錄封裝到一個裝有Map集合的*/Map集合中。而且外面的Map的key是可以指定的。public void demo9() throws SQLExceptionQueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource();Map<Object,Map<String,Object>>map=queryRunner.query("select*fromaccount", new KeyedHandler("id");for (Object key : map.keySet() Test/* 增加一條記錄信息*/public
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Porantherine-生命科學試劑-MCE-2296
- 1-Propinoyl-Lysergic-acid-methylisopropylamide-1P-MiPLA-生命科學試劑-MCE-1036
- 2025年度銀行賬戶管理與個人財富管理合作協(xié)議方
- 2025年度高層建筑基礎(chǔ)鉆孔施工與質(zhì)量控制合同
- 二零二五年度特色餐廳廚師勞動合同及勞動爭議處理協(xié)議
- 2025年度綠色環(huán)保版商鋪租賃合同
- 2025年度環(huán)保項目短期現(xiàn)場作業(yè)人員勞動合同
- 二零二五年度綠色環(huán)保產(chǎn)業(yè)財產(chǎn)贈與協(xié)議
- 2025年度新媒體運營專員聘用合同簡易制
- 二零二五年度商標侵權(quán)違約賠償合同范本
- 2025年人教五四新版八年級物理上冊階段測試試卷含答案
- 2025新人教版英語七年級下單詞表(小學部分)
- 2025年春季1530安全教育記錄主題
- 礦山2025年安全工作計劃
- 基本藥物制度政策培訓課件
- 2025年包裝印刷項目可行性研究報告
- 2025年九年級物理中考復(fù)習計劃
- 給客戶的福利合同(2篇)
- 《銀行融資知識》課件
- SWITCH 勇者斗惡龍11S 金手指 版本:v1.0.3 最大金幣 最大迷你獎?wù)?32倍經(jīng)驗 最大攻擊 所有材料
- 六編元代文學
評論
0/150
提交評論