第6章-面向对象方法学及UML-part1

第6章-面向对象方法学及UML-part1
第6章-面向对象方法学及UML-part1

第六章面向对象方法学及UML

2014-10-13

?面向对象方法学概述

?传统软件工程方法学的特点和局限性分析?特点分析

5?系统功能→各模块执行顺序和模块间调用关系

物理部件

数据结构、处理(变换)

功能分解为核心可行性研究

需求分析

概要设计

详细设计

导出

阶段工具方法

需求分析数据模型功能模型行为模型结构化分析方法

(SA: structured analysis)数据字典数据流图状态转换图

可行性研究

需求分析

概要设计

详细设计

实现

集成测试

确认测试

使用与维护

软件

定义

11

?不太适应规模大、特别

功能分解与集成

为主导任务?面向对象技术的基本观点

面向对象= 对象+ 类+ 继承+ 消息通信?对象(object)

对象= 数据+ 操作(方法/服务)

?类是具有相同属性和操作的一组对象的集合

class <类名>

class student

属性是对客观世界实体所具有的性质的抽象,是类中所定义的数据

?方法是对象所能执行的操作,描述对象的行为?类成员函数(方法)之定义

void student::input(char newname[3],int newage,char newsex) {

for(int i=0;i<=2;i++)

实例是某个特定类描述的一个具体对象{类声明}<对象名>;

类名{class student {

class date {

private:

构造函数

类名:: 类名(形参表列){

函数体

?实例化后对数据成员和成员函数的访问

?消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明

?抽象(abstraction)

?抽象是指识别和关注当前状况或物体的主要特征,忽略非本质信息。

抽象层次结构示例

军用船民用船

巡洋舰驱逐舰…商船非商船

客轮货船渔船…拖船…

海上客轮渡轮江轮

31?封装是把对象的状态和行为(属性和操作)结合在一起;并尽可能地隐藏对象的内部细节,与外界的联系只能通过外部接口来实现。

?继承是以已存在的定义为基础建立新定义的技术,新类的定义可以是既存类的声明和新类所加声明

?复用:子类(特化类、派生类)自动地共享父类(泛类化类、基类)中定义的数据和方法的机制。

class student{ //学生类

private:

int ID; //学号

char*name; //姓名class Ustudent: public student{ //大学生类private:

char major; //专业

若类C继承类B、类B继承类A,则类C继承类A (超类)。其中子类继承它所在类等级中在它上层的全部基类的特性。

客轮类

海上客轮类

?一个继承允许有多个父类,此时子类组合其所有父类的性质

?多态性指同样的消息为不同的对象所接受时可导致完全不同的行为结果。

?父类与其多个派生类具有相同名称的成员函数,可以使用相同的调用方式来调用这些子类具有不

(重载,overloading)

?函数重载:在同一作用域内,用同一函数名可定义多个参数特征不同(参数类型、参数个数或函数返

传统方法学与面向对象区别

小议传统方法学与面向对象的区别 姓名:戴育兵 学号:G1030510 年级 :大二 班级: .net(2)班

摘要 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simdla_67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。

软件工程传统方法学 1.传统方法学概述 随着计算机应用领域的不断拓广,各种各样的问题也不断涌现,当问题严重到开发人员无法控制的时候便产生了软件危机。软件危机的出现,促使了软件工程学的形成和发展。随之整合整套技术的软件工程方法学广泛应用,主流之一就是传统方法学。传统方法学在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。如果说自然语言和编程语言之间有一道难以跨越的鸿沟,传统方法学就是跨越这道鸿沟的桥梁。 传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。 传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。在描述事物方面,它具有一套表示体系和文档规范。但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。 在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。 编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统,测试是发现和排除程序中的错误,最终产生一个正确的系统。但是由于分析方法的缺陷很容易产生对问题的错误理解,而分析与设计的差距很容易造成设计人员对分析结果的错误转换,以致在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生不同的理解。因此为了使两个阶段之间能够更好的衔接,测试就变得尤为重要。 软件维护阶段的工作,一是对使用中发生的错误进行修改,二是因需求发生了变化而进行修改。前一种情况需要从程序逆向追溯到发生错误的开发阶段。由于程序不能映射问题以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。第二种情况是一个从

软件设计师面向对象方法学(一)

[模拟] 软件设计师面向对象方法学(一) 选择题 第1题: 下列关于静态多态实现重载的描述中正确的是______。 A.重载的方法(函数)的方法名(函数名)可以不同 B.重载的方法(函数)必须在返回值类型以及参数类型上有所不同 C.重载的方法(函数)必须在参数顺序或参数类型上有所不同 D.重栽的方法(函数)只需在返回值类型上有所不同 参考答案:C 第2题: 程序设计语言提供了基本类型及其相关的操作,而______则允许开发者自定义一种新的类型及其相关的操作。 A.对象 B.实例 C.类 D.引用 参考答案:C 第3题: ______表示了对象间“is-a”的关系。 A.组合 B.引用 C.聚合 D.继承 参考答案:D 第4题: 若对象A可以给对象B发送消息,那么______。 A.对象B可以看见对象A B.对象A可以看见对象B C.对象A、B相互不可见

D.对象A、B相互可见 参考答案:B 第5题: 类描述了一组对象共同的特性,下列叙述中正确的是______。 A.类本身不能具有变量 B.对象具有类定义的所有变量的一份拷贝 C.对象间不能共享类定义的变量 D.可通过类名访问静态变量(类变量) 参考答案:D (6) 反映了类间的一种层次关系,而(7) 反映了一种整体与部分的关系。 第6题: A.继承 B.组合 C.封装 D.多态 参考答案:A 第7题: A.继承 B.组合 C.封装 D.多态 参考答案:B 第8题: 下列叙述中正确的是______。 A.d西向对象程序设计语言都不支持过程化的程序设计 B.面向对象系统只可采用面向对象程序设计语言实现 C.某些过程化程序设计语言也可实现面向对象系统

面向对象方法学概述资料

9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。 9.1 面向对象方法学概述 9.1.1 面向对象方法学的要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。 面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。应该使这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。

概括地说,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传统方法的功能分解。 (2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。 重点:如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。 9.1.2 面向对象方法学的优点 1. 与人类习惯的思维方法一致 2. 稳定性好 3. 可重用性好(重点) 用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。

面向对象方法学试题及答案

C++程序设计试题(下)样卷(卷面50分) (考试用时100分钟) 一、选择题(每题1分,共5分) 1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是。 A.为屏幕显示和文件写入各自设计一个成员函数。 B.为屏幕显示和文件写入统一设计一个成员函数。 C.重载插入运算符(<<)。 D.重载提取运算符(>>)。 2.关于异常处理,那些说法是错误的。 A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。 B.当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。 C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。 D.catch子句实际是一个特殊的函数。 3.下列关于动态资源分配的说法中错误的是。 A.动态分配的资源不仅包括内存,还包括文件。 B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。C.动态分配的资源通常要求在析构函数中释放。 D.对含有动态分配的数据成员的类对象应该采用深复制。 4.下列有关模板的描述那些是错误的。 A.模板把数据类型作为一个设计参数,称为参数化程序设计。 B.模板参数除模板类型参数外,还有非类型参数。 C.类模板与模板类是同一概念。 D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。 5.关于多态,下面那些说法是正确的。 A.多态分静态的(编译时)和动态的(运行时)。 B.运行时的多态与类的层次结构有关。 C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。 二、填空题(每空0.5分,共5分) 1.有标准字符串类string对象str,str1,str2。对其字符元素的访问可用两种方式:str[i]和str.at(i)。两者的区别是(1)。str1+=str2 实现的运算是(2)。str.substr(pos,length1) 实现的运算是(3)。

4面向对象方法学

第 1 页 第四讲 面向对象方法学 生命周期方法学回顾 1、 生命周期方法学的特点 生命周期方法学是一种传统的软件工程方法学,其主要特点是: 严格的分阶段计划 以时间分解为基础来控制和管理整个软件开发过程的,将软件开发过程划分为许多首尾相接、相互独立的阶段。 “瀑布式”开发模式 软件开发阶段在时间上严格地实施顺序,不能反复。每个阶段完成后才进行下一个阶段的工作,并且前一个阶段的成果作为下一个阶段工作开始的依据。 严格的技术审查和管理复审 在软件开发的每一个阶段结束后,进行严格的技术审查和管理复审,排除所有潜在的错误,保证瀑布模型的实施,并从成本和进度上管理和控制软件开发。 结构化技术 结构化技术内涵为“自上而下,逐步求精”,生命周期方法学在各个阶段采用结构化技术,包括结构化分析、结构化设计、结构化程序设计等。 从以上特点可以看出,生命周期方法学是以软件功能为基础来进行软件开发的,面向的软件实体由一段段可执行的程序代码组成,并以模块作为基本的软件结构体,可以由程序代码的运行来实现所需的软件功能,满足用户的需求。 也正是由于生命周期方法学的以上特点,使得它在软件工程实践中也暴露出 了许多问题: 对功能需求分析的依赖 生命周期方法学的软件开发成果对于功能需求分析有很强的依赖性,要求需求分析阶段的结果一定要全面、准确、清晰,不能有任何错误或模糊的东西。而一旦对需求分析中确定的需求进行了任何改变,都会直接影响到整个软件的设计和实现,对软件进行的修改要付出很大的代价。 但是在实际操作过程中,一方面用户很难一次性地写出既完善又正确无误的功能要求,另一方面所确定的功能要求,又有可能随着时间的变化或者用户对系统理解的逐步深入发生变化。这种软件功能需求的变化在实际软件项目的开发过程中是不可避免和屡见不鲜的,但它对生命周期方法学来说又是灾难性的,这使 得生命周期方法学在软件开发实践中往往处于被动的地位。 软件重用性差 如果某个软件开发中的成果不能够保存下来,并且在其它软件的开发过程中得到应用,那么对于软件开发的生产力来说,就是一种极大的浪费。使软件开发中产生的成果能够被别的软件项目所利用,称为软件的重用性。 在生命周期方法学中,对软件进行模块划分,是致力于提高软件重用性的一种努力。软件模块具有相对独立的功能,能够完成对信息的某一种处理,因此理论上可以被别的用到相同功能的软件所使用。但各种不同的软件系统中,完全相同的功能是很难见到的,总会因为数据类型、处理细节、允许范围等等原因存在

面向对象方法学大作业(学生成绩管理系统)

1.数据库 1.1.表:Scores 注:学号格式为01070833,专业+年份+班级+序号。 2.SSMS(Students` Scores Management System)程序结构 2.1.Model层 Scores.java 类型:类 作用:对象实体的持久化类。 2.2.Dao层 ScoresDao.java 类型:接口 作用:数据库连接层的接口类。 ScoresDaoImpl.java 类型:类 作用:数据库连接层接口类的实现类。 ScoresDao.xml

类型:XML文件 作用:负责与数据库交互的SQL语句的存放。 2.3.Service层 SSMSService.java 类型:接口 作用:业务逻辑层的接口类。 SSMSServiceImpl.java 类型:类 作用:业务逻辑层接口类的实现类。 2.4.Action层 SSMSAction.java 类型:类 作用:接收用户从页面上传递回来的信息,并传递到业务逻辑层。 2.5.Web页面 Index.jsp 类型:JSP页面 作用:负责给用户展示的页面。 2.6.Spring配置文件 applicationContext.xml 类型:XML文件 作用:负责Spring参数的配置。 2.7.Struts配置文件 struts-config.xml 类型:XML文件

作用:负责Struts参数的配置。 3.UML用例图 4.设计说明 4.1.添加学生成绩 4.1.1.类图

4.1.2.时序图 4.2.编辑学生成绩4.2.1.类图 Scores -----StuId StuName ObjSco1 ObjSco2 ObjSco3 : String : String : int : int : int +Add () ... : ActionForm SSMSServiceImpl +Add () ... : int ScoresDaoImpl +Add () ... : int ScoresDao +Add () ... : int SSMSService +Add () ... : int

软件设计师分类模拟题面向对象方法学(一)有答案

软件设计师分类模拟题面向对象方法学(一) 单项选择题 1. 已知3个类A、B和C,其中类A由类B的一个实例和类C的一个或多个实例构成。能够正确表示类A、B和C之间关系的UML类图是______。 A. B. C. D.

2. 在uML语言中,图5-3中的a、b、c三种图形符号按照顺序分别表示______。 A.边界对象、实体对象、控制对象 B.实体对象、边界对象、控制对象 C.控制对象、实体对象、边界对象 D.边界对象、控制对象、实体对象 答案:C 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用 3 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 4 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 5 设计模式将该类的接口转换成我们希望的接口。3. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight)

4. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight) 答案:D 5. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight) 答案:B 6. 下列关于一个类的静态成员的描述中,不正确的是______。 A.该类的对象共享其静态成员变量的值 B.静态成员变量可被该类的所有方法访问 C.该类的静态方法只能访问该类的静态成员变量 D.该类的静态数据成员变量的值不可修改 答案:D

易语言面向对象学习.

易语言面向对象学习 当前有很多编程语言都是支持面向对象的,如:DELPHI、VC++、JA V A等,但大家对于概念性的一些内容,取很难去理解、学习,有的学习者因为概念入不了门,使得放弃了进一步深入学习。现在,易语言3.8版也支持类(Class)了,因此,本文通过介绍易语言的面向对象的概念,使大家更加容易地学习了解,再去学习其它语言中的相关知识就不会那么难了。 一.枯燥的理论 1.对象和类 要讨论“面向对象”,大家必须首先搞懂什么是“对象”。面向对象编程语言中的“对象”概念和我们日常生活中说的“对象”、“东西”或“实体”非常相似(其实编程语言中的“对象”就是从现实生活中的“对象”、“实体”的概念发展而来的)。可以指你面前的这台戴尔电脑或你家楼下的那辆奔驰轿车,也可以指你们公司的销售员小张。 编程语言中的“类”的概念也和现实生活中的“类”非常相似。也是对某一类有共同特征的“东西”(实体,也许我们应该称“对象”)的概括。可以看出,“类”是一个抽象的概念,比如当你提到“电脑”这个概念时,你指的不是你面前的这台电脑,不是你家隔壁超市西面出口处用于结帐的那台电脑,也不是世界上任何一台具体的电脑,而是指“电脑”这个抽象的概念,是“具有处理器、存储器和输入、输出设备的电子设备”。同样,“员工”指的也不是你们公司是小张,不是我们公司的小王,也不是世界上任何一家公司的任何一个具体的工作人员,而是“服务于某家公司并定期领取薪水的人”。上面我们所说的“电脑”和“员工”就是两个“类”,因为它们分别概括了某一类型的“对象”的基本特征。另外要说明的一点是:“类”和“所有这类对象的集合”也是不一样的,因为后一个概念虽然也很全面,但它指的仍然是一大堆具体的对象,而不是一个抽象的概念。这也许有点像在玩文字游戏,希望你能适应并喜欢这种游戏规则,毕竟做任何事情都是需要“规则游戏”的,面向对象编程也不例外哦。 2.类的“成员”与“方法” 每个类一般有它的属性,比如每个员工都有自己的“姓名”,每到月底都可以领到“日工资”乘以“本月出勤天数”算出来的工资。这里的“姓名”、“日工资”和“本月出勤天数”就是“员工”这个类的属性(或叫“成员”)。而每月工资的计算方法(日工资* 本月出勤天数)就的“员工”类的一个“方法”。在易语言中的类模块中,一个类看起来就像一个程序集,类的成员看起来就像一个程序集变量,类的方法看起来就像程序集中的一个子程序。(注意,只是看起来像,它们之间还是有很明显地区别的) 3.实例化 实例化指的是从一个类到这个类的对象(实例),就像上面说的从“员工”到你们公司的小张。一个类并不是一个可操作的实体,它只是一个概念,只有对象才是可操作的,比如你们公司必须把薪水发放给具体的人(比如小张),而不是发放到抽象的“员工”或“销售员”。在易语言中,生成一个类的实例对象(实例化)就是定义一个以这个类为数据类型的变量。可以在通过点(.)来使用这个对象的方法,进而操作这个对象(类似于调用“窗口1.移动(……)”来移动“窗口1”)。 4.继承 “电脑”、“员工”这两个“类”虽然强大,概括了许许多多的“对象”,但是他们毕竟太宽泛了,有时候我们需要更具体一点的概念。比如别人问你,你家的那台电脑是台什么样的电脑,你就绝对不会回答:“我家的那台电脑是一台‘电脑’”,而是说出你的电脑的品牌,

《面向对象方法》复习知识点

1-3章 知识点 1.面向对象开发的核心思想和概念 2.对象的主要属性(状态和行为) 3.对象的关系(包含,继承,关联) 4.面向对象的软件开发过程 5.面向对象程序设计方法的优点 6.Java 产品的三个主要系列(J2SE,J2EE,J2ME) 7.开发Java程序的基本步骤 8.Java程序的构成 9.Java数据类型 10.Java表达式 11.Java 流程控制语句 第4章抽象、封装与类 知识点 1.抽象与封装的概念,面向对象程序设计中如何实现抽象与封装。 2.java中经常使用的包有哪些,如何使用Java类库。 3.用户自定义类的方法,如何创建对象。 4.构造函数的特点、作用、执行时机。 5.抽象类、最终类的定义方法及含义。 6.静态域的概念、定义方法、特点。 7.最终域的概念、定义方法、特点。 8.抽象方法、静态方法的特点,静态方法处理的域有何要求。 9.类的访问控制符及其作用,p86页表4-1、表4-2。 第5章继承与多态 知识点:

1.父类是所有子类的公告域和公告方法的集合,而每个子类是父类的特殊化。 2.Java通过extends只能实现单重继承,通过implements实现接口,相当于 是多重继承。 3.子类继承了父类的所有非private的属性和方法作为自己的成员。 4.域的隐藏:在子类中定义一个与从父类继承来的域变量同名变量,则子类方 法操作的是子类自己的变量,子类执行继承自父类的操作时,处理的是继承自父类的变量。例子见P103 TestHiddenField.java 5.方法的覆盖:子类方法对父类同名方法的覆盖将清除父类方法占用的内存, 从而使父类方法在子类对象中不复存在。例子见P106 TestOverload.java 6.this:表示当前对象的一个引用。引用可以理解为对象的另一个名字,通过 引用可以访问到对象,有点象指针,但是对象的引用与内存地址无关,不能计算。利用this可以调用当前对象的方法或使用当前对象的域。 7.super:代表是直接父类,通过它来引用父类的成员。 8.多态:指一个程序中同名的不同方法共存的情况。可以表现为子类对父类方 法的覆盖,也可以表现为一个类中方法的重载,还可以将子类的对象作为父类的对象实现对象的多态。 9.对象引用的多态:即对象的引用型变量具有多态性。因为子类对象可以作为 父类对象来使用,但是父类对象不能被当作子类的对象。例子P115 TestPolymorphism1.java和TestPolymorphism2.java 10.强制类型转换:存在继承关系的父类对象和子类对象之间可以在一定条件下 进行转换。如果父类变量引用的是一个子类对象,那么可以用强制类型转换将这个父类变量的转换为子类对象的引用。例子见P119 TestPolymorphism3.java 11.构造函数的重载:this()可以显式地调用另一个构造函数,应该在第一行。 12.调用父类的构造函数:子类并不继承父类的构造函数,但遵循一定的调用原 则。原则见P125,例子 TestCons.java。只要子类构造函数中不是显式调用父类的构造函数,在创建子类对象时,系统总是隐含调用父类的无参数的构造函数。但是如果父类没有无参数构造函数,而在创建子类对象时又需要调用父类的无参数构造函数,则编译报错。

(完整word版)面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

传统方法学与面向对象

小议传统方法学和面向对象方法 姓名: 学号: 班级:

摘要 传统方法学也称为生命周期方法学或结构化范性。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地顺序进行开发。前一个阶段任务的完成时开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。

软件工程传统方法学 随着计算机应用领域的不断拓广,各种各样的问题也不断涌现,当问题严重到开发人员无法控制的时候便产生了软件危机。软件危机的出现,促使了软件工程学的形成和发展。随之整合整套技术的软件工程方法学广泛应用,主流之一就是传统方法学。传统方法学在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。如果说自然语言和编程语言之间有一道难以跨越的鸿沟,传统方法学就是跨越这道鸿沟的桥梁。 传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。 传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。在描述事物方面,它具有一套表示体系和文档规范。但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。 在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。

第9章 面向对象方法学

第9章面向对象方法学 一、填空题(10小题) 1、对象具有状态,描述对象的状态用它的()。 答案:属性值 2、类具有属性,描述类的属性用()。 答案:数据结构 3、子类自动共享父类的属性和操作的机制称为()。 答案:继承 4、封装性是指所有软件部件内部都有明确的()以及清楚的()。每个软件部件都有友好的(),软件部件的()与()分离。 答案:范围、外部边界、界面接口、内部实现、外部可访问性 5、结构化方法的本质是(),其()、可修改性和可重用性都比较差。答案:功能分解、稳定性 6、动态模型描述了系统的()。 答案:动态行为 7、类具有属性,它是对象的()的抽象,用()来描述类的属性。 答案:状态、数据结构 8、动态模型描述了系统的()结构。 答案:控制 9、对象具有状态,对象用()来描述它的状态。 答案:数据值 10、在C++和C中有一个()函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。 答案:main()

二、单项选择题(20小题) 1、在确定类时,所有()是候选的类。 A、名词 B、形容词 C、动词 D、代词 答案:A 2、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。 A、传递性 B、继承性 C、复用性 D、并行性 答案:B 3、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组()和它可以执行的一组操作来定义。 A、服务 B、参数 C、属性 D、调用 答案:C 4、面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。 A、困难 B、不容易 C、平滑 D、顺序 答案:C 5、以下说法正确的是()。 A、组装结构可用来描述现实世界中的一般的抽象关系 B、分类结构可用来描述现实世界中的类的组成的抽象关系 C、面向对象的继承性是子类自动共享父类数据结构和方法的机制 D、面向对象的唯一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类 答案:C 6、与事件联系在一起的瞬时操作是()。 A、处理 B、动作 C、活动

比较四种典型面向对象方法的异同

普 通 本 科 毕 业 小 论 文 题目:比较四种典型面向对象法的异同 学院软件与通信工程学院 学生姓名伟聪学号0123992 专业软件工程届别125 指导教师廖汉成 二O一四年九月二十七日

一、引言 随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发期,发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新法、新技术,探索新途径。 面向对象的法是一种分析法、设计法和思维法。面向对象法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的法尽可能接近人们认识一个系统的法。也就是使描述问题的问题空间和解决问题的法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。面向对象程序设计法起源于六十年代末期的语言SIMULA’67,到了七十年代末期,软件行业正受到软件危机的困扰,结构化的开发法不能够很好地解决软件危机。面向对象语言Smalltalk的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象也和开发法开始结合,出现了面向对象的开发法。 自80年代后期以来,相继出现了多种面向对象开发法,现将其中四种典型的法作一个简介和比较。面向对象法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。 一.Booch法

相关文档
最新文档