Object-Oriented Programming

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
第16章 代理模式 Website:
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
Ch02物件導向程式設計 物件導向系統分析與設計.
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
摘要說明 使用的時機:閱讀教育 步驟:介紹書籍資料後進行討論 適用的領域或議題:語文領域 單元名稱:自創教材.
11 繼承類別 11.4 建立者與破壞者 單一建立者與破壞者 11-20
類別與物件 Class & Object.
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承
第7单元 面向过程编程—— 继承与多态.
Virtual Function Jing(井民全).
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Java簡介.
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
簡易C++除錯技巧 長庚大學機械系
JAVA 程式設計與資料結構 第七章 繼承與Interface.
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
Object-Oriented Programming:
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Java软件设计基础 5. 继承与多态.
生物資訊程式語言應用 Part 3 Perl Language.
C++ 與 物件導向 程式設計概念簡介 魏天君 2018/12/3.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
剪貼簿.
Java程序设计 第9章 继承和多态.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
程式設計(二) 進階類別 郭文真 Sabrina Kuo.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
第七章 檔案處理.
繼承概念的優點 類別再使用(程式碼再使用) 抽象化概念再使用 類別關係階層化.
Java 程式設計 講師:FrankLin.
软件学院 张 慧 清华大学软件学院.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴
Topic Introduction—RMI
第一單元 建立java 程式.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
第 19 章 XML記憶體執行模式.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
Inheritance -II.
樣版.
Object-Oriented Programming in C++ 第二章 类和对象
第6章 面向对象开发的 分析与设计.
繼承的優點 程式碼再使用 (code reuse) 抽象概念再使用 類別階層化 澄清物件間的關係.
OOP9 類別Class.
陣列與結構.
12 虛擬函數 12.1 多載與超載 12-2 多載函數 12-2 超載函數 虛擬函數 12-6 同名異式 12-7
辅导课程十一.
公文簽辦應注意事項 數字書寫、使用原則- 舉例說明:
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
JAVA 程式設計與資料結構 第三章 物件的設計.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
面向对象程序设计 C++教程 西安工业大学 于帆.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
13 繼承類別 13.1 繼承概論 基礎類別與衍生類別 繼承型式 13-2
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
第6章 继承和多态 伍孝金
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Object-Oriented Programming

物件導向編程OOP 奠基於三種基礎概念 --資料抽象化(data abstraction) 使用classes --繼承(inheritance) 運用類別衍生(class derivation)讓一個class繼承至另一個 --動態綁定(dynamic binding) 讓編譯器於執行時決定使用base class或derived class定義 的函式

繼承(inheritance) Base class 的成員會被 derived classes 繼承 可以直接使用成員函式也可重新定義函式 需要被重新定義的函式必須是virtual derived classes 可定義額外成員 Base class : Item_base (無折扣) book() : 返回isbn net_price(): 返回購買某特定冊數後的價格 (需設為virtual) Derived class : Bulk_item (折扣)

動態綁定(dynamic binding) 讓程式可以使用繼承體系內任一型物件,無須擔心那些物件的確切型別

定義base class 定義方式和一般class大致相同

定義base class Derived class對base class的public和private成員的存取權和 其他部分對他們的 存取控制與繼承 Derived class對base class的public和private成員的存取權和 其他部分對他們的 存取權相同,如base class的某成員想讓Derived class可存取而禁止一般用戶存 取就要設為protect Derived物件只能透過(自身或另一個)derived物件存取base class 的protected成員 public private protect 一般用戶 v x Derived class

Derived Class(衍生類別) 定義 EX access-label  public , protected , private base-class  可指定多個base class EX Class classname : access-label base-class

Derived Class(衍生類別) Derived Class 和 virtual 函式 -- Derived type 必須為想重新定義的函式引入宣告式 -- Derived Class 內的virtual函式宣告必須和base內的一樣 (例外: virtual 函式返回reference(pointer)指向base class時,可返回以 public方式繼承至base class的 class ) Derived物件內含其base class成為子物件

Derived Class(衍生類別) 「 class 不能衍生自其本身」 Class 必須先定義好才能成為base class 可以將derived class當成base class使用 Dervied class 宣告式

Derived 轉換為Base 因為derived物件均含有base成分,所以可以進行以下操作 將base-type reference 或pointer綁定於derived物件上,對物件本身並無影響,物件本身仍為derived物件

Public,Private,Protected繼承 Derived物件中繼承而得的成員之存取權由「base class對該成員的存取級別」和「derived class 以何種方式繼承」共同控制 Class classname : access-label base-class public private protected Public 繼承 Private繼承 Protected繼承

Public,Private,Protected繼承 access-label控制的只是「derivation的使用者」對「繼承自base的成員的存取權」,無論access-label為何,所有繼承自base的class對於base的成員均有相同存取權 豁免個別成員:因為使用private或protected繼承,成員存取能會更受限制,所以我們可以藉由using恢復存取權

Friend 和繼承 Friend可以存取class的private和protected的資料 Friend的關係並不會被繼承

轉換和繼承 Derived 轉換至 base 以Derived 物件對base物件作初始化或賦值 --轉換至reference : 物件沒有改變 --轉換至odject : 參數型別會改變,derived物件的base部 分會被複製到參數上 以Derived 物件對base物件作初始化或賦值

轉換和繼承 Base轉換至Derived --- 無自發轉換關係 -- 即使base的reference或pointer實際綁定於derived物件, 轉換限制依然存在

建構式和拷貝控制項 建構式和拷貝控制項成員不會被繼承,每個class應該定義自己的建構式和拷貝控制項 Base-class 建構式和拷貝控制項 -- 自身不是衍生類別的base class,其建構 式和拷貝控制項不受 影響,看起來一樣。

Derived class的建構式 因繼承自另一個class,因此建構式除了初始化自身成員變數,還得初始化其base class 合成的derived class default建構式 : -- base成分由base class的default建構式初始化 a. 喚起Base_item的default建構式 b. 完成Bulk_item成員的初始化

Derived class的建構式 由於Bulk_item有內建型成員,因此需要定義一個default建構式 傳遞引數給base class建構式 : 除default建構式,還允許用戶初始化成員。因derived class建構式的initialize list只能初始化derived class成員,所以需藉由在建構式initialize list含入base class,才能間接初始化繼承而來的成員

Derived class的建構式 只有直接繼承的base class可被初始化