尊旭网
当前位置: 尊旭网 > 知识 >

面向对象方法

时间:2024-03-06 02:52:19 编辑:阿旭

面向对象方法的主要特征有哪些?

面向对象方法的主要特征有:1、封装性封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。2、继承性继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。3、多态性对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。扩展资料面向对象方法的优越性(1)强调从现实世界中客观存在的事物(对象)出发来认识问题域和构造系统,这就使系统开发者大大减少了对问题域的理解难度,从而使系统能更准确地反映问题域。(2)运用人类日常的思维方法和原则(体现于OO方法的抽象、分类、继承、封装、消息通讯等基本原则)进行系统开发,有益于发挥人类的思维能力,并有效地控制了系统复杂性。(3)对象的概念贯穿于开发过程的终,使各个开发阶段的系统成分具良好的对应,从而显著地提高了系统的开发效率与质量,并大大降低系统维护的难度。(4)对象概念的一致性,使参与系统开发的各类人员在开发的各所段具有共同语言,有效地改善了人员之间的交流和协作。(5)对象的相对稳定性和对易变因素隔离,增强了系统的应变能力。(6)对象类之间的继承关系和对象的相对独立性,对软件复用提供了强有力的支持。

面向对象分析方法的五个步骤是啥

第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。


ooa试述传统的开发方法与面向对象的开发方法各有哪些优缺点

谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。面向对象是当前计算机界关心的重点,它是90年代软件开发方法


面向对象编程方法的要点

面向对象的主线:Java类及类的成员:属性、方法、构造器(高频);代码块、内部类(低频) (类是由对象派生的)面向对象的三大特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)、(抽象性)其它关键字:this、super、static、final、abstract、interface、package、import等面向过程(ProcedureOrientedProgramming)与面向对象(ObjectOriented Programming)的理解二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。而且更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。1.面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。2.面向对象:强调具备功能得对象,以类/对象为最小单位,考虑谁来做。1.面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。2.面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。面向对象的思想概述类(Class)和对象(Object)是面向对象的核心概念。类是对一类事物的描述,是抽象的、概念上的定义对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。程序员从面向过程的执行者转化成了面向对象的指挥者面向对象分析方法分析问题的思路和步骤:根据问题需要,选择问题所针对的现实世界中的实体。从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。面向对象的两个要素:类和对象类 :对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体(实实在在的个体),因而也称为实例(instance)。以人为例子: 类 = 抽象概念的人 ; 对象 = 实实在在的某个人面向对象程序设计的重点是类的设计设计类,就是设计类的成员。二者关系:对象是由类派生(new)出来的、对象是类的实例化类的结构:属性和方法现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,Java代码世界是由诸多个不同功能的类构成的。现实生物世界中的细胞又是由什么构成的呢?细胞核、细胞质、…那么,Java中用类class来描述事物也是如此。常见的类的成员有:属性:对应类中的成员变量行为:对应类中的成员方法类和对象的创建和执行操作有那三步(落地实现的规则)?①创建类,设计类的成员②类的实例化(创建类的对象)③通过“对象.属性”或 “对象.方法”调用对象的结构几个常用的概念属性= 成员变量 = Field = 域、字段方法= 成员方法 = Method =函数创建类的对象 = 类的实例化 = 实例化类

面向对象分析方法的步骤和特点

使用VC进行项目开发已经有一段时间了,在这段时间里感触最深的就是自己对宏观性面向对象分析方法的缺乏。面向对象分析是当今流行的系统分析方法之一,下面就谈谈在做项目的过程中我的一些小经验。

在面对简单系统时程序员可以很顺利的提出问题的解决方案,并且一般情况下都是可行的。这是由于问题域关系简单,所涉及到的内部构造、联系比较容易解释。而对于当前越来越复杂的系统,其问题域也就显示的越来越复杂,而且内部的关系也不是很容易解释,有些大的系统常常超出了人的解决问题的能力。在这种情况下,以往的面对过程的解决方法已经不能满足日益增长的复杂系统分析的需要,在这种情况下,面向对象的分析方法就显得尤为总要了。

