




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο筌浖_發(fā)面向?qū)ο蠡A(chǔ)Zenith:冉露 面向?qū)ο蠡A(chǔ)- 面向?qū)ο蟮幕舅枷牒头椒?了解程序設(shè)計(jì)方法的發(fā)展了解程序設(shè)計(jì)方法的發(fā)展 理解面向?qū)ο蟪绦蛟O(shè)計(jì)概念理解面向?qū)ο蟪绦蛟O(shè)計(jì)概念 面向?qū)ο笾R域的核心概念面向?qū)ο笾R域的核心概念 面向?qū)ο笾R域的其它重要概念面向?qū)ο笾R域的其它重要概念 面向?qū)ο蟮牟蛔忝嫦驅(qū)ο蟮牟蛔忝嫦驅(qū)ο蟮幕舅枷牒头椒?-程序設(shè)計(jì)方法概述1.初期的程序設(shè)計(jì)初期的程序設(shè)計(jì)(五十年代) 高運(yùn)行效率、少占用內(nèi)存為目標(biāo)高運(yùn)行效率、少占用內(nèi)存為目標(biāo)2.結(jié)構(gòu)化面向過程程序設(shè)計(jì)結(jié)構(gòu)化面向過程程序設(shè)計(jì)(七十年代)程序的可讀性、可維護(hù)性為目標(biāo)程序的可讀性、可維護(hù)性為目標(biāo) 程序程序=算法
2、算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+編程語言編程語言+面向過程的程序設(shè)計(jì)方法面向過程的程序設(shè)計(jì)方法 程序的結(jié)構(gòu)規(guī)定為程序的結(jié)構(gòu)規(guī)定為順序、選擇順序、選擇和和循環(huán)循環(huán)三種基本結(jié)構(gòu),采取自頂向下、三種基本結(jié)構(gòu),采取自頂向下、逐步求精的分析和設(shè)計(jì)方法,即功能分析方法。逐步求精的分析和設(shè)計(jì)方法,即功能分析方法。3.面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)(八十年代開始) 降低程序的復(fù)雜性、提高軟件的開法效率和改善工作界面為目標(biāo)降低程序的復(fù)雜性、提高軟件的開法效率和改善工作界面為目標(biāo) 程序程序=對象對象+消息消息+面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蠡A(chǔ)面向?qū)ο蠡A(chǔ) 系統(tǒng)由過程(procedures)組成 過程
3、之間互相發(fā)送數(shù)據(jù) 過程和數(shù)據(jù)各自獨(dú)立 集中于數(shù)據(jù)結(jié)構(gòu)、算法和運(yùn)算步驟的先后順序 過程經(jīng)常難以重用 缺乏具有較強(qiáng)表現(xiàn)力的可視化建模技術(shù) 分析與實(shí)現(xiàn)之間需要進(jìn)行概念轉(zhuǎn)換 本質(zhì)上是機(jī)器/匯編語言的抽象 從設(shè)計(jì)模型到代碼實(shí)現(xiàn)跨度很大 面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-結(jié)構(gòu)化面向過程程序設(shè)計(jì)特點(diǎn)結(jié)構(gòu)化面向過程程序設(shè)計(jì)特點(diǎn)面向?qū)ο蠡A(chǔ)面向?qū)ο蠡A(chǔ)面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn) 系統(tǒng)由對象組成 對象互相發(fā)送消息(過程調(diào)用) 相關(guān)的數(shù)據(jù)和行為緊密地綁定在對象中 把問題領(lǐng)域建模成對象,要解決的問題自然的映射為代碼的實(shí)現(xiàn) 可視模型
4、表現(xiàn)力強(qiáng),相對容易理解 集中于實(shí)現(xiàn)之前所確定的職責(zé)(responsibilities)和接口 強(qiáng)有力的概念:接口,抽象,封裝,繼承,委托(delegation)和多態(tài) 問題的可視模型逐漸進(jìn)化成解決方案模型 設(shè)計(jì)模型與代碼實(shí)現(xiàn)之間跨度較小 努力縮減軟件的復(fù)雜度 n符合人們習(xí)慣的思維方法,對問題的抽象,符合人們習(xí)慣的思維方法,對問題的抽象,便于分解大型的復(fù)雜多變的問題。由于對象對便于分解大型的復(fù)雜多變的問題。由于對象對應(yīng)于現(xiàn)實(shí)世界中的實(shí)體,因而可以很自然地按照現(xiàn)實(shí)世界中處理實(shí)體的方法來處理對象,應(yīng)于現(xiàn)實(shí)世界中的實(shí)體,因而可以很自然地按照現(xiàn)實(shí)世界中處理實(shí)體的方法來處理對象,軟件開發(fā)者可以很方便地與問
5、題提出者進(jìn)行溝通和交流。軟件開發(fā)者可以很方便地與問題提出者進(jìn)行溝通和交流。n追求對現(xiàn)實(shí)系統(tǒng)的直接模擬追求對現(xiàn)實(shí)系統(tǒng)的直接模擬 ,盡量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟件世界的空間,盡量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟件世界的空間中?,F(xiàn)實(shí)世界和軟件存在對應(yīng)關(guān)系,有利于我們編程思考問題;中?,F(xiàn)實(shí)世界和軟件存在對應(yīng)關(guān)系,有利于我們編程思考問題;n易于軟件的維護(hù)和功能的增減易于軟件的維護(hù)和功能的增減。對象的封裝性及對象之間的松散組合,都給軟件的修改和。對象的封裝性及對象之間的松散組合,都給軟件的修改和維護(hù)帶來了方便。維護(hù)帶來了方便。n可重用性好??芍赜眯院?。重復(fù)使用一個(gè)類(類是對象的定義,對象是類的
6、實(shí)例化),可以比較方便地重復(fù)使用一個(gè)類(類是對象的定義,對象是類的實(shí)例化),可以比較方便地構(gòu)造出軟件系統(tǒng),加上繼承的方式,極大地提高了軟件開發(fā)的效率。構(gòu)造出軟件系統(tǒng),加上繼承的方式,極大地提高了軟件開發(fā)的效率。n與可視化技術(shù)相結(jié)合,改善了工作界面。與可視化技術(shù)相結(jié)合,改善了工作界面。隨著基于圖形界面操作系統(tǒng)的流行,面向?qū)ο蟮碾S著基于圖形界面操作系統(tǒng)的流行,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法也將深入人心。它與可視化技術(shù)相結(jié)合,使人機(jī)界面進(jìn)入程序設(shè)計(jì)方法也將深入人心。它與可視化技術(shù)相結(jié)合,使人機(jī)界面進(jìn)入GUI時(shí)代。時(shí)代。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)
7、的優(yōu)點(diǎn)面向?qū)ο蠡A(chǔ)面向?qū)ο蠡A(chǔ)面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念 類與對象 封裝 抽象 繼承 組合委托 多態(tài) 重載面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象什么是對象呢?一輛汽車:列舉其屬性:面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象n現(xiàn)實(shí)世界中的實(shí)物存在太多的屬性,不同的人關(guān)心的東西不一樣,所以我們把實(shí)物變成計(jì)算機(jī)世界的對象時(shí),注重的東西也不同;n對于我們編制軟
8、件也是一樣,對于不同的軟件系統(tǒng),根據(jù)需求,我們在對現(xiàn)實(shí)世界的同一個(gè)事物變成對象時(shí)關(guān)心的東西也不同; 所以提取的屬性也不同;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象 對象與類 對象:現(xiàn)實(shí)世界中某個(gè)具體的物理實(shí)體在計(jì)算機(jī)邏輯中的映射和體現(xiàn),其基本組成: 對象標(biāo)識 狀態(tài)(對象的靜態(tài)屬性) 行為(對象的操作) 類:對一組具有相同屬性、共同行為、共同關(guān)系和共同語義的對象的描述。描述了一類對象的狀態(tài)和行為,其基本成分包括: 成員變量 成員方法 舉例:人 抽象的人:人的共同的特征和能力; 具體的人:具體的人; 類就象模子,通
9、過模子可以生成不同的具體的具有這個(gè)類的特征和能力的對象;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象 對象、類和實(shí)體對象類實(shí)例化抽象計(jì)算機(jī)世界實(shí)體抽象數(shù)據(jù)類型現(xiàn)實(shí)世界抽象映射計(jì)算機(jī)邏輯的實(shí)現(xiàn)面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象 類和對象是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心概念。 如果把程序比作一臺儀器,則類和對象就是機(jī)
10、器的零部件,程序員通過設(shè)計(jì)、使用類及其對象來組裝程序。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象 學(xué)生信息管理系統(tǒng)中的實(shí)體:學(xué)生學(xué)生信息管理系統(tǒng)中的實(shí)體:學(xué)生 抽象數(shù)據(jù)描述:抽象數(shù)據(jù)描述: 數(shù)據(jù)描述:學(xué)號、姓名、性別、年齡;數(shù)據(jù)描述:學(xué)號、姓名、性別、年齡; 行為描述:入學(xué)注冊、選課。行為描述:入學(xué)注冊、選課。 C#中的類 C#中的對象 Public class StudentInt stuNumber; Student stu1=new Student();String stuName; Student stu
11、2=new Student();char sex;int age;void enrol() 面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象類聲明例子: Pubic class People Public class Plant “class people”和”class plant”稱為類聲明;”people”和” plant”分別是類名,習(xí)慣上類名第一個(gè)字母大寫,但不是必須的。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象 類的聲明類的聲
12、明類體類體成員變量成員變量成員方法成員方法面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象對象的創(chuàng)建和使用 對象是一個(gè)動態(tài)概念,具有產(chǎn)生、使用和消亡的生對象是一個(gè)動態(tài)概念,具有產(chǎn)生、使用和消亡的生命周期。命周期。 通過通過newnew操作符創(chuàng)建對象:操作符創(chuàng)建對象:StudentStudent 小強(qiáng)小強(qiáng)=new Student();=new Student(); 對象屬性的使用:對象屬性的使用: 對象名對象名. .屬性;屬性;小強(qiáng)小強(qiáng).age;.age; 對象方法的使用:對象方法的使用: 對象名對象名. . 方法方法(
13、)();小強(qiáng)小強(qiáng).enrol.enrol();();面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象示例程序Student.cs public Class StudentInt stuNumber; String stuName; char sex;int age;void register() String x= 是;Response.Write(學(xué)生+stuName+已注冊入學(xué));1. public class StudentTest1.public static void main(String args)2.S
14、tudent 小強(qiáng)=new Student();3.小強(qiáng).stuName=“何小強(qiáng);4.小強(qiáng).stuNumber=110011;5.小強(qiáng).sex=男;6.小強(qiáng).age=20;7.小強(qiáng).入學(xué)注冊();8.9.面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象對象的生命周期:New obj();在?分配空間初始化數(shù)據(jù)調(diào)用不再調(diào)用?面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之類與對象練習(xí): 請定義一個(gè)“電燈Elight”類。要求至少定義5個(gè)屬性,2個(gè)方法,
15、對現(xiàn)實(shí)世界中的電燈進(jìn)行模擬。 定義一個(gè)圖書館中的“書Book”類,并從它派生計(jì)算機(jī)computer類、生物biology類、科學(xué)science類,按你自己的理解給book類型分配屬性和方法。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝類型提供了強(qiáng)大的功能,那么: 如何實(shí)現(xiàn)信息的隱藏,保證數(shù)據(jù)的安全? 如果將不穩(wěn)定的或者無需公布的信息屏蔽? 如何保證客戶端的調(diào)用是有效的? 如何保證類型的接口簡單易用,客戶端無需關(guān)心實(shí)現(xiàn)細(xì)節(jié)? 如何保證類型的良好的可擴(kuò)展性?答案就是封裝、繼承和多態(tài)答案就是封裝、繼承和多態(tài)面向?qū)ο蟮幕舅枷牒头?/p>
16、法面向?qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝 訪問限定 Private-訪問僅限于包含類型 Protected-訪問僅限于包含類或從包含類派生的類型 Internal-訪問僅限于此程序 Protected internal -訪問僅限于此程序或從包含類派生的類型 Public-訪問不受限制面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之封裝示例:exampleForDotnetAndOOD.OODSamples.BasicCharacteristic. student面向?qū)ο蟮幕?/p>
17、思想和方法面向?qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象什么是抽象: 忽略非本質(zhì)問題,抓住本質(zhì)問題 忽略不同點(diǎn),提取共性 避免過早考慮細(xì)節(jié) 對細(xì)節(jié)的屏蔽 對具體類型的屏蔽 對相關(guān)類型功能的組織以提供更高層次的抽象面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象 過程抽象 任何一個(gè)完成確定功能的操作序列,其使用者都可以把它看作一個(gè)單一的實(shí)體,盡管實(shí)際上它可能是由一系列更低級的操作完成的。 數(shù)據(jù)抽象 數(shù)據(jù)抽象是根據(jù)施加于數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型,并限定數(shù)據(jù)的值只能由這些操作來修改和
18、觀察 。 數(shù)據(jù)抽象是OOA的核心原則。它強(qiáng)調(diào)把數(shù)據(jù)(屬性)和操作(服務(wù))結(jié)合為一個(gè)不可分的系統(tǒng)單位(即對象),對象的外部只需要知道它做什么,而不必知道它如何做。 面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象抽象是一種由具體到抽象、由復(fù)雜到簡潔的思維方式:面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象從問題領(lǐng)域的事物到軟件模型中對象的抽象從問題領(lǐng)域的事物到軟件模型中對象的抽象 在建立對象模形時(shí),分析問題領(lǐng)域中的實(shí)體,把它抽象為對象; 抽象階段并不考慮如何實(shí)
19、現(xiàn),更關(guān)注于定義 從對象到類的抽象 在建立對象模型時(shí),把具有相同屬性和功能的對象抽象為類從子類到父類的抽象 當(dāng)一些類之間具有相同的屬性和功能,把這部分屬性和功能抽象到一個(gè)父類中 不同子類之間具有相同的功能,并且功能的實(shí)現(xiàn)方式也完全一樣 不同子類之間具有相同的功能,但功能的實(shí)現(xiàn)方式不一樣 面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象抽象示例: 匯編是對二進(jìn)制指令的抽象,高級語言是對匯編的抽象,框架是對語言的抽象。 MIL是對匯編的抽象 中間件是對操作系統(tǒng)的抽象 .net framework,J2EE規(guī)范是開發(fā)平臺的抽象面向?qū)?/p>
20、象的基本思想和方法面向?qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之抽象 習(xí)題:現(xiàn)在要開發(fā)一個(gè)簡單的繪圖軟件,可以抽象出來的概念有哪些?并分別說明理由;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承基本概念: 繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)之上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。 繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同于其它語言的最重要的特點(diǎn),是其他語言所沒有的。
21、面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承繼承類型: 在類層次中,子類只繼承一個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承; 在類層次中,子類繼承了多個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承; 注意,CLR支持的語言并不支持多重繼承,非托管C+支持多重繼承,多重繼承會帶來復(fù)雜性,CLR通過接口實(shí)現(xiàn)多重繼承。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承繼承的好處: 提供了類的規(guī)范的層次結(jié)構(gòu) 通過類的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。 類的繼承
22、性使所建立的軟件具有開放性、可擴(kuò)充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量。 為軟件提供了較好的可擴(kuò)展性。面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承繼承的類型: 類繼承 類派生 接口繼承 接口實(shí)現(xiàn) 何時(shí)使用類繼承,何時(shí)使用接口繼承面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承繼承的不足: 難以定義穩(wěn)定的抽象樹 繼承層次過多會嚴(yán)重影響性能以及增加程序的復(fù)雜度 父的修改對子的影響非常大 封裝要求更高,對允許子類覆蓋的信息有嚴(yán)格的
23、定義; 重用難面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之繼承示例: exampleForDotnetAndOOD.OODSamples.BasicCharacteristic.inherit.cs練習(xí):定義一個(gè)純抽象類myBooks,自定抽象類的數(shù)據(jù)和行為,并從myBooks派生scienceBooks,computerBooks,mathBooks等多個(gè)子類,并編譯通過;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之組合委托面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之組合委托組合委托: 優(yōu)先使用組合,而不
24、是類繼承 打破傳統(tǒng)的繼承層次,定義更小粒度的可重用對象; 程序具有更好的可擴(kuò)展性; 依賴于接口,不依賴于實(shí)現(xiàn),減小類之間的耦合度; 可重用性大大提高;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài) 多態(tài)是一種機(jī)制和能力,它是一種類型可以表現(xiàn)為多種從它派生的類型的能力; 它可以以一定的規(guī)則表現(xiàn)為多種形態(tài); 為軟件提供了無限可能的擴(kuò)展性;面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài)理解多態(tài)之示例: exampleForDotnetAndOOD.OODSamp
25、les.BasicCharacteristic.multiStates.cs面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之多態(tài)多態(tài)的原理: 跟繼承不同,多態(tài)是父表現(xiàn)為子,繼承是子對父的調(diào)用. 將子類類型的指針賦值給父類類型的指針,是指針的引用. 多態(tài)是依賴于虛virtual函數(shù)(后期綁定)來實(shí)現(xiàn)的,即運(yùn)行時(shí)確定對象的類型.面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之方法重載面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之方法重載重載的意義: 同名方法,參數(shù)不同 保證已有代碼的穩(wěn)定性 提升代碼的擴(kuò)充性面向?qū)ο蟮幕?/p>
26、思想和方法面向?qū)ο蟮幕舅枷牒头椒?-面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之方法重載面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念之方法重載可重載的對象:n運(yùn)算符n方法n函數(shù)n構(gòu)造函數(shù)示例:exampleForDotnetAndOOD.OODSamples.BasicCharacteristic.overload1面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-深入理解構(gòu)造方法深入理解構(gòu)造方法 是類和對象生命周期重要的部分 類構(gòu)造 對象構(gòu)造面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-深入理解構(gòu)造方法深入理解構(gòu)造方法 重載構(gòu)造方法 默認(rèn)構(gòu)造方法 子類調(diào)用父類的構(gòu)造方法 構(gòu)造方法的作用域 構(gòu)造方法的訪問級別 面向?qū)?/p>
27、象的基本思想和方法面向?qū)ο蟮幕舅枷牒头椒?-深入理解構(gòu)造方法深入理解構(gòu)造方法重載構(gòu)造方法:public class Sample private int x;public Sample() / 不帶參數(shù)的構(gòu)造方法this(1); public Sample(int x) /帶參數(shù)的構(gòu)造方法this.x=x;public int Sample(int x) /不是構(gòu)造方法return x+;Public class client Sample mySample=new Sample();mySample=new Sample(10);面向?qū)ο蟮幕舅枷牒头椒嫦驅(qū)ο蟮幕舅枷牒头椒?-深入理解構(gòu)造方法深入理解構(gòu)造方法默認(rèn)構(gòu)造方法是沒有參數(shù)的構(gòu)造方法,可分為兩種: 隱含的默認(rèn)構(gòu)造方法 自動提供的構(gòu)造方法,思考系統(tǒng)自動提供的構(gòu)造思考系統(tǒng)自動提供的構(gòu)造方法主要完成什么工作?方法主要完成什么工作? 程序顯式定義的默認(rèn)構(gòu)造方法 如果類中顯式定義了一個(gè)或多個(gè)構(gòu)造方法,并且所有的構(gòu)造方法都帶參數(shù),那么這
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年健康管理2025年長期照護(hù)服務(wù)模式與養(yǎng)老產(chǎn)業(yè)市場拓展策略分析及建議報(bào)告
- 新能源汽車用數(shù)據(jù)支撐分析試題及答案
- 電動汽車用戶行為分析的新視角試題及答案
- 汽車內(nèi)飾設(shè)計(jì)創(chuàng)新與消費(fèi)者偏好研究報(bào)告
- 體育休閑廣場配套設(shè)施建設(shè)標(biāo)準(zhǔn)與規(guī)范評估報(bào)告
- 電動汽車?yán)m(xù)航能力提升的科學(xué)研究試題及答案
- 未來電動車的科研與教育合作新模式研究試題及答案
- 蕪湖理論考試試題及答案
- 教師反思與教育技術(shù)的結(jié)合應(yīng)用試題及答案
- 幼兒園簡單數(shù)學(xué)推理與觀察題目及答案
- 110kV電纜交流耐壓試驗(yàn)方案
- 動力源開關(guān)電源說明書-dkd51系統(tǒng)維護(hù)手冊
- 手弧焊的基本操作
- 新概念英語青少版-2B全單元課件-unit-25(共32張)
- 初中八年級上冊信息技術(shù)《用Python編程》教學(xué)設(shè)計(jì)
- 施工項(xiàng)目安全交底確認(rèn)書
- 國際機(jī)票后端引擎緩存系統(tǒng)架構(gòu)
- 貴州干部履歷表(2023版)
- 消火栓月檢查表
- 高血壓腦病-PPT課件
- 人防工程竣工資料(全套)
評論
0/150
提交評論