面向对象方法
- 格式:doc
- 大小:249.00 KB
- 文档页数:8
面向对象的方法有哪些面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将问题分解为对象,并通过对象之间的交互来解决问题。
在面向对象编程中,我们使用类(class)和对象(object)来组织和管理代码,从而实现代码的封装、继承和多态。
面向对象的方法有以下几种:1. 封装(Encapsulation):封装是面向对象编程的基本特征之一。
它指的是将相关的属性和行为(方法)组合在一起,形成一个对象。
封装可以隐藏对象的内部细节,只提供一些外部接口,从而提高代码的可维护性和重用性。
2. 继承(Inheritance):继承是面向对象编程的另一个重要特征。
它通过创建一个新的类(子类)来继承已有类(父类)的属性和方法。
子类可以继承父类的所有非私有成员,并且可以添加自己的成员。
继承可以实现代码的重用和扩展。
3. 多态(Polymorphism):多态是面向对象编程的核心概念之一。
它指的是同一个类的实例在不同的情况下表现出不同的行为。
多态的实现方式包括函数重载和函数重写。
多态可以提高代码的灵活性和可扩展性。
4. 抽象(Abstraction):抽象是将具体的事物抽象成一般性的概念或模板。
在面向对象编程中,抽象是通过接口(interface)和抽象类(abstract class)来实现的。
接口定义了一组方法的签名,抽象类则提供了部分或者完整的方法实现。
抽象可以帮助我们定义通用的行为,并且使得程序具有更高的可复用性。
5. 组合(Composition):组合是指通过将一个类的对象作为另一个类的成员来组合两个类的关系。
组合可以实现部分和整体之间的关系,从而提高代码的灵活性和可维护性。
6. 封装(Encapsulation):封装是将对象的属性和方法封装起来,以隐藏内部实现的细节。
通过封装,对象对外只暴露有限的接口,隐藏了实现的细节,并且可以添加必要的验证和保护机制,提高代码的可靠性和安全性。
软件工程比较结构化方法和面向对象一、引言软件工程是一门关注软件开发过程的学科,它涉及到软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。
在软件工程领域中,有两种主要的开发方法:比较结构化方法和面向对象方法。
本文将对这两种方法进行详细的比较和分析。
二、比较结构化方法1.概念结构化方法是一种基于模块化设计思想的软件开发方法。
它将一个大型系统划分为多个小模块,每个模块都有明确的输入和输出,并且通过调用其他模块来实现其功能。
2.特点(1)强调程序流程控制;(2)采用自顶向下或自底向上的设计方式;(3)使用层次结构图表示程序流程;(4)采用数据流图表示数据流动情况;(5)模块之间通过参数传递来交换信息。
3.优缺点①易于理解和维护;②适合大型系统开发;③能够提高程序可读性。
(2)缺点:①不够灵活,难以应对需求变更;②不支持复杂的数据类型;③容易出现模块间的耦合。
三、面向对象方法1.概念面向对象方法是一种基于对象思想的软件开发方法。
它将一个系统看作是由多个对象组成,每个对象都有自己的属性和方法,并且通过消息传递来实现对象之间的交互。
2.特点(1)强调数据抽象和封装;(2)采用自下而上的设计方式;(3)使用类图表示程序结构;(4)采用序列图表示消息传递过程;(5)支持继承和多态等高级特性。
3.优缺点①能够提高代码重用性;②支持动态绑定,具有更好的灵活性;③能够提高系统可扩展性。
(2)缺点:①易于出现类爆炸问题;②需要掌握较为复杂的概念和技术。
四、比较分析1.设计思想不同结构化方法注重程序流程控制,通过模块化设计来实现程序结构清晰、易于维护。
而面向对象方法则注重数据抽象和封装,通过对象之间的交互来实现程序功能。
2.设计方式不同结构化方法采用自顶向下或自底向上的设计方式,通过层次结构图和数据流图来表示程序结构和数据流动情况。
而面向对象方法则采用自下而上的设计方式,通过类图和序列图来表示程序结构和消息传递过程。
OO⽅法OO⽅法(Object-Oriented Method,⾯向对象⽅法,⾯向对象的⽅法)是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法,简称OO (Object-Oriented)⽅法,是建⽴在“对象”概念基础上的⽅法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。
⽽每继承性是对具有层次关系的类的属性和操作进⾏共享的⼀种⽅式。
所谓⾯向对象就是基于对象概念,以对象为中⼼,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
⾯向对象⽅法作为⼀种新型的独具优越性的新⽅法正引起全世界越来越⼴泛的关注和⾼度的重视,它被誉为"研究⾼技术的好⽅法",更是当前计算机界关⼼的重点。
⼗多年来,在对OO⽅法如⽕如荼的研究热潮中,许多专家和学者预⾔:正象70年代结构化⽅法对计算机技术应⽤所产⽣的巨⼤影响和促进那样,90年代OO⽅法会强烈地影响、推动和促进⼀系列⾼技术的发展和多学科的综合。
⼀、⾯向对象⽅法的由来与发展 回顾历史可激励现在,以规划将来。
OO⽅法起源于⾯向对象的编程语⾔(简称为OOPL)。
50年代后期,在⽤FORTRAN语⾔编写⼤型程序时,常出现变量名在程序不同部分发⽣冲突的问题。
鉴于此,ALGOL语⾔的设计者在ALGOL60中采⽤了以"Begin……End"为标识的程序块,使块内变量名是局部的,以避免它们与程序中块外的同名变量相冲突。
这是编程语⾔中⾸次提供封装(保护)的尝试。
此后程序块结构⼴泛⽤于⾼级语⾔如Pascal 、Ada、C之中。
60年代中后期,Simula语⾔在ALGOL基础上研制开发,它将ALGOL的块结构概念向前发展⼀步,提出了对象的概念,并使⽤了类,也⽀持类继承。
70年代,Smalltalk语⾔诞⽣,它取Simula的类为核⼼概念,它的很多内容借鉴于Lisp语⾔。
面向对象的典型方法
1. 封装啊,这就好比你有个百宝箱,把你的宝贝都好好地装起来,藏住细节,只露出该露的接口。
就像一个手机,你只需要知道怎么操作那些按钮,而不用管它里面的复杂电路是怎么运作的嘛!
2. 继承可太重要啦!就好像家族传承一样,长辈把好的东西传给晚辈,晚辈就能在此基础上继续发展。
比如说动物界,小狮子继承了狮子家族的强大基因,然后慢慢成长变得更强呀!
3. 多态可神奇咯!它就像一个超级变变变的魔法,同一个东西在不同情况下可以有不同的表现呢。
就像有个演员,在不同的戏里能扮演各种不同的角色,展现出多样的魅力!
4. 抽象呢,就如同在云雾中寻找轮廓,把复杂的现实简化成关键的概念。
比如画画,先勾勒出大致的形状,抓住事物最本质的特征,你说是不是很牛!
5. 对象间的消息传递,哇哦,这就好像人们之间的交流沟通呀!你喊我一声,我回应你一下。
在程序里,对象之间通过传递消息来协同工作,就像我们平时互相说话办事一样有趣诶!
6. 关联也不容忽视呀!这就好像人和人之间的各种关系,朋友啦、家人啦。
比如说一个班级里的同学,他们相互关联,一起学习成长,多有意思呀!
我的观点结论就是:面向对象的这些典型方法真的是太神奇、太重要啦!它们让编程变得更简单、更有趣、也更强大了呢!。
面向对象方法面向对象方法是当前的主流开发方法,拥有大量不同的方法,主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法等,而OMT、OOSE及Booch最后统一成为UML(United Model Language,统一建模语言)。
1.Coad/Yourdon方法Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象的设计(Object-Oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。
该方法的特点是表示简练、易学,对于对象、结构、服务的认定较系统、完整,可操作性强。
在Coda/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。
分析过程和构造OOA概念模型的顺序由5个层次组成,分别是类与对象层、属性层、服务层、结构层和主题层,它们表示分析的不同侧面。
OOA需要经过5个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合及实例化等)、划分主题、定义属性和定义服务。
OOD中将继续贯穿OOA中的5个层次和5个活动,它由4个部分组成,分别是人机交互部件、问题域部件、任务管理部件和数据管理部件,其主要的活动就是这4个部件的设计工作。
2.Booch方法Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤,分别是标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。
Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),描述了系统的构成和结构。
动态模型包括状态图和顺序图。
面向对象方法特点
面向对象方法的特点有以下几点:
1. 封装性:面向对象方法将数据和操作数据的方法封装在一起,通过定义类来创建对象,对象可以调用类中定义的方法来操作数据。
封装性可以隐藏数据的具体实现方式,提高代码的可维护性和重用性。
2. 继承性:面向对象方法支持继承机制,可以通过继承一个已有的类来创建一个新的类,新类可以继承父类的属性和方法,并且可以在此基础上添加新的属性和方法。
继承能够提高代码的重用性,并且可以实现代码的层次化组织。
3. 多态性:面向对象方法支持多态机制,多态指的是同一操作可以作用在不同的对象上,并且可以产生不同的结果。
多态性可以提高代码的灵活性和可扩展性。
4. 抽象性:面向对象方法支持抽象机制,通过定义抽象类和接口来封装和规范对象的行为。
抽象性能够屏蔽实现细节,只关注对象的行为和功能。
5. 可维护性:面向对象方法的封装、继承和多态性等特点可以提高代码的可维护性。
封装性可以减少代码的耦合,继承性和多态性可以使得代码的修改对其他部分的影响最小化,提高代码的可扩展性和可重用性。
软考知识点梳理--⾯向对象⽅法⾯向对象(Object-Oriented,OO)⽅法认为,客观世界是由各种对象组成的,任何事物都是对象,每⼀个对象都有⾃⼰的运动规律和内部状态,都属于某个对象类,是该对象类的⼀个元素。
复杂的对象可由相对简单的各种对象以某种⽅式⽽构成,不同对象的组合及相互作⽤就构成了系统。
OO⽅法是当前的主流开发⽅法,拥有很多不同的分⽀体系,主要包括OMT(Object Model Technology,对象建模技术)⽅法、Coad/Yourdon⽅法、OOSE(Object-Oriented Software Engineering,⾯向对象的软件⼯程)⽅法和Booch⽅法等,⽽OMT、OOSE和Booch已经统⼀成为UML(United Model Language,统⼀建模语⾔)。
使⽤OO⽅法构造的系统具有更好的复⽤性,其关键在于建⽴⼀个全⾯、合理、统⼀的模型(⽤例模型与分析模型)。
与结构化⽅法类似,OO⽅法也划分阶段,但其中的系统分析、系统设计和系统实现三个阶段之间已经没有 “缝隙”。
也就是说,这三个阶段的界限变得不明确,某项⼯作既可以在前⼀个阶段完成,也可以在后⼀个阶段完成;前⼀个阶段⼯作做得不够细,在后⼀个阶段可以补充。
OO⽅法使系统的描述及信息模型的表⽰与客观实体相对应,符合⼈们的思维习惯,有利于系统开发过程中⽤户与开发⼈员的交流和沟通,缩短开发周期。
OO⽅法可以普遍适⽤于各类信息系统的开发,但是,OO⽅法也存在明显的不⾜。
例如,必须依靠⼀定的OO技术⽀持,在⼤型项⽬的开发上具有⼀定的局限性,不能涉⾜系统分析以前的开发环节。
当前,⼀些⼤型信息系统的开发,通常是将结构化⽅法和OO⽅法结合起来。
⾸先,使⽤结构化⽅法进⾏⾃顶向下的整体划分;然后,⾃底向上地采⽤OO⽅法进⾏开发。
因此,结构化⽅法和OO ⽅法仍是两种在系统开发领域中相互依存的、不可替代的⽅法。
OOA 的基本任务是运⽤OO⽅法,对问题域进⾏分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。
第四章面向对象方法【学习目标】本章集中介绍了面向对象方法的基本原理和概念,同时简述了统一建模语言(Unified Modeling Languange,UML)的主要作用和基本概念,并结合一个实例,论述了基于UML 语言的面向对象分析方法,从而使学生掌握面向对象方法的基本理论,学会使用UML语言进行面向对象的分析和建模。
【学习方法】正确理解面向对象方法和UML语言涉及的基本概念,结合具体实例运用面向对象分析技术,从而达到学习目的。
【难重点】本章的学习重点在于理解面向对象方法的原理和概念,熟练运用UML语言,掌握面向对象的分析方法,其难点是怎样在实际的软件项目中灵活运用这些思想和方法。
【课前思考】面向对象开发方法有什么优点?面向对象方法包含哪些基本概念?为什么要对软件系统建模?什么是UML?面向对象分析与面向对象设计的区别是什么?什么是软件复用?4.1 面向对象方法概述【本节知识点】什么是面向对象面向对象技术的发展历史面向对象的基本概念面向对象的软件工程方法4.1.1 什么是面向对象面向对象(Object Oriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。
应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽象思维方式。
面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。
它更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。
面向对象技术的基本观点如下:(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成。
(2)具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例。
面向对象方法分类
面向对象方法是指将现实世界中的事物抽象为对象,通过对象之间的交互来实现目标的一种编程方法。
根据不同的实现方式和应用场景,面向对象方法可以分为以下几类:
1. 类继承方法:通过继承父类的属性和方法来创建子类,实现代码的复用和扩展。
常见的类继承方法有单继承、多继承、接口继承等。
2. 抽象类和接口方法:通过抽象类和接口的定义,规范对象的行为和属性,并实现代码的模块化和可维护性。
3. 多态方法:通过运行时动态绑定变量类型和方法实现,实现同一操作对不同对象的适应性和灵活性。
常见的多态方法有重载、重写、接口多态等。
4. 组合和聚合方法:通过对象之间的组合和聚合关系,实现对象间的复杂关系和行为。
常见的组合和聚合方法有组合关系、聚合关系、嵌套关系等。
5. 设计模式方法:通过设计模式的应用,实现代码的可重用性、可扩展性、可维护性和可读性。
常见的设计模式方法有工厂方法、单例模式、代理模式、观察者模式、责任链模式等。
总之,面向对象方法是一种强大的编程思想和技术,可以提高程序的可复用性、可维护性和可扩展性,是现代软件开发的重要基础。
- 1 -。
什么是面向对象方法面向对象方法(Object-oriented method,简称OO方法)是一种针对面向对象编程的设计和开发方法论。
它以对象作为程序设计的基本单位,通过封装、继承、多态等特性来处理问题。
面向对象方法是一种从现实世界抽象出的程序设计范式,它能更好地模拟现实世界的问题,并提供了灵活性和可重用性。
面向对象方法的核心思想是将复杂的问题分解成一系列小而独立的对象,这些对象具有自己的属性和行为。
通过将对象连接在一起,形成对象的协作关系,从而完成问题的解决。
面向对象方法具有以下几个重要特点:1. 封装(Encapsulation):封装是指将数据和操作数据的方法绑定在一起,形成一个对象。
封装可以隐藏对象的内部细节,只暴露对外可见的接口,从而保证了对象的安全性和数据的一致性。
2. 继承(Inheritance):继承是指通过定义一个新的类,来继承已有类的属性和方法。
继承可以减少代码的重复编写,提高代码的可复用性和维护性。
同时,通过继承,可以实现对象的层次结构,形成类的继承关系。
3. 多态(Polymorphism):多态是指同一操作可以应用于不同的对象上,产生不同的结果。
它使得程序可以根据对象的实际类型来调用相应的方法,从而实现了动态绑定。
多态提高了代码的灵活性和可扩展性。
面向对象方法的开发过程可以概括为以下几个步骤:1. 需求分析:在需求分析阶段,通过与客户沟通和了解,确定问题的需求和约束条件。
将问题划分成一系列小的对象,并明确它们之间的关系。
2. 设计:设计阶段根据需求分析的结果,建立对象模型。
定义对象的属性和方法,描述对象之间的关系,确定系统的核心功能和模块。
3. 编码:在编码阶段,将设计的对象模型转换成可执行的代码。
通过选择合适的编程语言,实现对象和类的定义,以及对象之间的交互。
4. 测试:在测试阶段对代码进行测试,检查是否满足需求,排除潜在的错误。
通过单元测试、集成测试、系统测试等方法,确保程序的正确性和可靠性。
面向对象的三种方法
面向对象的编程方法是现代编程中的一种重要思想,它将程序中的数据和操作封装成对象,并通过对象之间的交互来实现程序的功能。
在面向对象的编程中,有三种常见的方法可以用来实现类与对象的创建和使用。
1. 基于类的方法
基于类的方法是最常见的面向对象编程方法。
在这种方法中,程序员首先定义一个类,该类描述了对象的属性和方法。
然后通过实例化类创建对象,并使用对象的方法和属性来实现程序的功能。
此方法提供了面向对象编程中的封装和抽象等特性,使程序更易于维护和扩展。
2. 基于原型的方法
基于原型的方法是另一种常见的面向对象编程方法。
在这种方法中,程序员首先定义一个原型对象,并在需要时通过复制该对象来创建新的对象。
每个对象都可以修改其属性和方法,并且继承原型对象的属性和方法。
这种方法提供了更灵活的对象创建和修改功能,但也增加了程序的复杂性。
3. 基于属性的方法
基于属性的方法是另一种面向对象编程方法,它将属性作为对象的核心,并提供了一组属性相关的方法来操作对象。
在这种方法中,对象的属性可以是公共的或私有的,可以进行读取、设置和删除等操作。
此方法可以使程序更加简单,但缺乏面向对象编程中的封装和抽象等特性。
综上所述,这三种方法都有其优点和缺点,程序员应根据程序的需求和特点选择适合的方法来实现面向对象编程。
简述面向对象方法学的要素
面向对象方法学是一种面向对象编程的设计和开发方法,它的基本要素包括以下几个方面:
1. 对象:面向对象方法学中的基本概念是对象,它是对现实世界中某个事物的抽象和建模。
对象具有属性和方法,属性是对象的状态信息,方法是对象的行为和功能。
2. 类:类是对象的模板,它描述了对象的属性和方法。
类中的变量称为实例变量,方法称为类方法。
类是对象的蓝图,它定义了对象的行为和状态。
3. 继承:继承是面向对象方法学中的重要概念之一,它允许一个类继承另一个类的特性。
被继承的类称为父类或基类,继承的类称为子类或派生类。
子类可以继承父类的属性和方法,也可以添加自己的属性和方法。
4. 封装:封装是面向对象方法学中的另一个重要概念,它允许将类的实现细节隐藏在类的内部,只提供公共接口给外部使用。
封装可以保护类的数据和方法,防止外部的干扰和修改。
5. 多态:多态是面向对象方法学中的另一个重要概念,它允许不同对象对同一消息做出不同的响应。
多态可以增强代码的灵活性和可重用性。
以上是面向对象方法学的基本要素,这些要素相互作用,
共同构建了面向对象的程序设计方法。
通过使用这些要素,可以更好地模拟现实世界中的事物,提高程序的可维护性、可扩展性和可读性。
面向对象设计的方法
面向对象设计是一种软件设计方法,通过将系统分解为一组对象,并定义它们的属性和方法来描述系统的行为。
以下是一些常用的面向对象设计方法:
1. 抽象:抽象是面向对象设计的核心概念之一。
通过抽象,我们可以将一个对象的共性特征提取出来,形成一个抽象类或接口,用于描述一组具有相似功能的对象。
2. 封装:封装指的是将数据和对数据的操作封装在一个对象中,只对外提供有限的接口来访问和操作数据。
封装可以隐藏对象内部的实现细节,提供更安全和可靠的使用方式。
3. 继承:继承是面向对象编程中的一种机制,通过继承可以在已有类的基础上定义一个新类,新类可以继承并重用父类的属性和方法。
继承可以提高代码的复用性,并且可以实现多态性。
4. 多态:多态是指同一种操作作用于不同的对象,可以有不同的解释和实现。
在面向对象设计中,多态性可以通过继承和接口实现。
多态能够提高代码的灵活性和可扩展性。
5. 关联关系:关联关系用于描述对象之间的联系。
常见的关联关系有聚合关系和组合关系。
聚合关系表示整体和部分之间的关系,整体对象包含部分对象但部
分对象可以独立存在;组合关系表示整体对象包含部分对象,部分对象无法独立存在。
6. 接口:接口是一种抽象的数据类型,它定义了一组方法的规范,而不需要给出具体的实现。
接口可以被多个类实现,通过接口可以实现对象的多态性和松耦合。
以上是一些常见的面向对象设计方法,它们可以帮助开发人员以模块化、灵活和可扩展的方式设计和构建软件系统。
面向对象的三种方法一、什么是面向对象编程面向对象编程(Object-oriented Programming, OOP)是一种编程范式,它以对象作为程序的基本单元,通过封装、继承和多态等特性对现实世界的事物进行建模和模拟。
面向对象编程具有代码复用性高、可维护性好、扩展性强等优点,因此在软件开发中得到广泛应用。
面向对象编程的核心理念是将问题划分为各个对象,并通过对象间的相互协作来解决问题。
二、面向对象的三种方法面向对象编程有三种常见的方法,分别是:1.继承(Inheritance)2.封装(Encapsulation)3.多态(Polymorphism)三、继承继承是面向对象编程中一种重要的机制,它可以让一个类继承另一个类的属性和方法。
被继承的类称为父类或基类,继承它的类称为子类或派生类。
继承的优点在于代码的重用性。
通过继承,子类可以获得父类的属性和方法,并且还可以在此基础上进行扩展和修改。
这样可以避免重复编写相同的代码,提高代码的可维护性和可读性。
在继承的过程中,子类可以覆盖父类的方法,实现特定的功能。
这种特性称为多态,后面会详细介绍。
继承一般分为单继承和多继承两种情况。
单继承表示一个子类只能继承一个父类,而多继承表示一个子类可以同时继承多个父类。
继承的实现在面向对象编程中,继承可以通过关键字extends来实现。
以下是一个继承的示例:class Animal {String name;void eat() {System.out.println("Animal is eating.");}}class Dog extends Animal {void bark() {System.out.println("Dog is barking.");}}在上面的例子中,Dog类继承了Animal类的属性和方法,并且还增加了新的bark 方法。
继承的应用场景继承主要应用于以下场景:1.子类和父类之间存在”is-a”的关系,即子类属于父类的一种特殊情况。
面向对象方法缺点
面向对象方法的主要缺点包括:
1. 复杂性:面向对象方法通常涉及多个对象之间的交互和关系,这增加了系统的复杂性。
管理和维护大型面向对象系统可能会变得困难。
2. 开销:面向对象方法可能需要更多的计算和存储资源。
每个对象都需要分配内存以存储其状态和行为,这可能会增加系统的开销。
3. 继承问题:继承是面向对象编程的重要概念,但它也可能导致问题。
继承关系可能过于复杂,导致代码的可读性和维护性降低。
此外,子类继承了父类中的所有属性和方法,可能会导致不必要的复杂性和耦合。
4. 难以理解:面向对象方法可能需要理解很多概念和术语,例如封装、多态和继承。
这些概念对于初学者来说可能具有一定的学习曲线,使得理解和使用面向对象方法变得困难。
5. 性能问题:由于面向对象方法的复杂性和开销,可能会影响系统的性能。
特别是在大规模系统中,对象的创建、销毁和调用可能会导致性能下降。
总的来说,虽然面向对象方法有许多优点,但它也有一些缺点。
这些缺点可能使得它在某些场景下不适用,或需要谨慎使用和管理。
面向对象方法
1、对象:是系统中用来描述客观事务的一个实体,是构成系统的一个基本单位。
三个要素:对象标志(供系统内部唯一的识别对象);属性(状态、数据、用来描述对象的静态特征);服务(操作、行为或方法,用来描述对象的动态特征)
2、面向对象=对象(objects)+类(classes)+继承(inheritance)+消息通信(communication with messages)
3、封装是对象的一个重要原则。
有2 个含义:对象是全部属性和全部服务紧结合而形成的一个不可分隔的整体;对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码都被封装在黑盒子里面。
4、类和类库:类是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。
类与对象是抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(instance)。
5、继承:使用已存在的定义作为基础建立新定义的技术。
父类、子类要了解。
6、多态性:可以分为四类:过载多态(重载多态),强制多态,包含多态,参数多态。
前两种统称为专用多态(特定多态),后两种称为通用多态。
7、消息:指向对象发出的服务请求,它应该含有下述
信息:提供服务的对象标志、消息名、输入信息和回答信息
8、消息通信:封装使对象成为一些各司其职、互不干扰的独立单位;消息通信为他们提供了唯一的合法的动态联系途径,使他们的行为能够相互配合,构成一个有机的系统。
只有同时使用对象、类、继承与消息通信,才是真正面向对象的方法。
9、统一建模语言UML---是一种语言;是一种可视化语言;是一种可用于详细描述的语言;是一种构造语言;是一种文档化语言
10、UML 结构:构造块(建模元素、关系、图);公共机制(规格说明、修饰、公共分类、扩展机制);构架(逻辑视图、进程视图、实现视图(构建)、布署视图、用例视图)裸狗不用进
11、UML 视图:系统静态结构的静态模型(包括类图、构件图、部署图),系统动态结构的动态模型(包括对象图、用例图、序列图、协作图、状态图、活动图)
12、用例图:用例模型描述的是外部执行者(Actor)所理解的系统功能,用于需求分析阶段。
(十四个图能认出来)
参与者(Actor)代表与系统接口的任何事物或人,它是指代表某一种特定功能的角色,参与者都是虚拟的概念。
用例:(use case)是对系统行为的动态描述,可以促进设计人员、开发人员与用户的沟通,理解正确的需求,还可以划分系统与外部实体的界限。
13、类-----是一组具有相同属性,表现相同行为的对象的抽象。
类的命名(最顶部的格子包含类的名字)
类的属性(中间的格子包含类的属性,用以描述该类对象的共同特点。
可见性包括Public、Private、Protected 分别用+-#号表示。
类型表示该属性的种类,约束特性是用户对该属性的一个约束的说明)
类的操作—可以省略。
操作用于修改、检索类或执行某些动作。
14、类之间的关系:能判断
(1)依赖关系
(2)泛化关系
(3)关联关系---聚合关系、组合关系。
(4)实现关系
15、类图:描述类与类之间的静态关系。
与数据模型不同,不仅现实了信息的结构,还描述了系统的行为。
是面向对象建模中最重要的模型。
16、对象图:可以看做是类图的一个实例。
对象图常用于表示复杂的类图的一个实例。
17、交互图:表示各组对象如何依某种行为进行协作的模型。
通常可以使用一个交互图来表示和说明一个用例的行为。
分为强调对象交互行为顺序的顺序图,强调对象协作的协作图。
顺序图:用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。
协作图:用于描述相互合作的对象间的交互关系和链接关系。
顺序图着重体现交互的时间顺序,协作图则着重体系交互对象间的静态链接关系。
18、状态图:用来描述对象状态和事件之间的关系。
通常用状态图来描述单个对象的行为。
它包含:状态、初始状态、结束状态、状态转移 4 个部分。
适用于表述在不同用例之间的对象行为,但并不合适于表示包含若干协作的对象行为。
19、活动图:表示系统中各种活动的次序,可以用来描述用例的工作流程,也可以用来描述类中某个方法的操作行为。
20、构件图:可以有效的显示一组构件,以及它们之间的关系。
构件图通常包括构件、接口,以及各种关系。
21、部署图(实施图):构件图是说明构件之间的逻辑关系,而部署图描述系统硬件的物理拓扑结构,以及在此
结构上执行的软件。
包括:1、节点和连接;2、构件和接口
22、面向对象分析(ooa)面向对象编程(oop)面向对象设计(ood)
OMT(Object Modeling Technique)方法:
泛化(generalization)关系是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性。
实现(realization)关系指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;
依赖(dependency)关系: 也是类与类之间的连接. 表示一个类依赖于另一个类的定义. 依赖关系总是单向的。
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。
在java 中. 依赖关系体现为: 局部变量, 方法中的参数, 和对静态方法的调用.
关联(association)关系: 表示类与类之间的联接, 它使一个类知道另一个类的属性和方法.
关联可以使用单箭头表示单向关联, 使用双箭头或不使用箭头表示双向关联, 不建议使用双向关联. 关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例.
常见的基数及含义:
0..1:0 或1 个实例.
0..*: 对实例的数目没有限制.
1: 只能有一个实例.
1..*: 至少有一个实例.
他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,表现在代码层面,为被关联类
B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;在java 语言中关联关系是使用实例变量实现的.
聚合(aggregation)关系: 关联关系的一种特例, 是强的关联关系. 聚合是整体和个体之间的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
聚合关系也是使用实例变量实现的. 从java 语法上是分不出关联和聚合的.
关联关系中两个类是处于相同的层次, 而聚合关系中两不类是处于不平等的层次, 一个表示整体, 一个表示部分.
组合(合成)关系(composition): 也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;合成关系不能共享. 。
表现在代码层面,和关联关系是一致的,只能从语义级别来区分。
组合跟聚合几乎相同,唯一的区别就是“部分”不能脱离“整体”单独存在,就是说,“部分”的生命期不能比“整体”还要长。
用力活动状态交通顺序制时(动8):用例活动状态交互通信顺序制品定时对付狗类不保(静6):对象复合结构构件类部署包。