1,软件编程最核心的思想OO面向对象到底是什么概念啊 现在也我刚学编程时也和你现在有一样的疑惑 。。要弄清楚这个概念,请示并不困难 。也不复杂..!也就是模拟人类在现实中的思维方式来编程 。你要了解面向对象,首先你就清楚什么是对象..比如"人"是一个类.那么 "你","我",或任何一个真实准在的人都是这个类的一个实例.也就是这个类的一个对象..! 那么"你"这个对象有属性,有方法.比如."你"可以跑步,可以说话.这就是"你",这个对象的方法.然后你的身高,体重就是你这个对象的属性.如果你明白了我上面说的话.那么你可以继续往下看..!面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计 。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题 。面向对象的编程方法具有四个基本特征:1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面 。抽象并不打算了解全部问题 , 而只是选择其中的一部分,暂时不用部分细节 。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息 。抽象包括两个方面,一是过程抽象,二是数据抽象 。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待 , 尽管这个操作实际上可能由一系列更低级的操作来完成 。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察 。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用 , 它提供了一种明确表述共性的方法 。对象的一个新类可以从现有的类中派生,这个过程称为类继承 。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类) 。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要 。这也体现了大自然中一般与特殊的关系 。继承性很好的解决了软件的可重用性问题 。比如说,所有的Windows应用程序都有一个窗口 , 它们可以看作都是从一个窗口类派生出来的 。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性 。3.封装:封装是面向对象的特征之一 , 是对象和类概念的主要特性 。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面 。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象 。一旦定义了一个对象的特性 , 则有必要决定这些特性的可见性 , 即哪些特性对外部世界是可见的,哪些特性用于表示内部状态 。在这个阶段定义对象的接口 。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象 , 这称为信息隐藏 。事实上 , 信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持 。封装保证了模块具有较好的独立性,使得程序维护修改较为容易 。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度 。4. 多态性:多态性是指允许不同类的对象对同一消息作出响应 。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同 。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果 。多态性包括参数化多态性和包含多态性 。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题 。面向对象程序设计具有许多优点: 1、开发时间短,效率高,可靠性高,所开发的程序更强壮 。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间 。2、应用程序更易于维护、更新和升级 。继承和封装使得应用程序的修改带来的影响更加局部化 。不非要较真理解什么是OO,我是做java的我也不明白OO思想到底是什么意思! 只要你知道java或是c++ c# 这些语言怎么编写程序就可以了,没人会去问你什么是OO思想,主要是要会学语言的编程思想!至于理论知识不是太必要的就不要死扣了!【oo编程思想,软件编程最核心的思想OO面向对象到底是什么概念啊 现在也】
2,什么事oo思想转载用OO的开发方式去分析,设计一个系统 , 掌握OO还是需要掌握许多的,我认为有以下几点必须掌握:1. UML 这是OO的工具 , OO 开发人员交流思想的工具.2.了解RUP. 掌握好的软件开发过程才能开发出好的软件,RUP其实就是指导我们OO分析与设计的一个开发过程.我一直认为RUP是正宗,虽然他烦琐.4. GOF 23 DPOO设计原则的过程. OCP,SRP等等这些.学习设计模式是方法,而最根本的还是要掌握最根本的OO 设计原则.5.编码的过程中,要彻底理解"针对接口编程"这句话.这个其实就是建立在好的设计基础上的.我当时理解这句话的时候有所体会的时候,在看李建忠设计模式**的时候.6. 学习IOC.OO设计原则OCP是实现程序易扩展的一个理论保证,IOC我觉得就是实现的一个良好手段.这也正是构件化编程的基?。以?NET里面学习的是Castle, Java里面当然是Spring了.7. O/R Mapping.当了解了O/RMapping以后,数据库真变的不是那么重要了.的确是不能太关注数据库,我的实践已经证明过度关注数据库的后果肯定是面向过程.最后在提一点:OO设计很重要,但我觉得更重要的还是OO分析,即建立领域模型.面向对象的最独特之处,在于他分析需求的方式,不要过分的纠缠于程序的画面、操作的过程,数据的流程,而是要更加深入的探索需求中的一些重要概念 。===============================================================大家编程序是为了让编出来的程序帮我们做事情、解决问题的 。简单地说 , 在目前的计算机体系下,所有程序最终的形式都是一大堆机器指令对数据的操作 , 操作的结果就是我们想让计算机帮我们做的事情 。所以我们写程序从根上来说就是写一条一条的机器指令教计算机怎么一步一步地操作,最终实现我们要做的事情 。这也是计算机刚开始出现时人们就采用的编程序的方法,目前大家称这种方法为“面向过程”的编程方法 。“面向过程”的编程方法基本的编程方式如下:一切以“我”为中心考虑问题:要做某件事情,第一步要做A、A做完后要做B事情、如果B不成功那么我做C,否则我做D......等等 。在这个过程中,把重复出现的一些步骤(完成了更高层概念的事情)包装在一起当作一个整体使用,称之为“函数”(这是一个层层包装递归的东西 , 直至最底层的机器指令);把逻辑上相关的一下数据(代表了更高层概念的事物)包装在一起当作一个整体使用,称之为“结构”(这也是一个层层包装递归的东西,直至最底层的存储器) 。这种编程方法其实是人们很自然的做事的方法,大家考虑做事的时候一般都是这么考虑的 。而“面向对象”的编程方法(即OO思想)打破了以“我”为中心考虑问题的习惯:要做某件事情,首先考虑应该由“谁”来做,或者说做这件事情是“谁”的责任(“谁”来负责这件事情),接着考虑“谁”应该和“谁”协作来完成更高层概念的事情 。指定由“谁”来做这件事情的时候不必考虑他是如何做的(即如何实现的),只知道他负责这件事情能得到需要的结果就行了 。而这个“谁”就称之为“对象”,所谓的“对象”就是负有责任的东西 。而“对象”在实现自己负责的事情时也可以做同样的考虑(应该由“谁”来做;“谁”应该和“谁”协作来完成),这个过程也是一个层层递归的过程,直到最后总是由逃脱不了责任的对象简单地亲自操作一下:) 。“面向对象”编出来的程序与“面向过程”编出来的程序在代码的组织上一个明显的特点是决没有一个主控对象来统一指挥 , 而是一些相互协作的平等对象组成的一个协作网络;决没有一个主控对象到处搜集信息来完成某件事情,而是把事情交给知道这些信息的对象来完成 。但是光有“面向对象”的思想并不能保证写出来的程序一定好的,而是要遵循“面向对象”的一些编程原则才有可能写出好程序,比如:封装原则、隐藏原则......等等,介绍这些编程原则的书籍很多 。总的来说:每种对象负责的责任越单一越好 , 不要让一类对象负太多的责任尤其是不相关的责任;对象在完成自己负责的事情的时候,最好不要让外面知道或者说这方面信息外面知道的越少越好 。尤其要注意的是:一定要把握多态性这个概念 。GoF的设计模式更是提炼了优秀的“面向对象”编程原则和思想,例如:封装变化点;面向接口编程;等等 , 把“面向对象”的思想提到了一个新的高度,真是绝了!有人讨论说“use case有人说“对象”就是把相关的数据和相关的操作方法封装在一起 。这是彻底的垃圾思想,千万不要这样看待对象 。
3 , 什么是Java里的OO思想OO就是面向对象面向对象(Objectnbsp;Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流 。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围 。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域 。nbsp;谈到面向对象,这方面的文章非常多 。但是 , 明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现 。其初 , “面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法 。可是,这个定义显然不能再适合现在情况 。面向对象的思想已经涉及到软件开发的各个方面 。如,面向对象的分析(OOA,Objectnbsp;Orientednbsp;Analysis),面向对象的设计(OOD,Objectnbsp;Orientednbsp;Design)、以及我们经常说的面向对象的编程实现(OOP,Objectnbsp;Orientednbsp;Programming) 。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法 。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益 。这一点 , 恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清 。nbsp;面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流 。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围 。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域 。nbsp;一、传统开发方法存在问题nbsp;1.软件重用性差nbsp;重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质 。软件重用性是软件工程追求的目标之一 。nbsp;2.软件可维护性差nbsp;软件工程强调软件的可维护性,强调文档资料的重要性 , 规定最终的软件产品应该由完整、一致的配置成分组成 。在软件开发过程中 , 始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标 。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高 , 其原因是可修改性差,维护困难,导致可维护性差 。nbsp;3.开发出的软件不能满足用户需要nbsp;用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要 。nbsp;用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这是因为结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,这样一层一层的分解下去,直到仅剩下若干个容易实现的子处理功能为止 , 然后用相应的工具来描述各个最低层的处理 。因此 , 结构化方法是围绕实现处理功能的“过程”来构造系统的 。然而 , 用户需求的变化大部分是针对功能的,因此,这种变化对于基于过程的设计来说是灾难性的 。用这种方法设计出来的系统结构常常是不稳定的nbsp;,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价才能实现这种变化 。nbsp;二、面向对象的基本概念nbsp;(1)对象 。nbsp;对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物 , 还能表示抽象的规则、计划或事件 。nbsp;(2)对象的状态和行为 。nbsp;对象具有状态 , 一个对象用数据值来描述它的状态 。nbsp;对象还有操作 , 用于改变对象的状态,对象及其操作就是对象的行为 。nbsp;对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中nbsp;(3)类 。nbsp;具有相同或相似性质的对象的抽象就是类 。因此,对象的抽象是类 , 类的具体化就是对象,也可以说类的实例是对象 。nbsp;类具有属性 , 它是对象的状态的抽象,用数据结构来描述类的属性 。nbsp;类具有操作,它是对象的行为的抽象 , 用操作名和实现该操作的方法来描述 。nbsp;(4)类的结构 。nbsp;在客观世界中有若干类,这些类之间有一定的结构关系 。通常有两种主要的结构关系,即一般--具体结构关系 , 整体--部分结构关系 。nbsp;①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“isnbsp;a”关系 。nbsp;②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“hasnbsp;a”关系 。nbsp;(5)消息和方法 。nbsp;对象之间进行通信的结构叫做消息 。在对象的操作中,当一个消息发送给某个对象时,消息包
4,什么是OOOOP的核心思想是什么请简述你对OOP的理解OO(Object Oriented,面向对象)是当前计算机界关心的重点,它是90年代软件开发方法的主流 。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围 。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域 。OOP三大思想(继承、封装、多态)一、oop的基本思想 OOP的许多原始思想都来之于Simula语言,并在Smalltalk语言的完善和标准化过程中得到更多的扩展和对以前的思想的重新注解 。可以说OO思想和OOPL几乎是同步发展相互促进的 。与函数式程序设计(functional-programming)和逻辑式程序设计(logic-programming)所代表的接近于机器的实际计算模型所不同的是,OOP几乎没有引入精确的数学描叙,而是倾向于建立一个对象模型 , 它能够近似的反映应用领域内的实体之间的关系,其本质是更接近于一种人类认知事物所采用的哲学观的计算模型 。由此,导致了一个自然的话题,那就是OOP到底是什么?[D&T 1988][B.S 1991] . 。在OOP中,对象作为计算主体,拥有自己的名称,状态以及接受外界消息的接口 。在对象模型中,产生新对象,旧对象销毁,发送消息,响应消息就构成OOP计算模型的根本 。对象的产生有两种基本方式 。一种是以原型(prototype)对象为基础产生新的对象 。一种是以类(class)为基础产生新对象 。原型的概念已经在认知心理学中被用来解释概念学习的递增特性,原型模型本身就是企图通过提供一个有代表性的对象为基础来产生各种新的对象,并由此继续产生更符合实际应用的对象 。而原型-委托也是OOP中的对象抽象,代码共享机制中的一种 。一个类提供了一个或者多个对象的通用性描叙 。从形式化的观点看 , 类与类型有关 , 因此一个类相当于是从该类中产生的实例的集合 。而这样的观点也会带来一些矛盾,比较典型的就是在继承体系下,子集(子类)对象和父集(父类)对象之间的行为相融性可能很难达到,这也就是OOP中常被引用的---子类型(subtype)不等于子类(subclass) [Budd 2002] 。而在一种所有皆对象的世界观背景下 , 在类模型基础上还诞生出了一种拥有元类(metaclass)的新对象模型 。即类本身也是一种其他类的对象 。以上三种根本不同的观点各自定义了三种基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型 。而这三种对象模型也就导致了许多不同的程序设计语言(如果我们暂时把静态与动态的差别放在一边) 。是的 , 我们经常接触的C++,Java都是使用基于类的对象模型 , 但除此之外还有很多我们所没有接触的OOPL采用了完全不一样的对象模型 , 他们是在用另外一种观点诠释OOP的内涵 。什么是oop的基本思想呢?把组件的实现和接口分开,并且让组件具有多态性 。不过,两者还是有根本的不同 。oop强调在程序构造中语言要素的语法 。你必须得继承,使用类,使用对象,对象传递消息 。gp不关心你继承或是不继承 , 它的开端是分析产品的分类,有些什么种类 , 他们的行为如何 。就是说,两件东西相等意味着什么?怎样正确地定义相等操作?不单单是相等操作那么简单,你往深处分析就会发现“相等”这个一般观念意味着两个对象部分,或者至少基本部分是相等的,据此我们就可以有一个通用的相等操作 。再说对象的种类 。假设存在一个顺序序列和一组对于顺序序列的操作 。那么这些操作的语义是什么?从复杂度权衡的角度看,我们应该向用户提供什么样的顺序序列?该种序列上存在那些操作?那种排序是我们需要的?只有对这些组件的概念型分类搞清楚了 , 我们才能提到实现的问题:使用模板、继承还是宏?使用什么语言和技术?gp的基本观点是把抽象的软件组件和它们的行为用标准的分类学分类,出发点就是要建造真实的、高效的和不取决于语言的算法和数据结构 。当然最终的载体还是语言,没有语言没法编程 。stl 使用c++ , 你也可以用ada来实现,用其他的语言来实现也行 , 结果会有所不同,但基本的东西是一样的 。到处都要用到二分查找和排序 , 而这就是人们正在做的 。对于容器的语义,不同的语言会带来轻微的不同 。但是基本的区别很清楚是gp所依存的语义,以及语义分解 。例如,我们决定需要一个组件swap,然后指出这个组件在不同的语言中如果工作 。显然重点是语义以及语义分类 。而oop所强调的(我认为是过分强调的)是清楚的定义类之间的层次关系 。oop告诉了你如何建立层次关系,却没有告诉你这些关系的实质 。(这段不太好理解,有一些术语可能要过一段时间才会有合适的中文翻译——译者) 面向对象的编程方法OOP是九十年代才流行的一种软件编程方法 。它强调对象的“抽象”、“封装”、“继承”、“多态” 。我们讲程序设计是由“数据结构”+“算法”组成的 。从宏观的角度讲,OOP下的对象是以编程为中心的,是面向程序的对象 。我们今天要讲的OOD是面向信息的对象 , 是以用户信息为中心的 。OO(Object Oriented)就是面向对象OOP(Object Oriented Programming)就是面向对象编程其实OOP的核心思想我个人理解就是人们对于事物的一种理解方式,即把它当作一个整体来对待,比如人,它应包括五官、四肢等部分(成员)、具备说话、吃饭等行为(方法)、能够把自己基因遗传给下一代(继承)、各人吃饭的方法不尽相同(多态)、像如何消化食物之类动作的在每一个人都在做,但外人却不一定清楚是如何做到的(隐蔽性)、此外还有抽象性等 。如果需要OOP概念的话,随便搜一下到处都是,如百度百科( http://baike.baidu.com/view/63596.htm),不过我觉得还是以我们认识事物的方法来参考更好,希望对你有帮助 。
- 编程是学什么的课程,学编程要学那些课程
- 学编程多长时间能学会,问下 java 初级编程可以自学么需要多长时间能学会
- 如何理解三个代表重要思想的历史地位 如何理解mongodb
- 编程技术培训班,正在考虑编程类学习班各位家长能介绍一下吗
- idea编程使用教程,idea的用法
- redis编程语言 redis对应c语言
- redis一般和什么语言一起开发 和redis类似的编程
- redis编程 redis代码案例
- plc施耐德电气
- 编程猫这个教育机构怎么样,在线少儿编程怎么样编程猫靠谱吗