在面向对象设计领域中,在横向上把问题域分为数个不同的、低耦合、高内聚的问题域,而在纵向上又继续分解各个不同的小的问题域,最后分解为叶节点问题域,从而解决问题。在面对对象分析方法中,用数个对象间的消息传递来完成整个问题。

下面看一看复杂系统的5个属性:

1. 杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由他们各自的子系统构成,并由此类推到最底层的基本构件。

2. 对系统中最基本的构件的选择是任意的,而且在很大程度上取决于系统观察者的判断力。

3. 一般而言,各构件内的连接总是要强于构件间的连接。在从构件的低频动态中分离出高频动态时,这一属性是相当有用的。这是因为高频动态涉及到各部件的内部结构,而低频动态涉及到构件间的交互。

4. 层次系统通常都是由仅仅少数不同的子系统通过不同的排列组合方式组成。

5. 我们发现正运行的复杂系统总是由以前运行的简单系统演化而来……任何胡乱凑合设计出来的复杂系统都不可能正常运转,也不可能被修补好。我们必须由运行中的简单系统开始。

对于第一点,正像我上面所说的那样,系统是层次结构的。能够给一个复杂的系统进行正确的层次分析,才能够保证对系统的正确估计,包括可行性、可维护性、可扩展性……等等。而且对于日后对该系统进行维护(maintenance)、演化(evolution)、维持(preservation)都能够很好的支持。

对于其中的第二点,强调了观察者的判断力,其实我认为其中也包括观察者的身份角度。对于一个系统而言,观察者并不是只进行分析设计的工程师,编码阶段的程序员,还应该包括用户等所有这些同该系统有关的人员。作为不同的人员,对于系统就有不同的观察点、观察角度、身份等特殊因素。因此在不同身份的人(指参与者)甚至同一身份的人眼中说观察到的系统特性都是不尽相同的。在大学里大家都接触过透明性的概念,这就是不同观察者所观察角度不同的直观反应。对于用户来说,基本上底层的操作、算法、通讯对于他们来说都是透明的,他们根本不用理会(其实也不知道)内部用了什么。而对于一个负责某模块的程序员来说就不会考虑其他模块的实现,对于他们来说其他模块是透明的,他们只需要负责管理好提供的模块接口就OK了。

对于第三点,讲的就是面对对象分析设计的方向,在面对对象分析设计系统时,被分解的各个模块一定要做到高内聚、低耦合。有良好高内聚、低耦合系统常常会很容易维护,一个地方改动通常不需要牵扯到大的改动,维护行强。而且对于像VC程序这种更要求效率的程序来说,高内聚、低耦合也可以提高程序的运行期效率,应为对象内部的调用一般情况下会相比模块间的调用占用更少的执行时间,这样将高频动态封装在一个对象内部就会一定程度上提高程序运行期执行效率。

第四点则说明了面向对象程序设计对程序设计可复用性的优点。在这点中所“层次系统由仅仅少数不同的子系统构成”那么多数子系统在不同的复杂系统中都是能够重复使用的。比如说建筑一栋大厦和建筑桥梁,虽然两者都是复杂的系统,但是对于其结构中就会有很多相似甚至相同之处,没有必要建筑好大厦回头建筑桥梁的时候又要重新设计每一快砖瓦。

第五点提醒我们在系统设计时,尽量使用以往能够正常运行的子系统来重新构件新的系统。这一点不仅说明第四点中的复用性,而且也说明了一个我们常常要犯的错误。就是将并没有通过严格测试的子系统,匆忙的加入到大系统中,这样做不利于对系统的基层,常常引入了其他错误,使得系统频频崩溃,最严重会导致系统的重新分析。

这是我对面向对象的一点心得体会,虽然我们大家在平时工作中所面对的问题、问题域不同,使用的开发工具不同,但是面向对象是一种思维方式,有利于分析、解决问题的一种方法,并不和任何语言挂钩(当然语言对于面向对象特性的支持程度有所不同)。所以希望各位同事能够尽量使用科学的方法分析解决问题,形成一种设计模式,以供大家互相交流。

软件设计是一种艺术,也是一门工程学。