物件導向技術.

Slides:



Advertisements
Similar presentations
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
Advertisements

第一單元 建立java 程式.
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
大葉大學 指導教授: 黃鈴玲 學生: 林慶南(工業工程與科技管理所)
第8章 面向对象的软件工程 8.1 软件工程的新途径 8.2 面向对象建模 8.3 对象模型 8.4 动态模型 8.5 功能模型.
Ch02物件導向程式設計 物件導向系統分析與設計.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
第一章 面向对象程序设计.
第10章 考试系统的分析与设计 1.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
類別與物件 Class & Object.
軟體工程 -物件導向程式設計與UML系統分析實作
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
第 9 讲 面向对象分析与设计
程設一.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
LINQ 建國科技大學 資管系 饒瑞佶.
Java簡介.
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
首席數位 物件導向系統分析與設計(OOA,OOD) 首席講座: 曾龍博士.
JAVA 程式設計與資料結構 第七章 繼承與Interface.
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
物件導向程式語言Java 簡介 1.
Classes Lecturer: 曾學文.
第六章 类的扩展与继承.
物件導向系統分析與設計與UML.
單元3:軟體設計 3-2 順序圖(Sequence Diagrams)
软件建模精要 面向对象软件建模技术.
Java软件设计基础 5. 继承与多态.
C++ 與 物件導向 程式設計概念簡介 魏天君 2018/12/3.
類別(class) 類別class與物件object.
無線射頻識別系統(RFID) 基本原理及發展與應用
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Java程序设计 第9章 继承和多态.
Merge Partners’ programs by Matlab
第七章 檔案處理.
管理資訊系統導論 資訊系統的定義與概念.
Java 程式設計 講師:FrankLin.
UML Unified Modeling Language
第九章 物件導向技術.
第九章 物件導向技術.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
两种不同类别的软件: 功能预定义软件;用户驱动的软件。他们对软件工程方法有不同的需求
類別與物件 I (Classes and Objects I)
Topic Introduction—RMI
第一單元 建立java 程式.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
UML语言.
資料結構 優點 缺點 1 陣列 (Array) 沒有額外變量 (例head, next,...) 運作/操作較簡單 更新資料時,若要保持順序,需要移動較大量資料 靜態結構Static (宣告時已決定了陣列元素多少,不能在程式執行期間增減元素) 2 隊列Queue (FIFO) 容易更新 加入enqueue:
第 19 章 XML記憶體執行模式.
其他 ER 相關觀念 以及OO模型 國立中央大學 資訊管理系 范錚強 2002 中央大學。范錚強.
Chapter 3 軟體組態管理 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
統一模式語言(UML) 使用UML作為塑模語言的原因: UML目前己為國際物件管理組織(OMG)接受為物件導向之標準模式語言。
第6章 面向对象开发的 分析与设计.
陣列與結構.
Dreamweaver 進階網頁製作 B 許天彰.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
UML ISKM Lab.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
面向对象建模 对象(object) 对象具有的含义: 现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。 在现实世界中:
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
營運模式.
方法(Method) 函數.
Presentation transcript:

物件導向技術

內容大綱 導論 物件導向的基本概念 物件 類別 封裝 繼承 同名異式 物件導向的系統開發 結論

導論 物件導向技術(Object-Oriented Technique) 是繼結構化技術之後,系統開發上另一新的典範(Paradigm) 。 資料抽象化(Data Abstraction)、 封裝(Encapsulation)、 繼承(Inheritance)、 同名異式(Polymorphism) 的觀念融入於物件系統開發中。

導論(c.2) 軟體業界希望像硬體開發時,有積體電路(IC) 可以直接使用,所以有做出軟體IC的構想。 因為,如此可以促進軟體業界的分工,降低系統開發的複雜度和困難度。 物件導向技術可以達到這個目標。然而,傳統的結構化技術不能。

導論(c.3) 積體電路(IC) Software IC

導論(c.4) 物件導向的優點 更接近人類思維方式 程式的重複使用 程式易維護 程式易擴展 等等…

物件導向的基本觀念 物件導向的重要基本觀念包括: 物件 類別 封裝 繼承 同名異式

