精华内容
下载资源
问答
  • 下列概念不属于面向对象
    千次阅读
    2020-12-21 14:52:37

    下列选项中,不属于Python的特点的是()。

    答:类库少

    为补偿参考系中的非惯性运动,我们引入了一个惯性力-ma_0,则牛顿第二定律应写为()。(假定汽车加速度为a_0。)

    答:ma=F-ma_0

    智慧职教: 茶席是茶艺艺术中的造型艺术( )

    答:正确

    采用公允价值模式进行后续计量的投资性房地产,应根据其预计使用寿命计提折旧或进行摊销

    答:×

    文字如果需要被强调的成为版面中的诉求重点,起到引起注目的效用,该如何做?

    答:线框、符号的强调 引文的强调 行首的强调 行首装饰性的强调

    下列哪项不属于肾上腺素的不良反应

    答:支气管平滑肌痉挛

    在新发展理念中,创新注重的是解决发展( )问题

    答:动力

    线粒体外能生成NADH的有

    答:乳酸脱氢反应 α-磷酸甘油脱氢反应 3-磷酸甘油醛脱氢反应

    组织主题班会的原则包括 () 。

    答:教育性原则 时代性原则 针对性原则 主体性原则 情境性原则

    根据被审计单位实际情况,选择以下方法对应付账款执行实质性分析程序()

    答:分析存货和营业成本等项目的增减变动,判断应付账款增减变动的合理性 分析长期挂账的应付账款,要求被审计单位做出解释,判断被审计单位是否缺乏偿债能力或利用应付账款隐瞒利润 将期末应付账款余额与期初余额进行比较,分析波动原因 计算应付账款与存货的比率,应付账款与流动负债的比率,并与以前年度相关比率对比分析,评价应付账款整体的合理性

    成教云: 根据爱德华.霍尔德研究,人与人之间谈话时大约在1.25米-3.5米之间为哪种人际距离()

    答:社会距离

    ( )不是合法的“打印内容”选项

    答:幻灯片浏览

    蒸汽机没有广泛应用到

    答:医药生产

    智慧职教: (第六章)将有关二叉树的概念推广到三叉树,一棵有24个结点的完全三叉树的高度为()。

    答:6

    待拆迁改造的再开发地产的评估应用进行评估

    答:剩余法

    在一般的计算机系统中,西文字符编码普通采用()。

    答:ASCII码

    冷却系统包括

    答:水冷 风冷

    下图中3所指示部件属于制动系的装置

    答:供能

    世界上大约()的人口以小麦为主食

    答:百分之四十

    一百二十回本《红楼梦》王熙凤的结局是?

    答:病死

    如下图所示,核桃君从舞台中心点出发,运行以下代码后,离中心点的距离为\n多少步? ()

    答:80

    更多相关内容
  • 面向对象编程基本概念

    千次阅读 2018-04-18 15:41:53
    引言 在软件工程的早期,史诗...今天大多数项目都使用面向对象概念。由于C ++引入了OOP,因此用户体验已经产生了关于如何最好地利用OOP的更多知识。有很多关于面向对象的协议和更多的争论。应该鼓励哪些功能? C ...

    引言

     在软件工程的早期,史诗般的挣扎着项目的复杂性,增长以及管理大型开发团队的挑战。面向对象编程(OOP)为软件社区引入了一场革命,以帮助解决这些问题。 OOP专注于模块化,改变容忍度,代码重用,易于理解和分布式开发。今天大多数项目都使用面向对象的概念。

    由于C ++引入了OOP,因此用户体验已经产生了关于如何最好地利用OOP的更多知识。有很多关于面向对象的协议和更多的争论。应该鼓励哪些功能? C ++是否定义了哪些功能是面向对象的。

    随着重用和验证IP在硬件验证中变得流行,OOP是适用的。事实上,功能验证为重用提供了理想的条件,因为标准协议,系统甚至测试和有趣的事务序列都利用了OOP。

    设计大型软件应用程序

     传统上,程序被视为一系列功能的集合。这适用于小型应用程序,但阻碍重用程序的一个子集或利用分布式并行开发过程,其中不同的工程师拥有程序的不同方面。那么我们如何设计一个大型应用程序呢? OOP建议使用“分而治之”的方法,其中应用程序是一组相关的交互对象。例如,模拟交通的应用程序将涉及汽车,司机和交通信号灯,而不是为整个交通系统设计应用程序,我们应该专注于单独的模块以捕捉汽车,司机和交通灯操作。测试平台或验证项目也是如此。我们专注于最终构成测试平台的数据项或协议特定组件,而不是专注于完整的应用程序。

    OOP中的对象是什么?

     一个对象是一个实体,它拥有的数据和对这些数据进行操作的方法。每个对象都可以被看作是一个独立的小机器或者具有不同责任的角色。在我们的交通仿真例子中,汽车,司机和交通灯都是对象。

     分布式开发环境

     OOP面临的挑战之一是定义对象和它们之间的交互。最初的协议是让个人和团队合作的关键。这些对象通过商定的公共接口(合同)提供服务。其他对象可以使用这个公共API。对象内部实现可以独立开发和完善。语言提供信息隐藏设施,以限制对象使用公共方法。下图演示了两个在OOP环境中工作的开发人员,使用单独对象之间的协议接口。


                           OOP接口对象启用并行开发

    分离问题

     我们可以使用相同的对象来创建其他系统吗?或复制一个对象并将其用于不同的系统?这需要建立独立的对象。对象之间不应存在功能重叠。例如,我们的交通仿真例子也可能包括一条赛道。在一个典型的赛道上,没有交通信号灯,没有转向灯,而且赛车速度更快。如果一辆汽车的实施假定存在交通灯,则不能参与没有交通信号灯的赛道系统。同样,一个功能验证示例可以拥有一个不应该自行发送或提交给特定协议/驱动程序的数据包。如果是这样,它不能用于需要不同驱动协议或协议分层的环境中。

     类,对象和程序

     类定义了对象的抽象特征(属性)和行为(方法)。这是一个蓝图,允许创建一个或多个相同类型的对象。例如,可能有一个汽车类定义了汽车对象可以包含的所有东西。然后,一辆特殊的汽车,比如...... Plorsche,是汽车类的一个子类(专业化),具有超越普通汽车类的特殊属性。最后,汽车物体是具有特定颜色和引擎属性的汽车的特定实例,例如银色Plorsche轿跑车。可能有许多Plorsche汽车共享这些属性;所有这些都将成为Plorsche子类或汽车专业化的对象。

    对象保存运行时数据并用作程序的构建块。程序或应用程序实例化对象并触发它们的交互。


     注: SystemVerilog类与动态特性的Verilog模块实例不同。模块实例,它们的编号和层次结构是在Verilog中进行阐述时创建的,并且在整个模拟过程中都是静态的。对象可以在运行时根据请求创建。这允许创建模块化和优化的数据结构。在功能验证中,测试平台的构建过程是动态的,这使得它更加灵活。它使用程序流控制来实例化所需的测试台结构。根据需要,动态对象用于表示数据项(如数据包,帧或事务),并且通常会考虑其他环境变量值

     使用泛化和继承

     人类使用泛化来感知世界。汽车的抽象概念意味着:四个车轮,一个发动机,至少两个车门,一个方向盘等等。这种抽象能力使我们能够组织数据并实现有效的沟通。例如,你可以说“我开车让我的车昨天工作”,听众不需要你定义一辆车,谈论你驾驶的特定汽车,或者你驾驶的方式。这些细节是不必理解你简单陈述的意图

     面向对象编程使我们能够在软件设计中做同样的事情。您可以定义泛型类的概念,并使用继承来创建该抽象类的特化。跑车可能是通用汽车概念的专业化。除了拥有所有的汽车属性外,它还具有更大的马力,更好的操控性,并且经常吸引人们的注意力。用户可以表达所需的功能 - 例如,驾驶()汽车 - 而无需知道特定汽车中驾驶方式的具体细节。

    使用继承允许具有足够类似接口的对象共享实现代码。一个永远不应该实例化的父类 - 意味着它仅用于建模目的以便重用和抽象 - 被声明为一个虚类.


    创建紧凑可重用代码

     如果您在对象之间有重叠,请考虑创建一个抽象类来保存通用功能并派生一个类来捕获变体。这将减少开发和维护所需的代码量。例如,请求和响应数据包可能具有相似的属性,但请求中生成的数据是在响应中收集的,反之亦然。



    OOP中的多态

     程序可能需要以程序的方式操纵一组对象。例如,您可能想要一个汽车的抽象句柄,并在一个循环中调用数组中所有汽车的run()方法。每个汽车类都有不同的run()方法实现。对抽象类执行run()并执行特定run()的能力称为“多态性”。程序员不必提前知道对象的确切类型。下面的例子3-2演示了Plorsche和Flerrari汽车是如何从一个抽象运动车类派生的。多态性允许程序的print()任务持有一个指向可能包含Plorsche和Flerrari汽车的虚拟类数组的指针,但为每个项目执行正确的print()函数

     例3-2继承和多态


    Downcast

     想象一下,一辆具有飞行能力的新车被发明出来,而其他车辆则无法飞行。一个汽车使用者不希望发现他们的汽车在驶入鸿沟后不能飞行。在开始驾驶之前需要提前警告,以确保您的汽车能够飞行。在这种情况下,您需要在模拟开始之前获得编译时错误消息。例如,您不希望非法分配在执行两天后中断仿真。编译器强制用户在使用其一个子类型特征或属性之前明确地向下转换泛型引用。 (术语向下意味着在继承树中下降。)

    注:在我们的汽车示例中,用户需要明确声明指针用fly()方法持有汽车。将通用句柄分配给特定的句柄称为downcast。


    类库

     类库是用于加快系统实现的类的集合。用户可以通过定制它们来从库类派生新的类,或者只是实例化和使用它们,而不是从头开始实现。例子包括数学图书馆,图形图书馆,甚至是面向验证的图书馆。 UVM有一个类库。类库的一个重要优点是它编写了最佳实践并实现了标准化和重用。使用类库的缺点是需要学习类库规范。虽然类库带有API规范,但通过类库实现并了解功能和建议的实现是一种很好的做法。

    静态方法和属性

     对象具有保存其特定数据和状态的属性。例如,一个Plorsche状态可以被“驱动”,而一个不同的Plorsche可以被“停放”。但是,SystemVerilog支持属于一个类而不是特定实例的静态属性。即使没有实例存在,也可以访问这些属性,并允许多实例预订和设置。例如,您可以使用静态属性来计算特定类的实例数量。您也可以拥有可以操纵静态属性的静态方法。静态方法不能访问非静态属性,因为这些属性可能不存在。

    调用静态方法不涉及特定的实例,可以通过使用class_name :: method_name()来实现。 例如,我们可以使用这样的汽车静态方法:car::increment_counter()

    参数化类

     当需要用于不同数据类型或大小的类似逻辑时,使用参数化类。参数化类的经典用法适用于容器。以下示例显示了不同类型对象的容器。


    包和命名空间

     典型的应用程序利用来自多个来源的许多类。有可能某些类型,类或函数名称可能会发生冲突并导致编译错误。修改类和类型名称以获得唯一性的成本可能很大。此外,当使用加密的代码时,如验证IP(VIP),这个问题更具挑战性。

    为了避免全局名称空间发生冲突,面向对象的语言将添加包或名称空间功能。这为每个包定义创建了一个不同的范围。在不存在冲突的情况下,用户可以使用import命令将所有定义导入联合名称空间。如果存在冲突并且不可能包含导入,则用户可以导入特定类型或使用类的完全限定类型名称(包名称和类名称的组合)。

    例如,假设在我们的系统中,开发了两种类型的汽车类别(sports_car),一种是品牌A,另一种是品牌Z.没有包装,两个类别称为“sports_car”(来自品牌A和品牌Z各一个)无法编译

    在以下示例中,我们将包导入单个模块范围。 这是可能的,因为在包内与名称没有冲突。 您可以导入包中的所有符号,或者只使用不碰撞的选定符号。


     为所有可重用代码使用包至关重要,以便与其他包中的其他类似类共存并防止代码修改。

    软件设计模式

     软件问题的创造性解决方案可以产生随机的好处和后果。另外,已经证实的解决方案可以产生更一致的结果我们不反对创造力,但大多数验证挑战需要创造性和常识性,而不需要重新发明轮子。设计模式是软件设计中常见问题的一般可重复解决方案。 1995年出版的“设计模式:可重用面向对象软件的元素”(通常被称为“四人帮”或“GoF”一书)一书创造了术语设计模式,并成为面向对象的软件的重要来源,面向设计理论与实践。这些最为人所知的做法是在包含姓名,挑战,代码样本等的模板中捕获的。有关更多信息,请阅读Gamma,Helm,Johnson和Vlissides的“设计模式:可重用面向对象软件的元素”一书。

    软件设计模式:单例模式

    许多系统都要求系统资源只应该实例化一次。这可能是内存管理员,全球协调员或其他系统级协调员。问题是如何创建一个具有内置限制的类只能实例化一次?单例解决方案通过使构造函数专用于类来工作,从而防止类被实例化。实例化类的唯一方法是调用静态方法,该方法在首次调用时分配类的本地实例并返回调用者的对象句柄。对此静态方法的连续调用将返回实例化的实例句柄,而不分配新的类。 UVM库中的单例的一个示例是报告服务器具有受保护的构造函数,以将服务器的创建限制为单个实例

    软件设计反模式

     反模式,也称为陷阱,通常是对问题的不良软件解决方案进行彻底改造。这个词是由安德鲁柯尼希1995年创造的,受到了四人帮的启发。使用不良做法有多种原因。在某些情况下,它涉及缺乏计划;在其他情况下,在错误的情况下使用完美的解决方案,使其适得其反。与设计模式一样,反模式具有正式的模板,其名称,原因,含义等等。反模式还包括恢复过程(重构)以修补误用的实践。反模式的一个例子是“意大利面条”代码 - 源代码,它具有复杂和纠结的控制结构。有关更多信息,请阅读Brown,Marley,McCormick和Mowbray撰写的书籍“AntiPatterns:危机中的软件重构,体系结构和项目”

    为什么现有的面向对象方法不够?

     上面提到的是一些书籍,它们记录了多年来在面向对象编程方面积累和证实的经验。那么,为什么我们需要更多的方法?大多数通用概念适用于功能验证任务并且有效。但功能验证引入了独特的挑战,并且与软件开发不同。与每六个月发布的程序相反,功能验证的结果是最终测试,其中几项可能会在一天内创建。考虑下图中的测试平台以及使用它的三个测试。每个测试涉及测试平台的不同方面。它可能会改变配置,引入不同的序列,在生成的数据项上使用约束等来实现其目标。面向对象的编程不是为了这样的极端重用,也没有考虑到通过测试进一步修改类的开放性。


    面向方面的编程

     最近,软件设计模式已被批评为建议复杂的配方,而不是改进工具或语言。 OOPSLA(面向对象的程序设计,系统,语言和应用)是一个主要在美国举行的年度ACM会议,它主持了一个名为“四人帮”试验的小组。 Verisity引入了e语言来解决验证挑战,并使用这种内置解决方案而非设计模式。在面向方面的特性e面(这是面向对象的超集)的基础上,面向方面的编程提供了许多SystemVerilog语言限制的简单解决方案。在SystemVerilog UVM中,我们使用工厂解决方案,回调,字段宏,配置机制等等。在这些不是必需的。此外,e允许其他功能,例如覆盖范围和枚举类型扩展,用于数据项随机化的更强大的建模功能以及显着简化验证任务的其他语言功能。该行业在向其他HVL提供有限的AOP扩展方面做出了一些努力,但这些扩展受到限制,并且无法理解挑战和解决方案。我们只能希望SystemVerilog能够在某些时候采用这些功能并简化验证工作,从而为SystemVerilog用户群带来益处

    概要

     面向对象编程引入了一种处理大型软件应用程序复杂性的方法。它侧重于模块化,适应变化和重用,这是功能验证的关键。了解理论和动机是有益的,但是没有必要为了使用UVM库而掌握理论。使用UVM库的优点之一是它将最好的验证实践编入库基类,使您能够按照推荐的指示完成正确的事情

    展开全文
  • JAVA面向对象考试题 50道基础选择题,肯定的有一道适合你, 相信,不会有错 java面向对象题型你的不二选择
  • 面向对象的基本概念

    千次阅读 热门讨论 2020-09-06 08:43:02
    结构化程序设计 ➢结构化程序设计的基本方法:采用自顶向下、逐步求精及模块化的思想,将复杂的大问题层层分解为许多 简单的小问题。 ➢结构化程序设计的三种基本结构:... ➢这种情况下,面向对象的程序设计方...

    结构化程序设计

            ➢结构化程序设计的基本方法:采用自顶向下、逐步求精及模块化的思想,将复杂的大问题层层分解为许多

    简单的小问题。

            ➢结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构。

            ➢结构化程序设计的基本思想:

                            数据结构+算法=程序

            ➢结构化程序设计的缺点:程序在代码规模庞大时,变得难以理解、难以扩充、难以查错和难以复用。

            ➢这种情况下,面向对象的程序设计方法就应运而生了。

     

    面向对象程序设计的概念和特点

     

    一、面向对象思想的提出

     

            ➢这面向对象程序设计方法是20世纪90年代以来软件开发方法的主流,它继承了结构化程序设计方法的优点,同时又比较有效地改善了结构化程序设计的不足

            ➢面向对象的程序设计方法:使分析、设计和实现一个系统的方法尽可能地接近人们认识-一个系统的方法。通常包括3个方面:面向对象的分析面向对象的设计面向对象的程序设计

            ➢面向对象技术把问题看成是对象的集合。对象具有两个特性:一是对象本身的信息,也称为属性; 一是对对象的操作,也称为行为

            ➢对象=数据(属性) +函数(行为)

            ➢是对象的一个抽象。

     

    二、面向对象程序设计的特点

     

            面向对象程序设计的四个基本特点:抽象、封装、继承和多态。

            1)抽象:将同一类事物的共同特点概括出来,这个过程就叫作“抽象”。

            是对现实世界中客观事物的抽象。对于一一个 具体的类,它有许多具体的个体,这些个体叫做“对象

            对象是系统中用来描述客观事物的一个实体,用对象名属性操作三要素来描述对象。

     

            描述属性的数据称为成员变量数据成员,对这组属性进行操作的函数称为成员函数。对象由数据成员成员

    函数构成。

     

     

            2)封装:就是把对象的属性和操作结合成-一个独立的单元。

    封装作用:

            ➢数据和操作数据的函数紧密联系起来;

            ➢将对象的一部分属性和函数隐藏起来,让这部分属性和函数对外不可见,起到保护作用。

            ➢另一些属性和函数对外可见,作为对对象进行操作的接口

            3)继承:在编写一个“新”类的时候,以现有的类作为基础,使得新类从现有的类“派生”而来,从而达到代码扩充和代码复用的目的

            4)多态:不同的对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性。利用多态性,程序中只需进行一-般形式的函数调用,函数的实现细节留给接受函数调用的对象,这大大提高了人们解决复杂问题的能力

     

     

    类的初步知识

     

    一、类的定义

     

    1.类的基本概念

            ➢是具有相同的属性和操作的一-组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性(数据变量)和操作(成员函数)两个主要部分。

            ➢是一种用户自己构造的数据类型;

            ➢要先声明后使用、是具有唯一标识符的实体;

     

    2.声明类

    C++中声明类的一般形式为:

        class类名{

                    private:

                            私有变量和函数

                    public :

                            公有变量和函数

                    protected:

                            保护变量和函数

        };

    说明:

        ①private是完全私有的,只有本类内可以访问,派生类和外部都不可以访问;

        ②protected是受保护的,只有本类内和派生类可以访问,外部不能访问;

        ③public内、外部都能访问;

        ④如无访问权限的关键字,则默认声明为private;

        ⑤不能在类的声明中对数据变量进行初始化;

        ⑥类声明中可以给出成员函数的参数的默认值;

        ⑦类中声明的任何成员不能使用externautoregister关键字修饰;(externautoregister存储类型关键字)

        ⑧类中可以不含有任何成员变量和成员函数,这样的类称为空类

     

    []描述点的Point类。

         class Point               //class是定义类的关键字,Point是类名

            { private :              //声明为私有访问权限

                    intx, y;          //私有数据成员

               public:               //声明为公有访问权限

                 void Setxy (int a, int b);    //声明无返 回值的公有成员函数

                 void Move( int a, int b);    //声明无返回值的公有成员函数

                 void Disp( );    //声明无返回值的公有成员函数

                 int Getx( );    //声明返回值为int的公有成员函数

                 int Gety( );    //声明返回值为int的公有成员函数

             };                      //类声明以分号结束

     

     3、定义成员函数

        返回值类型  类名::成员函数名(形参列表)

            {    成员函数的函数体

                }

        说明:

            ①返回类型是指这个成员函数返回值的类型;

            ②类名是指成员函数所属类的名字;

            ③“::”是作用域运算符用于表示其后的成员函数属于这个特定的类;

            例:定义属于Point类的成员函数Setxy

                void Point::Setxy(int a, int b)

                    {x=a; y=b; }

     

            ④类中定义的成员函数允许重载

            ⑤可以使用关键字inline将成员函数定义为内联函数(凡是出现调用该函数的地方,编译程序自动将其转换为该函数的函数体,不再在程序执行时调用该函数,大大提高了效率)

            如: inline int Point::Getx ( )

                    {returnx; }

            ⑥如果在声明类的同时,在类体内给出成员函数的定义,就默认为内联函数,

                如将声明Getx的语句“int Getx () ;”改为“int Getx () {returnx; }”, 则Getx为内联函数。

     

    二、类的定义示例

     

    定义日期类myDate

                class myDate

                { public: 

                    myDate( );    //构造函数

                    myDate(int, int, int);    //构造函数

                    void setDate(int, int, int);    //设置日期

                    void setDate(myDate);    //设置日期

                    myDate getDate( );    //获取日期

                    void setYear(int);    //设置年

                    int getMonth( );    //获取月

                    void printDate( ) const;    //打印日期

                 private: 

                    int year, month, day;     //成员变量,表示年、月、日

               };

                //在类体外定义成员函数

                myDate::myDate( )        //构造函数用来初始化

                { year= 1970, month=l, day=l;

                myDate::myDate(int y, int m, int d)     //构造函数

                { year=y; month=m; day=d;

                }

                void myDate::setDate(int y, int m, int d)     //用变量设置日期

                { year=y; month =m; day=d;

                    return; }

                void myDate::setDate(myDatc oneD)     //用对象设置日期

                {year=oneD.year; month =oneD .month; day =oneD.day;

                return

                }

                myDate myDate::getDate( )    //获取日期

                { return *this;}

                void myDate::setYear(int y)  //设置年

                { year=y;

                    return;

                }

                int myDate::getMonth( )  //获取月

                { returm month;

                }

                void myDate::printDate( ) const  //打印日期

                { cout<< year <<"/"<< month <<"/"<< day;

                return;

                }

     

    类的示例程序剖析

     

    一、程序结构

     

        一个完整的C++程序包括以下几部分

                ➢一个主函数,可以调用其他函数,但不能被调用,也称为主程序。

                ➢用户定义的任意多个的类及全局函数。

                ➢全局说明。在所有函数和类定义之外的变量说明及函数原型。

                ➢注释。

                ➢头文件。

     

    二、成员变量与成员函数的定义

     

        1.成员变量: -般均定义为私有访问权限,这样的成员仅能在本类内访问。类外需要通过访问本类函数来访问

    私有的成员变量。

        2.成员函数的定义

            返回值类型类名::成员函数名(形参列表)

            {

                    函数体

                    }

     

    三、创建类对象的基本形式

     

        ➢定义一个普通对象,即类变量的基本方法有两种。

          1)       类名    对象名;

                    类名    对象名(参数); //定义对象的同时初始化

                    类名    对象名=类名(参数) ;

          2)       类名    *对象指针名=new类名;

                    类名    *对象指针名=new类名( );

                    类名    *对象指针名=new类名(参数);

     

        ➢声明对象引用

                类名  &对象引用名=对象;

        ➢声明对象指针

                类名  *对象指针名=对象 的地址; 

        ➢声明对象数组

                类名  对象数组名 [数组大小];

        例:定义了类C后,可以有如下的声明:

            C al,bl;             //定义了C类的对象al和bl

            C *p =&al;        //定 义了指向对象al的C类类型的指针p

            C &R=bl;          //定义了C类类型对象bl的引用R

            C A[3];             //定义了C类类型对象的数组A,含3个元素

     

    访问对象成员

     

    一、使用对象访问成员变量与调用成员函数

     

            ➢对象访问成员变量的格式:

                    对象名.成员变量名

            ➢通过对象的指针访问成员变量的格式:

                    对象的指针->成员名;

            ➢通过对象的引用访问成员变量的格式:

                    对象的引用.成员变量名

            ➢调用成员函数的格式:

                    对象名.成员函数名(参数表)

                    对象的指针->成员函数名(参数表)

                    对象的引用.成员函数名(参数表)

     

    类成员的可访问范围

     

    一、访问范围说明符的含义

           

     public:是公有的,使用它修饰的类的成员可以在程序的任何地方被访问。

            private:是私有的,使用它修饰的类的成员仅能在本类内被访问。

            protected:是保护的,它的作用介于pub lic与pr ivate之间,使用它修饰的类的成员能在本类内及子类中被访问。一般会将成员变量声明为私有的,而将相关的成员函数声|明为公有的,以便在类的外部可以调用这些成员函数来操纵成员变量。

     

    二、成员的访问

     

            使用public修饰的成员,既可以在本类内及主函数内访问,也可以在其他类中访问,只要定义了该类的对象即可。

            使用private修饰的成员,仅可以在本类内访问,不能在主函数内访问。

            使用potected修饰的成员,既可以在本类内访问,也可以在子类内访问。

            没有使用访问修饰符的成员,默认是私有的,即与使用private 修饰的成员具有同等的

    访问权限。

     

    三、隐藏的作用

     

            设置私有成员的机制叫作“隐藏”。

            “隐藏”的优点:

                1)有利于程序的修改。

                2)可以避免对对象的不正确操作

     

    标识符的作用域与可见性

     

    标识符的作用域

     

    C++中标识符的作用域有函数原型作用域、局部作用域(块作用域)、类作用域和命名空间作用域。

            1.函数原型作用域:在声明函数原型时形参的作用范围就是函数原型作用域,这是C++程序中最小的作用域。

            例: double ares (double r) ;

            r的作用范围就在函数area形参列表的左右括号之间。

            2.局部作用域:程序中使用相匹配的一-对大括号括起来的一段程序称为块。作用域局限在块内的称为局部作用域。具有局部作用域的变量也称为局部变量。

            3.类作用域

            设: m是类X的成员,x是类X的对象,ptr是指向类X的一个对象的指针。则对m的访问方式有如下2种:

                1)类X的成员函数中可直接使用m。(除非成员 函数中有同名变量)。

                2)在类外,可以通过表达式x.m、x::m或者ptr->m来访问m。但注意不能违反m的访问修饰符的限定。

            4.命名空间作用域

            命名空间是为了消除程序各大模块之间同名引起的歧义。定义命名空间的一般形式如下:

            namespace命名空间名

                    {命名空间内的各种声明(函数声明、类声明、..

                    }

            在命名空间内部可以直接引用当前命名空间中声明的标识符,如果需要引用其他命名空间的标识符,需要使用下面的方式:

                        命名空间名::标识符名

     

            C++提供两种形式using语句:

            1) using命 名空间名::标识符名;

            2) using namespace命名空间名;

            使用该语句后,可以在当前作用域中直接引用该命名空间内的任何标识符。

            例: using namespace std;

            具有命名空间作用域的变量也称为全局变量

     

            标识符的可见性的一般原则:

            ➢标识符要声明在前引用在后

            ➢在同-个作用域中,不能声明同名的标识符。在没有互相包含关系的不同作用域中声明的同名标识符,互不影响。

            ➢如果存在两个或多个具有包含关系的作用域,外层声明了一个标识符,而内层没有再次声明同名标识符,那么外层标识符在内层仍然可见。如果在内层声明了同名标识符,则外层标识符在内层不可见,这时称内层标识符隐藏了外层同名标识符,这种机制称为隐藏规则

     

    内容小结

     

            面向对象程序设计方法继承了结构化程序设计方法的优点,同时又比较有效地改善了结构化程序设计的不足。

            对象是系统中用来描述客观事物的一个实体, 具有两个特性:一个是状态:另一个是行为。状态是指对象本身的信息,也称为属性:行为是对对象的操作。C++中使用对象名、属性和操作三要素来描述对象。用数据表示对象的属性,用函数实现操作。描述属性的数据称为成员变量或数据成员,函数称为成员函数。 对象由一组属性和对这组属性进行操作的成员函数构成。

            面向对象的程序设计有“抽象”“封装”“继承”和“多态”4个基本特点。

            访问范围说明符有publie (公有) private (私有)和protected (保护),在类定义中可以以任意的次序出现任意多次。

            类是用户自定义的一种数据类型,定义类时系统并不为类分配存储空间,而只是把类看作是一种模板或样板。

            如果成员变量是私有的,那么在类外不可访问,所以通常在类内会为每个成员变量定义一对访问函数: 一个用来设置这个成员变量的值, 常称为设置函数:另一个用来获取这个成员变量的值,常称为获取函数。

            C++中标识符的作用域有函数原型作用域、局部作用域(块作用域)、类作用域和命名空间作用域。

            对于在不同的作用城声明的标识符,可见性的般原则如下:

            ●标识符要声明在前,引用在后。

            ●在同一个作用城中,不能声明同名的标识符。在没有互相包含关系的不同的作用域中声明的同名标识符,互不影响。

            ●如果存在两个或多个具有包含关系的作用域。外层声明了一 个标识符,而内层没有再次声明同名标识符,那么外层标识符在内层仍然可见。如果在内层声明了同名标识符,则外层标识符在内层不可见,这时称内层标识符隐藏了外层同名标识符,这种机制称为隐藏规则。

     

    展开全文
  • 1、封装性:具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433653366法的具体运行步骤,取而代之的是通过消息传递机制发送消息给它。封装是通过限制只有特定类的对象...

    展开全部

    封装性、继承性、多态性。

    1、封装性:

    具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433653366法的具体运行步骤,取而代之的是通过消息传递机制发送消息给它。封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。

    通常来说,成员会依它们的访问权限被分为3种:公有成员、私有成员以及保护成员。有些语言更进一步:Java可以限制同一包内不同类的访问;C#和VB.NET保留了为类的成员聚集准备的关键字:internal(C#)和Friend(VB.NET);Eiffel语言则可以让用户指定哪个类可以访问所有成员。

    具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体执行步骤,取而代之的是通过消息传递机制传送消息给它。

    2、继承性:

    继承性是面向对象技术中的另外一个重要特点,其主要指的是两种或者两种以上的类之间的联系与区别。继承,顾名思义,是后者延续前者的某些方面的特点,而在面向对象技术则是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续。

    如果按照继承源进行划分,则可以分为单继承(一个对象仅仅从另外一个对象中继承其相应的特点)与多继承(一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象)。

    如果从继承中包含的内容进行划分,则继承可以分为四类,分别为取代继承(一个对象在继承另一个对象的能力与特点之后将父对象进行取代);

    包含继承(一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于等于父对象,实现了对于父对象的包含)、受限继承、特化继承。

    3、多态性:

    从宏观的角度来讲,多态性是指在面向对象技术中,当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态。

    从微观的角度来讲,多态性是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式来对相同的函数名进行调用,即便这若干个具有相同函数名的函数所表示的函数是不同的。

    92e2f143ef80cb4bdc98e6fd888c9ba8.png

    扩展资料:

    面向对象编程语言

    支持部分或绝大部分面向对象特性的语言即可称为基于对象的或面向对象的语言。Simula (1967)被视为第一个具有面向对象特性的语言。早期,完全面向对象的语言主要包括Smalltalk等语言,目前较为流行的语言中有Java、C#、Eiffel等。

    随着软件工业的发展,比较早的面向过程的语言在近些年的发展中也纷纷吸收了许多面向对象的概念,比如C→C++,C→Objective-C,BASIC→Visual Basic→Visual Basic .NET,Pascal→Object Pascal,Ada→Ada95。

    “纯粹”的面向对象语言, 因为所有的东西都是由对象所组成,例如:Eiffel,Emerald,JADE,Obix,Ruby,Scala,Smalltalk,Self。

    脚本中的OOP

    近年来,面向对象的程序设计越来越流行于脚本语言中。Python和Ruby是创建在OOP原理的脚本语言,Perl和PHP亦分别在Perl 5和PHP 4时加入面向对象特性。

    展开全文
  • 面向对象编程思想

    2015-03-26 10:36:21
    改篇文章是网上我网上搜罗的较为全面的面向对象编程思想的文章,在此跟大家分享下
  • 面向对象设计 — 类和对象

    千次阅读 2021-09-24 09:02:46
    面向对象设计的核心——类和对象 面向对象的三条学习主线# java类及类的成员 属性、方法、构造器;代码块、内部类 面向对象的三大特征 封装性、继承性、多态性(抽象性) 其他关键字 this、super、static、...
  • java面向对象

    万次阅读 多人点赞 2018-08-21 16:51:59
    包括面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单例设计模式、继承、多态、内部类、异常、包等java基础知识。 1、面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是...
  • C++面向对象面向对象程序设计概述 会有点长,不过读过就全学会喽!!!!!! 会有点长,不过读过就全学会喽!...1.2 面向对象程序设计的基本概念面向对象的程序设计 中,着重点在那些将要被操作的数据, 而不是
  • 面向对象分析与设计

    千次阅读 2020-04-28 11:20:55
    面向对象分析与设计面向对象分析(Object-Oriented Analysis, OOA)3个模型组成对象模型的5个层次主题面向对象分析过程软件系统建模原则**对象建模原则(1): 抽象****继承(一般-特殊结构)****对象建模原则(2): ...
  • 第8章-面向对象程序设计
  • 目录 第 4 章 Java面向对象程序设计 一.单项选择题 二. 填空题 三.简答题 四.程序阅读题 ...五....一....A....B....C....D....2.下列不属于面向对象编程的三个特征的是 A.封装 B.指针操作 C.多态性 D.继承 3....
  • 面向对象程序设计总复习资料(2008_秋)
  • [软件工程] 面向对象设计

    千次阅读 2019-10-30 15:18:06
    面向对象设计面向对象设计一、 面向对象设计的准则(一) 模块化(二) 抽象(三) 信息隐藏(四) 弱耦合对象之间的耦合可分为两大类:(1) 交互耦合(2) 继承耦合(五)强内聚(六)可重用二、启发规则(一) 设计...
  • 7) 面向对象:Python 既支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与...
  • C++复习题(面向对象程序设计)

    千次阅读 多人点赞 2020-07-14 15:31:32
    下面选项中不属于面向对象程序设计特征的是( C ) 。 A)继承性 B)多态性 C)相似性 D)封装性 可用作C++语言用户标识符的一组标识符是( B )。 A) void define +WORD B) a3_b3 _123 YN C) for -abc Cas
  • 直接提取动词短语得出的关联-UML与面向对象的电子商务系统分析
  • 面向对象(Object Oriented,OO)是当前...面向对象概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
  • Java面向对象程序设计,期末复习试题,附答案解析 面向对象程序设计复习试 JAVA 面向对象程序设计复习试题+解析 1) 在 JAVA 编程中,关于 Font 下列()是正确的. (选择两项) a) 在我们的程序中可以使用 Font 类
  • 对C++面向对象的编程的理解

    千次阅读 2019-01-16 18:05:06
    本节主要介绍面向对象方法的优点以及它的一些基本概念。 2.3.1面向对象方法的优点(1)与人类习惯的思维方法一致。 长期以来,人与计算机之间仍存在着较大的隔阂,人认识问题时的认识空间和计算机处理问题时的方法...
  • 面向对象的基本特征

    2017-09-13 15:25:04
    面向对象方法具有三个基本特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。 封装:将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能; 继承:是面向对象实现软件复用的重要...
  • 只是一本有国外著名编程大师萨维奇编著的学习c++的经典教材
  • 软件工程导论课件之第12章面向对象实现(第五版)(张海藩编著).pptx
  • 软件工程导论课件之第12章 面向对象实现(第五版)(张海藩编著).pptx
  • java面向对象试题

    2011-06-17 23:15:22
    java面向对象试题 java面向对象试题 java面向对象试题 java面向对象试题
  • 面向对象介绍

    2012-10-01 08:37:05
    面向对象技术介绍,简单介绍了面向对象的数据结构
  • Java—面向对象设计—类和对象

    千次阅读 2020-07-31 11:04:15
    理解面向对象程序设计 面向对象程序(Object-oriented programming,OOP)设计是继面向过程又一具有里程碑意义的编程思想,是现实世界模型的自然延伸。下面从结构化程序设计说起,逐步展示面向对象程序设计。 结构化...
  • 老师给的java2面向对象程序设计期末复习题(含答案)选择题及填空 含答案共八页
  • 面向对象复习总结

    千次阅读 2016-12-07 21:11:27
    面向对象基本概念和原理 UML( UnifiedModeling Language )基础 面向对象设计原则 面向对象设计模式 什么是面向对象 面向对象的方法是一种分析方法、设计方法和思维方法。 面向对象方法学的出发...
  • 你好,我是前阿里手淘前端...一些新人在学习JavaScript面向对象时,往往也会有疑惑:为什么JavaScript(直到ES6)有对象的概念,但是却没有像其他的语言那样,有类的概念呢?为什么在JavaScript对象里可以自由添加...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,974
精华内容 8,389
关键字:

下列概念不属于面向对象