2024年10月面向对象的生活例子(举生活中实例说明 面向对象中的抽象原则)

 更新时间:2024-10-12

  ⑴面向对象的生活例子(举生活中实例说明面向对象中的抽象原则

  ⑵举生活中实例说明面向对象中的抽象原则

  ⑶类有属性和方法,一个合理的类对应现实世界具体的某种事物。如动物,人,桌子,矩形等等。但是描述一个人的类并非要将人所有的特征都写出来作为属性,或是所有能作的动作都作为方法。如果程序中只是想调用人走路的方法或名字的属性,那么一个关于人的类可能只有一个名字属性和一个走路方法。反过来,将这些相关的属性和方法封装在一起便抽象出了类。记住是相关的,你也可以声明一个包含尺寸属性和爬行动作的人类,但多数情况下这个类不能正常工作,甚至是错误的类。除非程序在描述一个变异成巨型蓝色爬行怪兽的人类。动物类(抽象类内部有抽象方法:进食猫类(实体类实例方法:吃鱼狗类(实体类实例方法:吃屎抽象的不是一个具体的事物,比如动物,我们根本想象不出动物是怎么样一个具体的东西。动物会进食,但是怎么进食我们也不清楚但是实例到一个具体的动物,比如猫或狗。我们就能很明确的知道猫狗的特征。

  ⑷面向对象(ObjectOriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

  ⑸面向对象具有哪些特性以及对这些特性的理解

  ⑹面向对象(ObjectOriented,缩写为OO是现代软件技术的精髓。从早期的SmallTalk到如日中天的Java,都渗透着面向对象思想。OO具有三大特性:封装性、继承性和多态性。想掌握面向对象思想,就必须深入理解其三大特性。这里我尽量少谈概念,只用一个生活中的例子和一段代码来解释它们。、封装性(Encapsulation)所谓封装,就是将某些东西包装和隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。OO将万物都视为“对象”(Object),任何对象都具有特性和行为。我们将其特性称为“成员变量”(MemberVarible),将其行为称之为“成员函数“(MemberFunction),被封装的特性只能通过特定的行为去访问。大家都见过旅馆里常用的一种茶叶吧,就是用纸袋把茶叶包装起来再系是一根线。用的时候只需要将其放在水杯里泡就行。这样的好处是不会将茶叶渣和茶垢弄的满杯子都是。好!这就是一个封装的例子。我们喝茶的目的是享受茶叶的香冽;所以茶叶的味道(Flavour就是茶叶所具有的最重要特性之一;可是我们无法直接享受它的清香,因为被外面的纸袋“封装”起来了。唯一的办法就是“泡”(Dilute,将茶袋扔在开水中泡,它的味道就出来了,融入水中。如果我们把袋装茶叶看作一个对象的话,它提供了成员变量Flavour和成员函数Dilute。并且Flavour是私有(Private的,我们不能直接把它吞进肚子去,而只能通过成员函数Dilute才能享受Flavour。下面用C++代码来描述这个例子:ClassCTea{Private:Cstringm_Flavour;//味道Cstringm_Color;//颜色......//等等其它属性Private:VoidCTea();//构造函数Void~CTea();//析构函数Public:CstringDilute(;//沏茶......//等等其它方法}CstringCTea::Dilute(){//怎样泡出味道来的代码}这就是封装。通过将对象的某些属性声明为Private隐藏起来,只能使用其提供的特定方法去访问。、继承(Inheritance)如果只是封装,那么非面向对象语言也能部分的做到。比如在C中,用结构(Struct)、VB中用自定义类型(Type也能封装一些变量。OO最有吸引力的特性是继承。通俗的说后代具有祖先的某些特点就叫继承,当然后代还可以具有自己独有的特征。举个例子吧,菜刀。菜刀(cutlery是钢(Steel)做的,钢是一种金属(Metal),金属则是大千世界里的一种物质(Substance)。所以菜刀的一些特性可以追溯到物质具有的一般属性。正是因为这个道理,MFC中所有类均从CObject继承而来。这就是继承。菜刀直接继承了钢的特性,钢又继承了金属的特性,......下面的代码描述了这种复杂而有独特的继承关系:ClassCSubstance{Private:intm_color;voidCSubstance();void~CSubstance();//......(我是学文科的,具体属性说不上来}ClassCMetal:PubliSubstance{voidCMetal();void~CMetal();//......}ClassCSteel:PubliMetal{voidCSteel();void~CSteel();//......}Classutlery:PubliSteel{private:Cstringm_Blade;voidutlery();void~utlery();//......Public:voidCut();}这里,CSubstance被称为基类(Baseclass),其它被称为衍生类(Derivedclass)。衍生类与基类是“Iskindof”的关系。子类与其祖先类之间复杂的函数调用关系不在本文讨论之列。继承是一种树状的层次关系。子类在继承祖先类的成员变量和成员函数的同时也可以定义自己的成员变量和成员函数。比如,Metal除了继承了Substance的一般特性外,还具有自己的属性诸如可延展性;utlery在继承CSteel的特性后还具有自己的成员诸如“刀刃”(Blade)、“锋利”(Sharpness)、行为有如“切”(Cut等。面向对象技术是对现实生活的抽象,你可以用生活中的经验去思考程序设计的逻辑。、多态性(Polymorphism)讨论多态之前先要明白什么是“虚拟”(Virtual)。C++/MFC就是用虚拟这种方式实现多态的。为什么“虚拟”这个概念?看下边的例子:ClassCincect//昆虫类{private:intm_foot;//脚的数量......//其它成员变量private:voidCincect();void~Cincect();public:voidBite()//咬人{......//怎样咬人的代码,比如张开嘴啃}}我把Bite(咬这个动作在基类中定义为一般化动作。可是,不是所有昆虫咬人的方法都一样(况且还有的根本就不咬人呢,比如蜻蜓,比如蚊子是用嘴那个吸管叮人而蚂蚁是用嘴去夹。从昆虫这个类别衍生出以下两个类别:Cant(蚂蚁、Cmosquito(蚊子。classCant:publiincect//蚂蚁类{......}classCmosquito:publiincect//蚊子类{......}它们都继承了Cincect的所有成员,当然也继承了Bite()这个动作。现在就有问题了:同样继承自昆虫,当我们使用Bite()这个动作时怎么才能区分蚂蚁和蚊子各自的独有的咬人方式呢?方法之一是用“::”符号指明具体引用的是那一个,但这样明显失去了灵活性;另一种方法就是“虚拟”。使用关键字virtual将Bite()声明为虚拟函数,然后在每个衍生类中重新定义,描述它们各自的咬人方法,调用的时候也不会都一种结果啦。于是上边的例子可以改写为:ClassCincect//昆虫类{private:intm_foot;//脚的数量......//其它成员变量private:voidCincect();void~Cincect();public:virtualBite(){}//咬人,但我们只声明这个成员函数,//却让它什么动作都不做,让衍生类自己去定//义各自的咬人方法}classCant:publiincect//蚂蚁类{......virtualBite();}Cant::Bite(){......//蚂蚁具体的咬人方式}classCmosquito:publiincect//蚊子类{......virtualBite();}Cmosquito::Bite(){......//蚊子具体的咬人方式}所以,虚拟的目的是只在基类中将一般化动作声明一个成员函数的原型而不做具体定义,让衍生类自己去定义。这就是面向对象的特征之三:多态性。基类的同一个成员在不同的衍生类中可以具有不同的形态,更好地抽象和描述大千世界中的诸多“对象”。.了解什么是多态性.如何定义一个虚方法.如何重载一个虚方法.如何在程序中运用多态性

  ⑺问题一:面向对象怎么解释?面向对象是一系列用对象观点分析、设计以及实现软件的方法和经验的总和(个人总结的,它以对象为核心,努力构建一个高内聚、低耦合的软件。分析和设计一款软件时,我们要建立一系列的模型。在面向对象中使用的模型称为面向对象模型(简称对象模型,基于六大基本原则:抽象、封装、层次结构、模块化、类型、持久、并发,其中前四个原则是必须的。其他的我不说了,先给你解释一些基本的概念吧:什么是对象?对象是一个在时间和空间中存在的实体。简单地(感觉不大对地说:对象就是你可以数得出数量的东西,比如:一朵云,一条河流,一个字符,一个int,一个函数等等。什么是类?一组对象就构成了一类。比如:一个班的所有学生就构成了一个类,这个类的名字叫**班。类定义了这组对象共同的行为和属性。什么是多态?多态是类型理论的一个概念,指的是一个名字可以指代一组不同类型的对象(这些对象的类必须有共同的基类,这样由这个名字指代的不同对象就可以以不同的方式来响应同一组消息。什么是消息?一个消息,就是指一个对象调用了另一个对象的方法或者成员函数。什么是静态类型?静态类型指的是对象或者表达式的类型在编译器编译时就被编译器确定了。C语言C++语言的普通函数调用就是静态类型的。静态类型也被称为早捆绑或者静态编联。什么是动态类型?动态类型指的是对象或者表达式的类型直到运行时才能确定,动态类型是动态多态的基础。C++语言要使用动态类型必须在成员函数的声明前加上关键字(virtual。什么是封装?封装有两层含义:.指的是将一个对象的内部细节(通常是可变和易变的和外部界面(通常是固定的分割开来的过程,也就是将对象的本质和实现细节分开来的过程。.指的是将数据和行为放到一起形成一个结构(称为l类的能力。其他的不说了。。。。。。问题二:怎么理解面向对象程序设计?面向对象程序设计的基本概念:面向对象,概括地说,就是把问题抽象为对象,设置属性(数据),指定事件或处理方式(代码)来达到目的,强调从问题域的概念到软件程序和界面的直接映射。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。面向对象程序设计的基本特征对象:对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。类:类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力,而对象的内特性(保存内部状态的私有数据和实现加工能力的算法对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类和多重继承(一个类有多个父类。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数来实现多态性。动态绑定绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。消息传递:对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。面向对象语言一个语言要称为面向对象语言必须支持几个主要面向对象的概念。根据支持程度的不同,通常所说的面向对象语言可以分成两类:基于对象的语言,面向对象的语言。基于对象的语言仅支持类和对象,而面向对象的语言支持的概念包括:类与对象、继承、多态。举例来说,Ada就是一个典型的基于对象的语言,因为它不支持继承、多态,此外其他基于对象的语言还有Alphard、CLU、Euclid、Modula。面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。问题三:怎样理解面向对象和面向过程面向过程倾向于我们做一件事的流程,先做什么,然后做什么,最后做什么。更接近于机器的实际计算模型。面向对象(Object-Oriented倾向于建立一个对象模型,它能够近似的反映应用领域内的实体之间的关系,其本质是更接近于一种人类认知事物所采用的哲学观的计算模型。在OO中,对象作为计算主体,拥有自己的名称,状态以及接受外界消息的接口。在对象模型中,产生新对象,旧对象销毁,发送消息,响应消息就构成OO计算模型的根本。然而CPU并不理解对象和类,它依然在执着的先执行第一行代码,然后第二行…………所以它的执行过程依然是程序化的。举个例子,盖一座大楼,你想到的是楼怎么盖,哪里要有柱子,哪里要有梁,哪里楼梯等等(这就是面向对象,至于柱子该怎么建,用什么建,方的圆的,等等,这就是面向过程。问题四:面向对象怎么理解首先你要理解对象的含义。对象是什么?你需要了解之前,你要知道类,有类之后才会有对象。为什么创建类?类因为可以封装,继承,派生等一系列便捷的操作。面向对象的理解:我们需要没一个对象都能接受,处理,传递数据。你也可以理解为是对类的一系列操作问题五:怎么理解面向对象编程?我觉得没必要去深究他的意思。按我的理解,面向对象编程,主要是将我们实际生活中的对象经过抽象,将它定义成为一个类,通过类的属性和方法来模拟生活中的这个对象。这样使得程序更容易结构化、抽象起来更方便。面向对象技术最初是从面向对象的程序设计开始的,面向对象编程并不困难它的出现以年代simula语言为标志。浮年代中后期,面向对象程序设计逐渐成熟,被计算机界理解和接受,人们又开始进一步考虑面向对象的开发问题。这就是九十年代以MicrosoftVisual系列OOP软件的流行的背景。传统的结构化分析与设计开发方法是一个线性过程,因此,传统的结构化分析与设计方法要求现实系统的业务管理规范,处理数据齐全,用户能全面完整地其业务需求。传统的软件结构和设计方法难以适应软件生产自动化的要求,因为它以过程为中心进行功能组合,软件的扩充和复用能力很差。对象是对现实世界实体的模拟,因面能更容易地理解需求,即使用户和分析者之间具有不同的教育背景和工作特点,也可很好地沟通。区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。对象(Object)是一个现实实体的抽象,由现实实体的过程或信息牲来定义。一个对象可被认为是一个把数据(属性和程序(方法封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。对象是个动态的概念,其中的属性反映了对象当前的状态。类(Class)用来描述具有相同的属性和方法的对象的***。它定义了该***中每个对象所共有的属性和方法。对象是类的实例。由上分析不难看出,尽管OOP技术更看中用户的对象模型,但其目的都是以编程为目的的,而不是以用户的信息为中心的,总想把用户的信息纳入到某个用户不感兴趣的“程序对象”中。问题六:面向对象编程怎么理解?简单点说。。说到面向对象,就会提到面向过程,两者有区别,对两者进行一个比较就会知道什么是面向对象。可以通过举一个例子进行说明,首先面向过程:假设一杯水从一个桌面上往地上掉,在.秒时,还在桌面上,.秒时快脱离桌面,.秒时脱离桌面,.秒时掉到半空中,.秒时掉到地上,.秒时玻璃破碎,这就是面向过程的编程;而面向对象是水从桌面上落下,你看到时它已经破碎了,你看不到它的过程,只有一个结果。这就是它们的区别,不知道你可不可以接受。问题七:编程中如何理解面向对象分如果你学了汇编,就感觉这个问题轻而易举了。因为汇编是面向过程的的编程语言,而c语言等是面向对象的编程。简而言之,比如看到了一个苹果,想吃她,用汇编的话,首先需要寻找苹果,然后拿起,最后才是吃掉,要计算每个步骤,这就是面向过程的。而面向对象的编程,就是以结果为导向,比如c++吧,想吃苹果,拿起来就吃了。这并不是说面向对象的编程语言就绝对比面向过程的的编程语言高级,只是更加方便了而已,学的时候更加容易了,但计算机毕竟不是人,如果你真正懂了什么是面向过程的的编程语言,再学面向对象的编程语言轻而易举。比如,你学汇编后,再学c语言等轻松过关,但反过来,你先学c语言,再学汇编,你感觉很别扭,寸步难行。这就是编程的并行思维和串行思维,基本上任何编程语言都是串行思维的,但人如果一直在并行思维的话,会学的很快,思维无限延伸。问题八:java中面向对象怎么理解就是一种抽象表达事物的思维方式;面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的***,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。

  ⑻面向对象的三大特性,请用代码说明三大特性

  ⑼面向对象(ObjectOriented,缩写为OO是现代软件技术的精髓。从早期的SmallTalk到如日中天的Java,都渗透着面向对象思想。OO具有三大特性:封装性、继承性和多态性。想掌握面向对象思想,就必须深入理解其三大特性。这里我尽量少谈概念,只用一个生活中的例子和一段代码来解释它们。、封装性(Encapsulation)所谓封装,就是将某些东西包装和隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。OO将万物都视为“对象”(Object),任何对象都具有特性和行为。我们将其特性称为“成员变量”(MemberVarible),将其行为称之为“成员函数“(MemberFunction),被封装的特性只能通过特定的行为去访问。大家都见过旅馆里常用的一种茶叶吧,就是用纸袋把茶叶包装起来再系是一根线。用的时候只需要将其放在水杯里泡就行。这样的好处是不会将茶叶渣和茶垢弄的满杯子都是。好!这就是一个封装的例子。我们喝茶的目的是享受茶叶的香冽;所以茶叶的味道(Flavour就是茶叶所具有的最重要特性之一;可是我们无法直接享受它的清香,因为被外面的纸袋“封装”起来了。唯一的办法就是“泡”(Dilute,将茶袋扔在开水中泡,它的味道就出来了,融入水中。如果我们把袋装茶叶看作一个对象的话,它提供了成员变量Flavour和成员函数Dilute。并且Flavour是私有(Private的,我们不能直接把它吞进肚子去,而只能通过成员函数Dilute才能享受Flavour。下面用C++代码来描述这个例子:ClassCTea{Private:Cstringm_Flavour;//味道Cstringm_Color;//颜色......//等等其它属性Private:VoidCTea();//构造函数Void~CTea();//析构函数Public:CstringDilute(;//沏茶......//等等其它方法}CstringCTea::Dilute(){//怎样泡出味道来的代码}这就是封装。通过将对象的某些属性声明为Private隐藏起来,只能使用其提供的特定方法去访问。、继承(Inheritance)如果只是封装,那么非面向对象语言也能部分的做到。比如在C中,用结构(Struct)、VB中用自定义类型(Type也能封装一些变量。OO最有吸引力的特性是继承。通俗的说后代具有祖先的某些特点就叫继承,当然后代还可以具有自己独有的特征。举个例子吧,菜刀。菜刀(cutlery是钢(Steel)做的,钢是一种金属(Metal),金属则是大千世界里的一种物质(Substance)。所以菜刀的一些特性可以追溯到物质具有的一般属性。正是因为这个道理,MFC中所有类均从CObject继承而来。这就是继承。菜刀直接继承了钢的特性,钢又继承了金属的特性,......下面的代码描述了这种复杂而有独特的继承关系:ClassCSubstance{Private:intm_color;voidCSubstance();void~CSubstance();//......(我是学文科的,具体属性说不上来}ClassCMetal:PubliSubstance{voidCMetal();void~CMetal();//......}ClassCSteel:PubliMetal{voidCSteel();void~CSteel();//......}Classutlery:PubliSteel{private:Cstringm_Blade;voidutlery();void~utlery();//......Public:voidCut();}这里,CSubstance被称为基类(Baseclass),其它被称为衍生类(Derivedclass)。衍生类与基类是“Iskindof”的关系。子类与其祖先类之间复杂的函数调用关系不在本文讨论之列。继承是一种树状的层次关系。子类在继承祖先类的成员变量和成员函数的同时也可以定义自己的成员变量和成员函数。比如,Metal除了继承了Substance的一般特性外,还具有自己的属性诸如可延展性;utlery在继承CSteel的特性后还具有自己的成员诸如“刀刃”(Blade)、“锋利”(Sharpness)、行为有如“切”(Cut等。面向对象技术是对现实生活的抽象,你可以用生活中的经验去思考程序设计的逻辑。、多态性(Polymorphism)讨论多态之前先要明白什么是“虚拟”(Virtual)。C++/MFC就是用虚拟这种方式实现多态的。为什么“虚拟”这个概念?看下边的例子:ClassCincect//昆虫类{private:intm_foot;//脚的数量......//其它成员变量private:voidCincect();void~Cincect();public:voidBite()//咬人{......//怎样咬人的代码,比如张开嘴啃}}我把Bite(咬这个动作在基类中定义为一般化动作。可是,不是所有昆虫咬人的方法都一样(况且还有的根本就不咬人呢,比如蜻蜓,比如蚊子是用嘴那个吸管叮人而蚂蚁是用嘴去夹。从昆虫这个类别衍生出以下两个类别:Cant(蚂蚁、Cmosquito(蚊子。classCant:publiincect//蚂蚁类{......}classCmosquito:publiincect//蚊子类{......}它们都继承了Cincect的所有成员,当然也继承了Bite()这个动作。现在就有问题了:同样继承自昆虫,当我们使用Bite()这个动作时怎么才能区分蚂蚁和蚊子各自的独有的咬人方式呢?方法之一是用“::”符号指明具体引用的是那一个,但这样明显失去了灵活性;另一种方法就是“虚拟”。使用关键字virtual将Bite()声明为虚拟函数,然后在每个衍生类中重新定义,描述它们各自的咬人方法,调用的时候也不会都一种结果啦。于是上边的例子可以改写为:ClassCincect//昆虫类{private:intm_foot;//脚的数量......//其它成员变量private:voidCincect();void~Cincect();public:virtualBite(){}//咬人,但我们只声明这个成员函数,//却让它什么动作都不做,让衍生类自己去定//义各自的咬人方法}classCant:publiincect//蚂蚁类{......virtualBite();}Cant::Bite(){......//蚂蚁具体的咬人方式}classCmosquito:publiincect//蚊子类{......virtualBite();}Cmosquito::Bite(){......//蚊子具体的咬人方式}所以,虚拟的目的是只在基类中将一般化动作声明一个成员函数的原型而不做具体定义,让衍生类自己去定义。这就是面向对象的特征之三:多态性。基类的同一个成员在不同的衍生类中可以具有不同的形态,更好地抽象和描述大千世界中的诸多“对象”。.了解什么是多态性.如何定义一个虚方法.如何重载一个虚方法.如何在程序中运用多态性面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它们都继承自某个类,你可以把这些派生类,都放到一个数组中。如果这些对象都有同名方法,就可以调用每个对象的同名方法。本节课将向你介绍如何完成这些事情。.清单-.带有虚方法的基类:DrawingObject.csusingSystem;publilassDrawingObject{publicvirtualvoidDraw(){Console.WriteLine(“I’mjustagenericdrawingobject.“);}}说明清单-定义了DrawingObject类。这是个可以让其他对象继承的基类。该类有一个名为Draw()的方法。Draw()方法带有一个virtual修饰符,该修饰符表明:该基类的派生类可以重载该方法。DrawingObject类的Draw()方法完成如下事情:输出语句“I’mjustagenericdrawingobject.“到控制台。.清单-.带有重载方法的派生类:Line.cs,Circle.cs,andSquare.csusingSystem;publilassLine:DrawingObject{publicoverridevoidDraw(){Console.WriteLine(“I’maLine.“);}}publilassCircle:DrawingObject{publicoverridevoidDraw(){Console.WriteLine(“I’maCircle.“);}}publilassSquare:DrawingObject{publicoverridevoidDraw(){Console.WriteLine(“I’maSquare.“);}}说明清单-定义了三个类。这三个类都派生自DrawingObject类。每个类都有一个同名Draw()方法,这些Draw()方法中的每一个都有一个重载修饰符。重载修饰符可让该方法在运行时重载其基类的虚方法,实现这个功能的条件是:通过基类类型的指针变量来引用该类。.清单-.实现多态性的程序:DrawDemo.csusingSystem;publilassDrawDemo{publicstaticintMain(stringargs){DrawingObject;dObj=newLine();dObj=newCircle();dObj=newSquare();dObj=newDrawingObject();foreach(DrawingObjectdrawObjindObj){drawObj.Draw();}return;}}说明清单-演示了多态性的实现,该程序使用了在清单-和清单-中定义的类。在DrawDemo类中的Main()方法中,创建了一个数组,数组元素是DrawingObject类的对象。该数组名为dObj,是由四个DrawingObject类型的对象组成。接下来,初始化dObj数组,由于Line,Circle和Square类都是DrawingObject类的派生类,所以这些类可以作为dObj数组元素的类型。如果C#没有这种功能,你得为每个类创建一个数组。继承的性质可以让派生对象当作基类成员一样用,这样就节省了编程工作量。一旦数组初始化之后,接着是执行foreach循环,寻找数组中的每个元素。在每次循环中,dObj数组的每个元素(对象调用其Draw()方法。多态性体现在:在运行时,各自调用每个对象的Draw()方法。尽管dObj数组中的引用对象类型是DrawingObject,这并不影响派生类重载DrawingObject类的虚方法Draw()。在dObj数组中,通过指向DrawingObject基类的指针来调用派生类中的重载的Draw()方法。输出结果是:I’maLine.I’maCircle.I’maSquare.I’mjustagenericdrawingobject.在DrawDemo程序中,调用了每个派生类的重载的Draw()方法。最后一行中,执行的是DrawingObject类的虚方法Draw()。这是因为运行到最后,数组的第四个元素是DrawingObject类的对象。小结现在对多态性有所了解之后,你可以在派生类中,实现一个重载基类虚方法的方法。虚方法和重载的派生类方法之间的关系就体现出C#的多态性。

  ⑽在面向对象方法中,对象可看成是属性(数据以及这些属性上的专用操作的封装体。封装是一种信息屏蔽技术,封装的目的是使对象的定义和实现分离。Step:⒈新建一个工程命名为VBOOP;⒈单击工程菜单,选择添加类模块后并单击确定按钮;⒈在其属性窗口中将类的名称改为TScore。Step:TScore类模块代码⒉.这里为TScore类定义四个私有(private变量,它们只能在本模块中是可见的,即类的一些成员被隐藏起来,用户只能通过属性过程或函数等方法来访问,从而对对象进行封装。定义变量的基本语法:private/public《;变量名》As《;变量类型》代码部分:privateFNameAsString’学生的姓名privateFMathAsSingle’数学成绩privateFEnglishAsSingle’英语成绩⒉.为TScore类定义六个公用(public的属性(Property过程和一个计算总分的方法函数。定义方法的基本语法:private/publicPropertyGet《;读属性过程名》As《;属性返回值类型》;private/publicPropertyLet《写属性过程名》(ByVal变量名As返回值类型;private/publicFunction《;函数名》As《;函数返回值类型》;get:将模块中的私有变量的值赋给属性过程,通常称为读;Let:通过属性过程给模块中的私有变量值赋,通常称为写。代码部分:publicPropertyGetGetName()AsStringGetName=FNameEndPropertypublicPropertyLetSetName(ByValNameAsString)FName=NameEndPropertypublicPropertyGetGetMath()AsSingleGetMath=FMathEndPropertypublicPropertyLetSetMath(ByValMathAsSingle)FMath=MathEndPropertypublicPropertyGetGetEnglish()AsSingleGetEnglish=FEnglishEndPropertypublicPropertyLetSetEnglish(ByValEnglishAsSingle)FEnglish=EnglishEndPropertypublicFunctionTotal()AsSingle’计算总成绩函数Total=GetMath+GetEnglishEndFunctionStep:回到Form窗口,在窗口上添加个控件:⒊添加个文本框txtName、txtMath、txtEN、txtTotal;⒊添加个标签labName、labMath、labEN、labTotal其Caption属性分别为姓名、数学、英语、总成绩;⒊添加个命令按钮SetValues、Search其Caption属性分别为赋值、查询。Step:窗口事件⒋.构造Score对象及查询关键字SearchKey。在面向对象方法中,我们可以这样说定义类就是定义数据类型,而声明对象就是声明变量。也就是说,对象实际上就是变量。DimScoreAsNewTScoreDimSearchKeyAsString⒋.给模块中四个私有变量赋值的单击事件privateSubSetValues_Click()IfVal(txtMath.Text)》=AndVal(txtMath.Text)《=AndVal(txtEN.Text)》=AndVal(txtEN.Text)《=ThenWithScore.SetName=txtName.Text.SetMath=Val(txtMath.Text).SetEnglish=Val(txtEN.Text)EndWithtxtName.Text=\txtMath.Text=\txtEN.Text=\Print姓名:&Score.GetName&数学:&Score.GetMath&英语:&Score.GetEnglishElseMsgBox成绩的取值范围:,,提示EndIfEndSub

  ⑾请用买面包举例,分别解释一下面向对象、面向过程、面向接口

  ⑿面向对象:食物是一个抽象的概念,而面包则是食物的一种,我们不会去纠结食物是怎样定义的,而是把食物划分成类似面包这样的对象进行理解,而这个转化的过程就叫做面向对象。面向过程:买面包是一件事情,你去完成这个事情的过程,就叫做面向过程。面向接口:买面包的时候,你会骑车去卖面包。你骑车就是你是用接口去实现买面包。

  ⒀面向对象三大特性的理解

  ⒁面向对象,简单举个例子你要吃饭,吃的是西红柿炒鸡蛋,那按正常的流程你要先去买西红柿和鸡蛋,然后打开煤气炉,然后用锅铲炒,炒好后放到盘子里,然后吃。如果你是这么做,这就叫面向过程但如果你换种做法,你雇了一个厨子,你要吃西红柿炒鸡蛋的时候你跟厨子说一声,全部事情都交给厨子去做,你只需要等他做好给你吃就行,而不需要关心他是怎么做出来的。这就叫面向对象实现面向对象就需要你把一些功能和属性包装成一个对象,要使用那些功能的时候就去调用这个对象即可,就不用自己再重新写一遍。例如你有一个厨子了,厨子的功能是炒菜,你顿顿要吃西红柿炒鸡蛋,你还需要自己反复地去买菜去点火去炒吗?不需要,你全部交给厨子去做就行了。这就叫实现面向对象面向对象中更多的体现是指挥者(指挥对象做事情。面向对象思维方式将复杂的问题简单化。一:封装理解:书上:把变量和方法包装在一个类内,以限定成员的访问,从而达到保护数据的一种技术。决定对象的使用范围:私有性封装;局部性封装;全局性封装。使对象属性尽可能私有,对象方法尽可能公开。二:继承理解:决定对象的属性、方法可以被哪个对象使用。用法:.子类自动拥有父类中可以继承的属性和方法可以继承:父类中非私有的属性和方法.Java中支持单继承,不允许多继承。但是可以多重继承(c继承b?b继承a?一个类只能有一个父类。一个父类可以有多个子类子类的共性抽取形成父类。、.前提:(子类继承父类子类调用成员变量?????如果子类有,,使用自己的;?子类没有?调用父类的;?(子父类中出现了同名变量如果一个变量子类成员变量中有,,方法中也有,调用方法的话(采取就近原则,会出现方法中的变量。。。若想要调用成员变量?只需要加上一个this.(点?,因为this指代成员变量。如果想要访问父类中的成员变量??就用super.(点前提:父类变量不能是私有的三:多态理解:同一种方法的不同运作方式。方法的重载是实现多态的一种方法。方法的覆盖(重写也是实现多态的一种方法方法的重载Overloading指在同一个类内具有相同名称的多个方法。但是这些方法的参数列表不同,即参数个数不同、或者参数类型不同、或者参数顺序不同,可以根据参数列表不同来调用相应的方

  ⒂怎样理解面向对象和面向过程

  ⒃面向过程倾向于我们做一件事的流程,先做什么,然后做什么,最后做什么。更接近于机器的实际计算模型。面向对象(Object-Oriented倾向于建立一个对象模型,它能够近似的反映应用领域内的实体之间的关系,其本质是更接近于一种人类认知事物所采用的哲学观的计算模型。在OO中,对象作为计算主体,拥有自己的名称,状态以及接受外界消息的接口。在对象模型中,产生新对象,旧对象销毁,发送消息,响应消息就构成OO计算模型的根本。然而CPU并不理解对象和类,它依然在执着的先执行第一行代码,然后第二行…………所以它的执行过程依然是程序化的。面向对象:举个例子,盖一座大楼,你想到的是楼怎么盖,哪里要有柱子,哪里要有梁,哪里楼梯等等(这就是面向对象,至于柱子该怎么建,用什么建,方的圆的,等等,这就是面向过程。用面向对象思考问题更符合我们人的思考方式。其实我们人现实生活中都是在面向对象。比如:去饭店吃饭,你只要说明吃什么就可以了,有必要还了解这个菜是怎么做的,是哪里来的,怎么去种这个菜吗?面向对象也可以说是从宏观方面思考问题,而面向过程可以说是从细节招收思考问题。在面向对象中,也存在面向过程。zzfrom百度知道

  ⒄谈谈你对面向对象思想的理解

  ⒅怎么理解面向对象思想呢?面向对象面向对象编程,即OOP,面向对象的概念和应用已经超越了程序设计、软件开发领域,现在已经发展到了各个领域。面向对象可以说是对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段的产物。它的特点:抽象封装继承多态用我的话说,其实可以这么理解,假如我是上帝,我要造人(这是对象。首先,我要知道人类要有哪些最基本的东西?人要有思想,人还要有肉体这个过程呢就是(抽象因为人的数量很庞大,所以我需要找别人帮我一起造人,但是我不想让他知道我造人的技术(人的脸需要用多少克泥巴,需要怎么用手去捏鼻子等等,我可以把我的造人的技术封装起来,别人只需要知道他要做什么样的人类就好了。【封装】当我自己造人的时候,我可能造着造着就累了,我可能就要用我之前造出来的某个泥人作为模板“复制”,“粘贴”了用模板创出来的泥人具有模板的特征,就像孩子一样具有父母的性状。我们称这个过程为【继承】但是呢好多泥人都是我后来偷懒用模板复制出来的,为了让人类更丰富多彩一些,我对他们又进行了改变。这个过程可以叫【多态】接下来我举个栗子来区分面向过程和面向对象例子:是如何将大象装进冰箱为了解决这个问题,我们采用两种方案,一种是面向过程方案,另一种是面向对象方案面向过程:总共分三个过程,第一个过程:冰箱门打开(关着门的冰箱返回值是打开门的冰箱第二个过程:大象装进去(打开门的冰箱返回值是打开着门,装着大象的冰箱第三个过程:冰箱门关上(打开着门,装着大象的冰箱返回值关着门的装着大象的冰箱面向对象:总共分三个动作,(每个动作都有一个对象去执行第一个动作:冰箱.开门(第二个动作:冰箱.装进(大象第三个动作:冰箱.关门(或者是链式调用冰箱.开门(.装进(大象.关门(以上就是我对面向对象理解的全部内容,希望对各位同学有所帮助!

您可能感兴趣的文章:

相关文章