物件導向的基本觀念(c.2) 物件(Object) 物件是物件導向的基本思維單位,物件是一個具有識別(Identity)、狀態(State)與行為(Behavior) 的實體(Entity)或抽象化概念(Abstract Concept),物件的行為會影響其狀態。 物件包括: 名稱(Name)─識別 屬性(Attributes)─資料,其內容代表物件的狀態 操作 (Operations)或稱方法(Methods)─行為 例如物件名稱李四,有生日、年齡、住址、身高、體重與性別等為其屬性,而跳躍與走路為其操作。

物件導向的基本觀念(c.3) 類別(Class) 類別是具有相同資料結構及行為的物件所組成的集合。一個類別是一種定義(Definition)、樣板(Template)或模子(Mold),它是許多物件共同特徵的一種描述。

物件導向的基本觀念(c.4) 類別是物件經分類與抽象化後所得的結果。 將物件抽象化,就是剔除物件間的差異,而只考慮其相同的性質,然後組成一個群體,稱為類別。

物件導向的基本觀念(c.5) 類別包括: 例如:人類是一類別名稱,有生日、年齡、住址、身高、體重與性別等為其屬性,而跳躍與走路為其操作。 名稱(Name) 屬性(Attributes) 操作 (Operations)或稱方法(Methods) 例如:人類是一類別名稱,有生日、年齡、住址、身高、體重與性別等為其屬性,而跳躍與走路為其操作。 class name attributes: operations: 類別的表示法

物件導向的基本觀念(c.6) 類別有時亦稱為物件類型(Object Type)。 類別中的任一物件稱為該類別之案例(Instance), 因此物件與案例常被互用(視為同義詞)。

物件導向的基本觀念(c.7) 封裝(Encapsulation) 將資料及使用此資料的所有方法包裝成一個物件,謂之。 也就是,物件是資料與方法『封裝』的結果。 資料與方法被 封裝在一起

物件導向的基本觀念(c.8) 物件之方法定義了物件的行為,可修改物件之資料(也就是說,影響其狀態)。 封裝所形成的物件,其結構可分為兩部分: 介面(Interface):定義與物件互動的方式。 實作(Implementation):定義物件行為。 實作 介面 介面

物件導向的基本觀念(c.9) 封裝將物件的實作細節隱藏,使其與外界環境隔離,而只允許該物件之方法修改其資料,稱為資訊隱藏(Information Hiding)。 物件中的資料必須透過物件的方法取用,只要物件的方法對存取作控制,外界的物件便無法取用內部的資料,而達成物件保護的目的。 封裝之特性使物件導向的系統較容易維護。

物件導向的基本觀念(c.9)

物件導向的基本觀念(c.10) method # 1 data # 2 # 4 # 5 # 6 # 3 修改存取內部的資料

物件導向的基本觀念(c.11) 物件間的聯繫是鬆散的,靠著訊息傳遞互通有無,彼此合作。所以,物件可接收訊息也可發送訊息。 外界之物件使用某一物件時, 僅需知道該物件提供何種方法,而不需知道其內部之資料或行為是如何表達或執行。 僅透過訊息傳遞要求該物件提供服務,而無法逕自改變該物件之資料內容。

物件導向的基本觀念(c.12) 訊息 嘴巴 訊息 耳朵

物件導向的基本觀念(c.13) 為了反應訊息,物件內部應該準備好相對應方法來因應。 方法往往會改變物件自己的狀態,也會送出訊息給其他物件。 準備好的 各種方法 用來反應訊息 送出訊息 改變自己 的狀態 接收訊息

物件導向的基本觀念(c.14) message: [sender, return value(s)] sender object attributes: receiver object attributes: operations: operations: message: [sender, return value(s)] message: [receiver, operation, parameters]

物件導向的基本觀念(c.16) 物件活動的平台是支持物件導向、物件生存的環境,能夠讓訊息自由的傳導,而且能讓物件存在於記憶體中,還要能讓物件的方法使用處理器來執行。 平台好比海洋 提供生物生存的環境

