【文档说明】面向对象技术课件.ppt,共(66)页,674.218 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44885.html
以下为本文档部分文字说明:
面向对象技术课件相关信息教师:余萍Email:yuping@nju.edu.cnOffice:仙林计算机系大楼818助教课程网页:http://cs.nju.edu.cn/yuping/2022/11/24InstituteofComp
uterSoftwareNanjingUniversity2引言摘要课程简介--“选不选这门课?”背景概述--“所学内容在专业知识结构中的位置?”2022/11/24InstituteofComputerSoftwareNanjingUniversity4欢迎选修“面
向对象技术”!通过选修本课程,可以更深入地掌握面向对象的基本原理更广泛地了解面向对象的新兴技术更自信地面对实际开发的技术需求获取2个学分2022/11/24InstituteofComputerSoftwareNanjingUniversity5课程性质不是又一门语言/编程课虽
然在C++/Java之外还会提到别的语言,如Eiffel不是一般意义上的软件工程课但讲授面向对象软件开发的实用技术不属于理论计算机科学但会利用一些较成熟易用的理论工具2022/11/24InstituteofComputerSoftwareNanjin
gUniversity6课程目标用OOPL写代码→OOP→OOSC朴素的OOP→系统化的OOP传统OO技术→现代的OO技术BeyondOO2022/11/24InstituteofComputer
SoftwareNanjingUniversity7课程内容主要包括但不限于:面向对象的起源及其动机面向对象的设计契约式设计设计原则设计模式应用框架高级面向对象技术持久对象,并发对象,分布对象…面向对象的发展软件构件面向方面程序设计…2022/11/24Institut
eofComputerSoftwareNanjingUniversity8教材与参考资料徐家福,王志坚,翟成祥等,《对象式程序设计语言》,南京大学出版社,1993年2月。BertrandMeyer,O
bject-OrientedSoftwareConstruction,SecondEdition,PrenticeHall,1997.清华大学出版社影印。JoltAward19982022/11/24InstituteofComputerSoftw
areNanjingUniversity9教材与参考资料RichardMitchellandJimMckim.DesignbyContract,byExample.ErichGamma,RichardHelm,Ra
lphJohnsonandJohnVlissides,DesignPatterns:ElementsofReusableObject-Orientedsoftware,Addison-Wesley,1994.RobertC.Martin.A
gileSoftwareDevelopment,Principles,PatternsandPractices,2003.ClemensSzyperski.ComponentSoftware:BeyondObject-Orie
ntedProgramming.Addison-Wesley,2ndedition,2002.JosephD.Gradecki,NicholasLesiecki.MasteringAspectJ.2022/11/
24InstituteofComputerSoftwareNanjingUniversity10考核方式笔试50%闭卷平时50%其中书面作业,课堂表现25%(态度第一)开发练习25%(一个月后公布具体要求)主动Present
ation约20-30%(额外加分)理论探索,学习心得,实践经验均可2022/11/24InstituteofComputerSoftwareNanjingUniversity11有何建议课程内容?授课方式?考核方式?其他?2022/11/2
4InstituteofComputerSoftwareNanjingUniversity12背景概述摘要从软件到软件工程软件质量前对象时代结构化程序设计面向对象思想的兴起模块化软件复用2022/11/24InstituteofComputerS
oftwareNanjingUniversity14软件概念一系列按照特定顺序组织的数据和指令的集合程序+文档程序:计算任务的处理对象和处理规则的描述文档:为了便于了解程序所需的阐明性资料特点本
质上是逻辑产品现实中受多方制约2022/11/24InstituteofComputerSoftwareNanjingUniversity15软件:逻辑产品基础:图灵机,1936冯·诺依曼结构,19452022/11/24InstituteofComputerSoftwareNanjin
gUniversity16AlanTuring:抽象计算模型(数学逻辑机)软件:逻辑产品存储程序计算机在体系结构上主要特点有:以运算单元为中心采用存储程序原理存储器是按地址访问、线性编址的空间控制流由指令流产生指令由操作码和地
址码组成数据以二进制编码2022/11/24InstituteofComputerSoftwareNanjingUniversity17软件:多方制约作为一种“工程”目的性资源物理运行平台工程问题质量、生
产率根源:复杂性软件工程:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。2022/11/24InstituteofComputerSoftwareNan
jingUniversity181969,NATO会议软件危机软件通常而言,“质量”与“生产率”是一对矛盾我们首先来考虑“质量”。有趣的是,在软件领域,对“质量”的重视有时竟然会带来“生产率”的提升!说明软件工
程远未成熟,二者的“共同底线”还未达到。2022/11/24InstituteofComputerSoftwareNanjingUniversity19软件质量何谓“质量”?产品或工作的“优劣程度”何为“优”?何为“劣”?可从“外部”和“内部”两个不同的侧面
来考察软件产品(Meyer,McCall)外部质量因素:用户直接感觉到的内部质量因素:用户不能直接发觉,体现在软件“文本”(源码、设计报告、分析报告等)中Beingmodular;readable…2022/11/24Instituteo
fComputerSoftwareNanjingUniversity20外部质量因素Correctness正确性依据规约完成任务Robustness鲁棒性异常情况合理反应Integrity完整性非法访问或修改合理反应Extendibility易扩展性软件产品应规约改变而改变
Reusability易复用性软件模块用于构建多种不同应用2022/11/24InstituteofComputerSoftware,NanjingUniversity21Reliability可靠性RobustnessSPECIFIC
ATIONCorrectnessIntegrity外部质量因素Compatibility兼容性软件模块相互组合的难易Efficiency高效性尽量少地使用硬件资源处理器时间内存外存网络带宽等Port
ability易移植性转换到不同的软硬件平台上Easeofuse易用性不同背景的用户学习使用软件产品解决问题的难易2022/11/24InstituteofComputerSoftwareNanjingUniversity22外部质量因素Functi
onality功能Timeliness按时交付Verifiability,Reparability,Economy2022/11/24InstituteofComputerSoftwareNanjingUniversity23维护费用分类2
022/11/24InstituteofComputerSoftwareNanjingUniversity24[Lientz1980]软件70%的费用花在维护上!Tradeoffs鱼与熊掌不可得兼权衡折中软件技术研究的常见主题:在何种条件下以何种方式鱼与熊掌可
以得兼?在何种条件下拿部分鱼换取更多熊掌?何时反之?2022/11/24InstituteofComputerSoftwareNanjingUniversity25KeyConcernsReliability[c
orrectness+robustness]:Itshouldbeeasiertobuildsoftwarethatfunctionsproperly,andeasiertoguaranteewhatitdoes.Modularity[reusability+extendibility]:W
eshouldbuildlesssoftware!Softwareshouldbeeasiertomodify.2022/11/24InstituteofComputerSoftware,NanjingUniversity26应对软件危机开发的角度:分析、设计
方法的研究前对象时代StructuredProgramming/Design/Analysis管理的角度:软件开发过程的工程化生命周期模型瀑布模型,快速原型法,螺旋模型,喷泉模型等2022/11/24Inst
ituteofComputerSoftwareNanjingUniversity27复杂性是软件开发过程中所固有的特质。[Booch94]应对复杂性的基本途径“元方法”分解Decomposition分而治之抽象Abstra
ction抓本质,抓重点层次化Hierarchy应对大系统,纲举目张2022/11/24InstituteofComputerSoftwareNanjingUniversity28结构化开发方法何谓“结构化”?结构化程序设计设计过程程序组织语句构造结构化结构
化分析设计数据流图数据字典模块结构图结构化的好处科学化可读性模块化信息隐蔽...2022/11/24InstituteofComputerSoftwareNanjingUniversity29结构化开发方法自顶向下(Top-down)的功能设计2022/11/24InstituteofCo
mputerSoftwareNanjingUniversity30ABDCC1I1C2I2ITopmostfunctionalabstractionLoopConditionalSequence自顶向下,逐步求精软件生命周期模型202
2/11/24InstituteofComputerSoftware,NanjingUniversity31FEASIBILITYSTUDYREQUIREMENTSANALYSISSPECIFICATIONGLOBALDESIGND
ETAILEDDESIGNIMPLEMENTATIONDISTRIBUTIONVALIDATION&VERIFICATION瀑布型PROJECTPROGRESSProblemswiththewaterfallLateappearanceofactualcode.Lackofsupportfo
rrequirementschange—andmoregenerallyforextendibilityandreusability.Lackofsupportforthemaintenanceactivity(70%ofsoftwar
ecosts).DivisionoflaborhamperingTotalQualityManagement.Impedancemismatches.Highlysynchronousmodel.2022/11/24Instituteof
ComputerSoftware,NanjingUniversity32WARNING:ThewaterfallmodelisnottherecommendedprocessmodelforO-OdevelopmentQua
lityControl?2022/11/24InstituteofComputerSoftware,NanjingUniversity33AnalystsDesignersImplementersTestersCusto
mersImpedancemismatches34AsManagementrequestedit.AstheProjectLeaderdefinedit.AsSystemsdesignedit.AsProgrammingdevelopedit.AsOp
erationsinstalledit.Whattheuserwanted.软件模块化概念模块(module):“Self-Contained”;well-definedinterfaces模块化(modular):软件构造为一组“模块”之有序组合,从而易于装配、易
于修补替换模块。Extendibility和Reusability的要求;模块化是上述“元方法”的推论。什么样的方法是“模块化”的?目标(FiveCriteria)规则(FiveRules)2022/11/24InstituteofCo
mputerSoftwareNanjingUniversity35FiveCriteriaDecomposability易分解性Composability易组合性Understandability易理解性Continuity连续性Protectio
n保护性2022/11/24InstituteofComputerSoftwareNanjingUniversity36易分解性DecomposabilityMethodhelpsdecomposecomplexproblemsintosubproblems.COROLLARY:Divisi
onoflabor.Counter-example:Generalinitializationmodule.2022/11/24InstituteofComputerSoftwareNanjingUniversity37易组合性Compos
abilityMethodfavorsproductionofsoftwareelementsthatmaybefreelycombinedwitheachothertoproducenewsoftware.Example:Unixshellconvent
ionsProgram1|Program2|Program32022/11/24InstituteofComputerSoftwareNanjingUniversity38易理解性Understandabilit
y模块应可单独理解不能牵涉太广自描述Counterexample:sequentialdependenciesA|B|C2022/11/24InstituteofComputerSoftwareNanjingUniversity39连
续性ContinuityMethodensuresthatsmallchangesinspecificationsyieldsmallchangesinarchitecture.Designmethod:SpecificationArchitectureCounter
example:staticarrays2022/11/24InstituteofComputerSoftwareNanjingUniversity40模块保护Protection异常不扩散扩散范围有限Example:validatinginputatt
hesourceCounterexample:undisciplinedexceptions2022/11/24InstituteofComputerSoftwareNanjingUniversity41Protectionviolation
FiveRulesDirectMapping直接映射FewInterfaces接口要少SmallInterfaces接口要小ExplicitInterfaces接口要明确InformationH
iding信息隐蔽2022/11/24InstituteofComputerSoftwareNanjingUniversity42降低耦合度直接映射DirectmappingMethodyieldssoftwaresystemswhosemodularstructureremainscompa
tiblewithanymodularstructuredevisedintheprocessofmodelingtheproblemdomain.2022/11/24InstituteofComputerSo
ftwareNanjingUniversity43StructureoftheproblemStructureofthesolutiondirectmappingmodelsoftwareFewinterfacesEverymodulecommuni
cateswithasfewothersaspossible.2022/11/24InstituteofComputerSoftwareNanjingUniversity44(A)(B)(C)n-1n(n-1)/2n-1SmallinterfacesIftwomodulescommunica
te,theyexchangeaslittleinformationaspossible.2022/11/24InstituteofComputerSoftwareNanjingUniversity4
5x,yzExplicitinterfacesWhenevertwomodulesAandBcommunicate,thisisobviousfromthetextofAorBorboth.Counterexample:datasharing2022/11/24Inst
ituteofComputerSoftwareNanjingUniversity46ModuleAModuleBDataitemxModifiesAccessesInformationhidingUnderlyingquestion:howdoesone“advertise”
thecapabilitiesofamodule?Everymoduleshouldbeknowntotheoutsideworldthroughanofficial,“public”interface.Therestofthemodule’spropertiescomprisesit
s“secrets”.Itshouldbeimpossibletoaccessthesecretsfromtheoutside.2022/11/24InstituteofComputerSoftwareNanjingUniversity47InformationHidingThedesig
nerofeverymodulemustselectasubsetofthemodule’spropertiesastheofficialinformationaboutthemodule,tobemadeavailabletoauthorsofclientmo
dules.2022/11/24InstituteofComputerSoftwareNanjingUniversity48SecretpartPublicpart模块模块的根本特征是“相对独立,功能单一”。换言之,一个好的模块必须具有高度的独立性和相对较强的功能。“
耦合度”和“内聚度”耦合度,是指模块之间相互依赖性大小的度量,耦合度越小,模块的相对独立性越大。内聚度,是指模块内各成份之间相互依赖性大小的度量,内聚度越大,模块各成份之间联系越紧密,其功能越强。在模块划分应当做到
“耦合度尽量小,内聚度尽量大”。2022/11/24InstituteofComputerSoftwareNanjingUniversity49软件复用为什么要复用?复用什么?问题非技术技术解决途径?2022/11/24InstituteofCo
mputerSoftwareNanjingUniversity50为什么要“复用”“懒惰”提高生产率改善质量2022/11/24InstituteofComputerSoftwareNanjingUniversity51复用什么人设计,规
约设计模式体系结构应用框架源码级复用封装模块(抽象描述)2022/11/24InstituteofComputerSoftwareNanjingUniversity52非技术障碍心理不信任旧习惯短期利益构件检索构件发布与商业模型2022/11/24InstituteofCom
puterSoftwareNanjingUniversity53技术问题复用的本质困难通常不能一成不变地拿来就用ReusabilityExtensibility软件的开放性要求和封闭性要求之间的冲突openforextensi
on,butclosedformodification对象技术比传统技术有明显改善为什么?2022/11/24InstituteofComputerSoftwareNanjingUniversity54传统
技术复用支持过程Routine成功应用:数值计算函数库问题明确规约简单问题相互独立数据结构相对简单不足:对adaption的支持弱若要一个routine支持多种variants则需好多参数一个routine支持一种variant则没有抽取出公共行为.2022/11
/24InstituteofComputerSoftwareNanjingUniversity55传统技术复用支持包packageLinguisticModularUnitFeatures(变量过程)信息隐蔽单独编译2022/11
/24InstituteofComputerSoftwareNanjingUniversity56Encapsulationlanguages(“Object-based”)Ada,Modula-2,CLU...Basicide
a:gatheragroupofroutinesservingarelatedoo-purpose,suchashas,insert,removeetc.,togetherwiththeappropriatedatastructuredescriptions.Adva
ntages:Forsupplierauthor:Geteverythingunderoneroof.Simplifiesconfigurationmanagement,changeofimplemen
tation,additionofnewprimitives.Forclientauthor:Findeverythingatoneplace.Simplifiessearchforexistingroutines,requestsforextensions.2022/11
/24InstituteofComputerSoftware,NanjingUniversity57传统技术复用支持包作为复用单元的不足类型、模块分离多类型支持?抽取共性?2022/11/24InstituteofCompu
terSoftware,NanjingUniversity582022/11/24InstituteofComputerSoftwareNanjingUniversity59面向对象开发方法按照人们通常的思维方式建立问题领域的模型,
设计出尽可能自然的表示求解方法的软件。现实问题空间物质意识面向对象解空间对象(客观存在)类(抽象概念)从现实问题空间直接映射2022/11/24InstituteofComputerSoftwareNanjingUniversity60基本思想要点1:任何事物都是对象,
对象有属性和方法。复杂对象可以由相对简单的对象以某种方式构成。要点2:通过类比发现对象间的相似性,即对象间的共同属性,是构成对象类的依据。要点3:对象间的相互联系是通过传递“消息”来完成的。通过对象之间的消息通信驱动对象执行一系列的操作从而完成某一任务。202
2/11/24InstituteofComputerSoftwareNanjingUniversity61基本概念对象类封装性继承性多态性动态绑定消息传递特性2022/11/24InstituteofComputerSoft
wareNanjingUniversity62面向对象方法vs结构化方法优点模块化,信息隐藏与抽象自然性并发性重用性面向对象方法使得软件具有良好的体系结构、便于软件构件化、软件复用和良好的扩展性和维护性,抽象程度高,因而具有较高的生产效率。软件工程发展的历史
就是人们不断追求更高的抽象、封装和模块化的历史。小结构建高质量的软件系统是我们的目标随着软件的广泛应用及其规模的不断增长,软件的易扩展性和易复用性愈发关键在模块化和复用性两个方面传统技术存在不足
面向对象模型提供了较好的解决方案2022/11/24InstituteofComputerSoftwareNanjingUniversity63作业1.发送邮件To:yuping@nju.edu.cn主题:选修面向对象技术内容:姓名和学号对课程内容
、授课方式等的任何建议(重要)2022/11/24InstituteofComputerSoftware,NanjingUniversity64作业2.使用Wikipedia,查阅以下一些词条并翻译1.Programmingparadigm2.StructuredProgramm
ing3.Object-OrientedProgramming注意:Wikipedia是一个重要的信息源。科技类词条的可靠性很高,虽然未必详尽。但亦不可尽信,不可作为严谨学术研究的文献依据。3.为什么面向对象方法在模块化和复用性方面优于传统方法?PS:作业提
交方式:纸面或电子邮件2022/11/24InstituteofComputerSoftwareNanjingUniversity65