物件導向的基本觀念(c.17) 繼承(Inheritance) 繼承是類別間之關係,在此關係中某類別之資料結構與行為可供其關係中之類別分享。 繼承者稱為子類別(Subclass),被繼承者稱為父類別(Superclass)。 子類別將由父類別繼承來的屬性(變數、資料結構)或方法(行為)重新定義的動作稱為覆寫(overriding)。

物件導向的基本觀念(c.18) 男人 女人 人類

物件導向的基本觀念(c.19) Furniture (superclass) subclasses of furniture Chair Table Desk sofa Furniture (superclass) subclasses of furniture

物件導向的基本觀念(c.20) 繼承之特性可利用一般化(Generalization) 的原則,萃取相關子類別的相同屬性和操作,並將之歸類為一個父類別來達成。 相反的,利用特殊化(Specialization)的原則,可以找出一個父類別的相關子類別。

物件導向的基本觀念(c.21) 類別階層組織的建構:物件經過抽象化找出的類別,可以再經由一般化的過程找出其父類別,並由特殊化的過程找出子類別。上下重複檢查類別階層組織,直到沒有新的類別出現為止。 一般化 特殊化 類別階層組織

物件導向的基本觀念(c.22) 多重繼承:子類別同時繼承一個以上的父類別的情形。

物件導向的基本觀念(c.23) 類別的方法供本身及其所有子類別共用,因而達到程式的重用效果。 在物件導向技術中,繼承概念之運用對軟體工程有革命性之影響,如達成程式碼重用(Reuse),及產生可靠度較高的軟體等。

物件導向的基本觀念(c.24) 類別階層組織

物件導向的基本觀念(c.25) 同名異式(Polymorphism) 多型的目的是希望簡化系統發展的複雜性並增加其彈性。 Polymorphism意指多種型式,簡稱多型,指的是一個方法可以有許多型式,也就是,相同的方法名稱,定義以不同的實作(implementation)。   多型的目的是希望簡化系統發展的複雜性並增加其彈性。

物件導向的基本觀念(c.26) 多型在程式執行時(run-time) ,呼叫一方法是以動態連結(Dynamic Binding)的方式,判斷當時被呼叫物件所屬的類別來決定執行那一實作,所以又稱為動態多型(Dynamic Polymorphism) 或 執行時多型(Run-time Polymorphism) 。

物件導向的基本觀念--範例 (c.27) abstract class Shape { public abstract void f(); } class Triangle extends Shape { public void f() { System.out.println("Triangle!"); class Rectangle extends Shape { System.out.println("Rectangle!"); class Circle extends Shape { System.out.println("Circle!"); class poly { public static void main (String[] args) { Shape[] s = new Shape[] { new Triangle(), new Rectangle(), new Circle() }; for (int i=0; i<s.length; i++) s[i].f();

物件導向的基本觀念(c.28) 當呼叫一方法時,決定執行那個實作,是依參數的數目與類型來做決定,此稱為多重定義、過荷或超載(Overloading)。 雖然過荷符合多型的定義,但事實上,過荷並非多型。 為了區別,過荷又稱為靜態多型(Static Polymorphism),這是因為早在程式使用編譯器(compiler)編譯時,就已經依參數的數目與類型,決定執行那個實作。

物件導向的基本觀念(c.29) 物件導向程式語言 如Java、C++、Small Talk、Object Pascal等。 慎選『類別庫』相當重要,不同的類別階層組織往往並不相容。 熟悉類別階層組織的建構法則,建構好的類別階層組織,才可增加程式的『重複使用率』,並真正得到物件導向的好處。

物件導向的基本觀念(c.30) C++與傳統的C語言的主要不同在於增加類別、封裝、繼承、多形性的語法,與類別庫的結構。 class stack { private: int Array[100]; int Top; public: void Push(int data); int Pop(); }; void stack::Push(int data) { ....... }; int stack::Pop() C++與傳統的C語言的主要不同在於增加類別、封裝、繼承、多形性的語法,與類別庫的結構。

物件導向的系統開發 Grady Booch於1986年率先發表物件導向的系統開發方法,以開啟物件導向在軟體工程(Software Engineering)上應用的新頁。接著,又有許多物件導向系統分析與設計方法論陸續的被發表,使物件導向的觀念在軟體工程上的應用更臻完整,其中較著名的如: Rambaugh, James 的物件塑模技術(Object Modeling Technique, OMT) Jacobson, Ivar 的物件導向軟體工程(Object-Oriented Software Engineering, OOSE) 三人的研究成果整合為統一塑模語言(Unified Modeling Language, UML):一種物件導向塑模工具。

物件導向的系統開發(c.2) 統一塑模語言(Unified Modeling Language, UML)是一種規格化(Specifying) 、視覺化(Visualizing)及文件化(Documenting)的軟體塑模語言,共使用以下九種圖形進行塑模: 使用個案圖 類別圖 物件圖 循序圖 合作圖 狀態圖 活動圖 元件圖 佈署圖

物件導向的系統開發(c.3) 1. 使用個案圖 2. 類別圖 UML引用Jacobson 的使用個案模式,表示系統的使用個案和行為者之間互動的關係。從外部觀點來看,使用者介面及使用個案的範圍與限制,決定什麼是使用個案(What)?從內部觀點來看,它可描述使用個案是如何運作的(How)? 2. 類別圖 UML引用Booch 與Rumbaugh方法論的類別圖,表示系統存在之類別以及類別間的邏輯關係,該圖是UML模式圖的核心。

物件導向的系統開發(c.4) 3. 物件圖 UML之物件圖(Object Diagram)是用予描述一系統於某一時間點的靜態結構,該圖由一群相關之物件及其連結所組成,以表示系統在某一時間點之一例子。 4. 循序圖 UML之循序圖(Sequence Diagram)是結合Booch的互動圖與Rumbaugh的訊息追蹤圖而成,用以描述系統運作時,物件間的互動行為且著重以時間為主軸的處理程序。

物件導向的系統開發(c.5) 5. 合作圖 UML之合作圖(Collaboration Diagram)是從Booch的物件互動圖與Rumbaugh的物件導向資料流程圖改進而來,該圖能同時展現物件間的資料流程、控制流程與訊息傳遞的活動。因此,合作圖是一個宏觀的總流程,能同步表達資料的產生與資料轉變的過程,以改進傳統資料流程圖中只著重資料流的缺點。

物件導向的系統開發(c.6) 6. 狀態圖 UML之狀態圖(State Diagram)是結合Booch 的狀態轉移圖與Rumbaugh的動態模式而成,用以表達物件在其生命週期中的狀態變化。狀態圖是以微觀物件為主,細分物件所發生的各項事件,並表達物件生命週期之狀態轉變及活動結果。 7. 活動圖 UML之活動圖(Activity Diagram)是狀態圖的一種變異,該圖表達涉及於執行某一作業行為中之活動。一個活動圖描述一群循序與同步的活動,一個活動狀態表示一個工作流程步驟或一個運算的執行活動。

物件導向的系統開發(c.7) 8.元件圖 UML之元件圖(Component Diagram) 起源於Booch的模組圖,用以說明系統設計過程各類別與物件的配置及敘述軟體元件間的組織架構和相依關係。元件是開發和執行過程之實際物件類別,將可拆散的實際基本單位模組化,這些基本單位包括模型(Module)元素並擁有特性和明確定義的介面 9. 佈署圖 UML之佈署圖(Deployment Diagram) 起源於Booch的處理圖,它用來說明系統各處理器、處理元件的配置、關聯,以及同一處理器內執行處理的時程安排等。

物件導向的系統開發(c.8) 物件導向的系統開發是一個反覆的過程,包括需求分析、分析、設計、實施與測試等階段,但分析與設計之工作其實很難分得清楚,因此建議將之合併成分析與設計,如下圖所示。

結論 物件導向應用一些重要的觀念包括物件、類別、封裝、繼承與同名異式等,使物件導向系統有別於結構化之系統。由於物件導向技術之引進,使軟體之開發與維護更有效率,亦提升了程式的再用性與可維護性。 物件導向之系統開發過程是一種反覆的程序,主要包括需求分析、系統分析與設計、測試與維護等階段。 需求分析主要以使用個案圖作為表達工具,而系統分析與設計主要以類別圖、物件圖、循序圖、、狀態圖、合作圖、元件圖與佈署圖表達。