这个我的世界种子代码大全该怎么理解呢?里面的数据是怎么传递的呢?

在Java程序里面,我想把一个接口的数据传递到下一个接口,请问应该在第一个接口的实现的类中怎么写?_百度知道
在Java程序里面,我想把一个接口的数据传递到下一个接口,请问应该在第一个接口的实现的类中怎么写?
}public class Milling implements MService {private DService d. public double m(double n1, double n2, double n3)., double n3).; }}请问第一个接口的实现程序应该怎么写...., double n3) {
return n1*40;}public interface DService {
double d(double n2, double n2.;public interface MService {
double m(double n1
提问者采纳
调用 service, n2,定义一个成员DService
service在m方法中.d(n1在Milling类中
提问者评价
m方法是第一个接口实现方法,
DService是第二个接口, 具体怎么调用呢? 求详细一点的程序 谢谢!
参考资料:
其他类似问题
为您推荐:
java程序的相关知识
其他2条回答
没明白 ,Milling 这个已经是第一个接口的实现类了。
按道理这样应该就可以了,如果不行你这样试试:public interface MService {
double m(double n1, double n2, double n3);}public interface DService {
double d(double n2, double n3);}public class Milling implements MService {
private DS
MService ms = new MService ();
d = ms.m(double n1, double n2, double n3);........ public double m(double n1, double n2, double n3) {
return n1*40; }}
new MService() 时报错?是不是因为MService是interface的缘故?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何理解「面向对象编程的精髓在于将操作绑定在数据上」?
这句话准确吗? 怎样理解?多年以后我发现,面向对象编程的精髓在于将操作绑定在数据上。在你还没成为他们无归属组织的重要一员时,程序就还是由操作和数据构成。在典型的结构化程序设计之中,我们将精力集中在行为(动词)上,然后弄清楚我们需要哪些数据(名词)才能执行。换句话说,我们将数据绑定在行为上。但在面向对象程序设计中,数据,名词,成为程序的中心,之后我们才去弄清楚要将哪些行为绑定在它们之上,藉此来解决因突发行为产生而可能造成的问题。 via
按投票排序
完蛋了。OO的动作对应的是状态,才不是数据。OO的精髓在我看来,在于你使用动作的时候碰不到状态,至于数据,永远都不应该跟动作一起写到一个类里。只处理数据的东西,就是一个普通的函数,跟类毛关系都没有。类是什么,类就是一个构造interface实例的构造函数。类本身最好甚至都不要直接引用,引用接口就好了。接口就是能力,不是单纯的动作。譬如说【我会啪啪啪】就是一个接口,至于我啪啪啪有多少个做法,这是里面的一个个的动作。那我啪啪啪的时候到底经历了什么心理【状态】,你们是永远也不知道的。这就是封装。那么多人总是捧着一个对OO错误的理解就开始喷,失望极了,对你们。
通过消息通讯,解耦各个模块才是OO的精髓啊。------------------------------日16:45:40更进一步地说,封装、继承和多态,都是当年simula时代的东西,当时只是有了对象的概念,而没有现在OO的概念。现在人们常常谈论起的OOP是阿兰凯在PARC的时候发明的。因为他有生物学背景,所以想象中各个模块是各自以细胞的方式组织,好像放生物电一样传播信息来相互通讯并组织程序结构的。------------------------------日18:59:31更进一步地说,现代OO主导的软件工程在建模的时候,需要对领域模型进行问题空间的建模。所谓的数据并不是数据,而是问题中的实体。所谓的操作并不是操作,而是一个实体能够接受消息而采取的行为。然后就是,根据契约编程,让对象根据消息而变化状态。计算机科学的一条至关重要的原则是控制复杂性。一定要解耦,一定要把模块很好地抽象出来。
---本来程序大体上是这样的:是一堆数据上构建一堆操作(逻辑、算法)。现在,把数据和操作分发给各个对象,使其自制,互不干涉,
(封装)这样出了问题比较容易定位。允许在已有对象上做增补和定制从而构建新的对象,
(继承)这样可以鼓励泛化的设计,控制对象代码的复制。既然某些对象满足一种协议,那就该有一种消息通吃这些对象
(多态)这样连对象之间消息代码的复制也得到控制。这么一来,我们只是成功的把程序变成:一堆对象上构建一堆通信。实质上,抽象层次和操作粒度都往上推了一层(使得更适于某一类问题例如GUI),但是这些对象们仍然可以杂乱任意的互相通信,不够满意,于是,把这些对象分发给各个小组,每个组都有明确简单的职责,组内的对象只和真正需要通信的最少的其他对象通信,
(解耦)知道的越多责任越大,所以不该知道的坚决不知道。记得cocoa中Model-View-Control分组,M和V是不直接往来的。所以,本质是一层层往上抽象,精髓是如何巧妙的抽象。
(设计模式)---
我曾经强调过很多次「面向对象是目前 GUI 不可缺少的技术;但其它领域要慎用,或者尽量不用面向对象」。所以我从来不能接受面向对象拥趸的这种莫名的感悟——「在典型的结构化程序设计之中,我们将精力集中在行为(动词)上,然后弄清楚我们需要哪些数据(名词)才能执行。」事实是,早在 UNIX 发展初期大师们就提出了 data structure over procedure 的文化。Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.Data is more tractable than program logic. It follows that where you see a choice between complexity in data structures and complexity in code, choose the former. More: in evolving a design, you should actively seek ways to shift complexity from code to data.以上摘自《Art of Unix Programming》,这绝非一本推崇 OOP 的书籍。所以我不知道面向对象所谓对「名词」的重视算什么新玩意。实际上,如果让 Linus 这样的大师来说,他会说描述和在整个团队中大力交流 data structure 的 invariable rules 更为重要。根据这些 invariable rules 加上大力的 code review,代码质量就会提高。而 OOP 推崇的所谓数据和方法绑定的封装,只是又一种期待用技术来取代平庸的程序员和糟糕的团队交流(以及 code review)的幻想。而在 GUI 领域,深层实现继承才是 OOP 不可替代的原因。如 composition pattern,decorator pattern 都需要这种技术。
OO最开始的目的是“模拟”现实中的结构;其次是降低GUI程序设计的门槛,但这更多是一个实现问题,而不是设计问题。A Brief History of Object-Oriented Programming ()SIMULA was the first object language. As its name suggests it was used to create simulations. Alan Kay, who was at the University of Utah at the time, liked what he saw in the SIMULA language. He had a vision of a personal computer that would provide graphics-oriented applications and he felt that a language like SIMULA would provide a good way for non-specialists to create these applications. He sold his vision to Xerox Parc and in the early 1970s, a team headed by Alan Kay at Xerox Parc created the first personal computer called the Dynabook. Smalltalk was the object-oriented language developed for programming the Dynabook. It was a simulation and graphics-oriented programming language. Smalltalk exists to this day although it is not widely used commercially.@冯东 回答的OO在GUI编程的重要性是同意的,但是为什么呢? 我觉得是所要管理的数据本身的特点决定的,如果你有一个算法操作对象是一个数据类型为全integer的二位矩阵,在系统编程里,这种结构比较常见的,这种数据比较“深”或者说“经典”;但GUI程序所要处理的主要数据是像这样的Button
title: ...
color: ...
width: ...
height: ...
opacity: ...
这是“短”而“浅”的数据(或者说从数据结构的角度说是“松散”的),怎么模拟这种多形态的数据呢?OO只是个名字,class和object也只是正好被这么叫而已,C里面有struct,这种设计或者需要已经是显而易见的了,如果没有struct,C就很难模拟和处理一大类问题(非经典数据结构)。OO也是这个道理,高级一点的语言没有struct,用Class来代替了。函数绑定在数据上是精髓也不是精髓,是精髓是因为事实上这确实是很明显的特征,但要深究的话C的struct内同样可以包含函数指针,可以做同样的事情,区别只在于OO比C的实现看上去直观一点而已(是否必要是另一个问题);实际上很多高级语言的底层实现不就是C的这种结构吗?如果你的高级语言设计里面去掉了指针,你是不是必须要一种替代结构能继续把行为和数据绑定到一起呢(或者说把函数本身当成数据使用)?Object就是了。如果一定要说一个OO做的事情,也绝对必要的话,就是“封装”,“封装”自然不是只有OO才有,而是一种general的思想,OO只不过是其中一种实现罢了。“继承,多态”是实现使然,不是OO的必经之路,只不过大多数语言正好这么做了而已。
面向对象三大特性:封装,继承和多态;用几年下来,发现大家都在继承,多态,然后是在此基础上的各种模式,而“封装”很少用到。因为有了封装,可以做面向接口设计和编程,让协作更容易,让开发更关注接口输出,让程序更加健壮和可控。个人觉得:面向对象的最重要的特性,是“封装”,或者是很多人称为的“间接”。LZ提到的“操作绑定在数据上”,任何一个方法(函数)都是可以做到的,但说到对象,应该首先是对象职责的划分,其次才是对象对外的服务接口和内部数据。纯粹个人多年编程下来的理解。
面向对象方法旨在提高代码的可维护性和可重用性,也就是当需求变化了,能够少量修改就可以适应新的需求的稳定可靠的代码。(换言之,就是在类似但不同的场景可以通过尽量少的代码修改使用已有的代码)代码的可维护性一部分来自可读性。当问题空间和解决空间使用相同的概念,代码就易于理解。面向对象方法的对象,属性,操作,继承,就来自我们对问题空间(真实世界)的认识,概念,共性,特性等。可维护性还在于修改一部分代码时,对其他部分的代码的影响小。面向对象方法通过将数据和操作放置在对象/类的概念下,将属性的操作封装为方法,提供继承和多态,减少代码的重复。面向接口的编程,将实现与接口隔离。将责任在类之间分布,实现高内聚,低耦合。面向对象方法将稳定的和易变的隔离开来。例如,通过接口封装易变的逻辑,例如模板方法,在抽象类中定义一组抽象的方法,由子类实现,调用这些方法的逻辑可能是稳定的,而这些方法的实现逻辑可能是易变的。通过依赖接口而不依赖具体实现,再借助依赖注入,可不修改一行代码,就可以改变应用系统的逻辑。
我认同这段话的说法,不认同“是继承和多态”。多态是贴近底层的静态语言中被强调的概念,因为变量被限制在某种类型上;而继承的实质是很普通的原型查找。要看这个问题不应该忽略了那些“没有类”的面向对象语言。一个面向对象的语言可以没有类,但不能没有对操作的数据绑定。从 C++ 的 const T* this 到 Python 的 self,还有 ECMAScript 的上下文绑定,无非都是强调一件事,将数据绑定到特定的操作上,而且按照约定,只有这些操作(过程)才可以修改其所属的数据结构。这个层面才是范型的层面,与函数式编程所要求的“纯函数”形成鲜明对比。换一种说法,面向对象的实质是规定了一种使用函数副作用的方式。
面向对象的类感觉上是一种受限的宏,而继承和多态是实现宏的方式。目的就是重用代码。面向对象就是把数据和操作绑在一起——但是然后,你要把 它们 分开,这个是种设计模式。面向对象提供了一种类似命名空间,方便模块化的一种方式。
题主提到的这篇文章,重点不在于讨论所谓面向对象的“精髓”,而在于讨论在面向对象编程中,如何更好的进行封装。它强调的是使用更好的名字来描述系统中的对象。Don't make objects that end with 'er'. 如果问面向对象的精髓,个人觉得就一个词,“对象”。其实就是你如何看待一个软件系统。至于把一个软件系统看成对象+消息还是数据+过程更加科学,那是另一个永恒的争论。根据我这十年来的开发经验,基于/面向对象开发时,如何做好封装才是基本。个人认为,就封装而言,它和Data Structure Over Procedure的思路是一致的。也和题主所提到的那边文章的中心思想是一致的,一个更加合适的名字能够促进你做更好的封装。所以,我的观点是,面向对象,首先要做好封装。这是基本中的基本,这也是我个人经历中看到的出问题最多的地方。如何组织数据结构,如何对业务建立一个好的数据模型,如何保证系统没有冗余,这是首先要做好的事情。可事实情况是(至少我经历过的),大部分系统连封装都没有做扎实,更不要去谈多态和继承了。
是继承和多态详见@狼大人 的答案
封装不是面向对象独有的。写得好的c程序能明显看到清晰的模块边界和隐藏数据的做法。面向对象最大的特征在于用抽象来简化系统结构。但抽象的不好就是灾难。
人认识世界的基本思维方式是先看这个世界有什么东西,再看这些东西在做什么,再看它们之间是什么关系。有什么就是对象和类,它们在做什么就是函数、方法(其实我一直搞不清类的成员函数和方法这两个概念的区别),组成这个世界的基本元素就是基本数据类型和CPU指令、基本编程语句。OO的精髓在于它在首先看这个世界有什么东西然后再看它们在干什么这一点上与人的思维非常吻合。
直接的回答是不准确。在面向对象之前曾经有ADT(抽象数据类型)一说,其精华正是【将操作绑定在数据上】,之后才出现面向对象的概念乃至面向对象的语言,如果把这一点描述成定义为OO的精髓,那么此后几十年等价于在做枝节工作,这是很扯的。具体来讲,封装并不只意味着把操作与数据的绑定,而是要描述某一概念的边界,想想纯虚类或者说接口类。各种框架大多依赖于接口与实现的分离。最后也说两句跑题的话,面向对象与面向过程各自有着自己的适用边界,把握这种边界是非常困难的事情,但一条基本原则是:过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数,面向对象代码便于在不改动既有函数的前提下添加新类。我在自己的书里使了很大劲试图把这个说明白,可以看了的人都说看不太明白。
面向对象的精髓在于适合抽象业务,至于怎么抽象各种方法各种设计模式,操作绑不绑数据只是视情况而定
OO的价值在于对象以及对象之间的关系。以及如果利用这样的工具来描述真实世界(建模)。其他都是浮云。
这不是精髓,这是福利。虽然将数据的变化和相应的操作绑定是可以节约很多代码,但用继承之后会发现节约更多的代码。
嘛,楼上各种回答都好专业,我属于业余学习,只说说个人的理解。操作好比动词,变量好比名词,但是把他们写在纸上,都是需要用文字这种东西,文字就是一种数据。比如说有个集合类叫人,人可以干各种事情,于是在这个类下写了各种操作方法,比如吃早饭(人){}吃中饭(人){}等等,这些方法老要写人这个参数,太蛋疼了,于是就把这些个玩意放到一个类里,用这些方法时候默认涉及这个参数:人。class 人{吃早饭(){}吃中饭(){}}然后就把这种偷懒的好办法叫做对象编程。其实这个公共变量不限于一个名词,也可以是动词,比如汪星人要吃饭,喵星人也要吃饭,于是我们也可以做一个吃饭类class 吃饭{喵星人(){}汪星人(){}}于是不管是吃早饭,吃中饭,吃晚饭,都是吃饭,都可以用这个类里面的操作方法,上面的操作吃饭,变成了下面的一个对象,公共参数,一个数据。上面的人这个数据,到了下面成了喵星人,汪星人两个操作方法。我们可以看到,操作和数据,在记录和编程中,并没有啥区别。事实上,把人,吃饭这两个看作一个变量组,以上两个类直接就可以归于一个函数:运算 (人 , 吃饭){}人和吃饭都成了一个参数,被记作了数据。事实上,在学习一定的函数式编程如LISP和理解lambda运算之后,再考虑一下数学里群论的把运算和运算的对象放在一个集合里讨论的思想,在深入理解面向对象里的数学含义后,就能想明白,命名空间,类这些集合层级能成立,最终也是建立在集合论公理(包括选择公理)上的。
对于错误的理解完全没法理解
楼主所引用的话看似莫名其妙,其实把这段话和某人引用的《Art of Unix Programming》那段话连起来看,就能看出端倪。其实确实都是经验之谈,殊途同归,只是不太好理解罢了。之前我给一个新同事讲如何设计良好的数据结构,来让函数更简单,思路更清晰。两周后东西做完,惨不忍睹。所以语言有些时候总是乏力的,上面这些总结并不能让你明白你还没领会到的东西,只是让你在领会到这些东西之后,得到强化和共鸣。javascript中 这行代码Manager.setPath.apply(Manager, arguments)该如何理解-中国学网-中国IT综合门户网站
> javascript中 这行代码Manager.setPath.apply(Manager, arguments)该如何理解
javascript中 这行代码Manager.setPath.apply(Manager, arguments)该如何理解
转载 编辑:李强
为了帮助网友解决“javascript中 这行代码Mana”相关的问题,中国学网通过互联网对“javascript中 这行代码Mana”相关的解决方案进行了整理,用户详细问题包括: arguments)该如何理解setPath是一个function单独能够理解,可是组合在一起就不懂了将arguments里的参数复制进Manager中.setPathJS 中 这行代码Manager,然互将该函数传递进setPath方法.apply(Manager,具体解决方案如下:解决方案1:在Manager中运行Manager.setPath这个函数。arguments是传入的参数Manager.setPath中的this指向Manager通过对数据库的索引,我们还为您准备了:问:txt1 = (document.all) ? document.selection.createRange().text : doc...答:// 参考: https://developer.mozilla.org/en-US/docs/Web/API/window.getSelection// 用户在页面上选择一段文字,返回能够表示该文本范围的一个对象。// 你可以用鼠标选择几个字,然后在控制台里打document.getSelection();// 查看这个对象。//...===========================================问:baidu.on(window,"load",function(){ var a=baidu.g(mis.CONST.TRANS_IN...答:调用 对象baidu 的on方法 on 有3 个参数, window 是当前容器,可以理解为当前页面 "load"一个字符串参数 第三个参数是个方法 这个方法的步骤 1,创建一个对象a ,是对象baidu 的g方法。改方法有1个参数, 2,如果对象a的value值为 false,则a获...===========================================问:baidu.on(window,"load",function(){ var a=baidu.g(mis.CONST.TRANS_IN...答:!= !== 前面不考虑类型,后者要求比较对象是相同类型且值一样===========================================问:&div class="content_detail"& &script type="text/javascript" src="ht...答:这个代码没人能看得懂。 上面引用的js已经压缩; createPlayer 这个方法应该在上面, 03c43a6d1eb546b1991671fec0564ca8 这个应该是video的id 应该是动态请求的把。===========================================问:mis.methods.autoResizeHeight=function(c,a){ var b= b.isInputIn...答:b.shadowEl.style.display='none';===========================================问:mis.methods.autoResizeHeight=function(c,a){ var b= b.isInputIn...答:你好! 1.里面的s是中的变量,表示索引值。 2.由于在标签中,无法直接使用s输出变量值, %{}是个ognl表达式,因此通过%{}来表示将s的值进行计算并输出。===========================================问:var map=eval("["+Array(23).join("0x801,")+"0xfff]"); var tatris=[[0...答:首先说[[], [], ...],这是生成一个数组,而这个数组中的元素又各为数组。在JavaScript中,可以通过方括号来定义并初始化数组, 如: var a = [1, 2, "text"];十六进制数的作用未看到使用的代码,故无法说明。就十六进制数本身来说,就是定义一个...===========================================问:html的代码: js代码: function all(){ var c=document.getElementsByN...答:window.onload=function(){//使用id的方式获取元素;var btn=document.getElementById("btn");//使用标签名的方式获取元素var obox=document.getElementsByTagName("input");//定义函数btn.onclick=function(){//使用for循环进行遍历,i初始值=0;...===========================================问:为什么没有进行计算答:person 只是函数的引用,真正函数执行是person();===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助19:34 提问
android中BroadcastReceiver 收到的数据如何传递给前台的Activity显示
android中BroadcastReceiver 收到的数据如何传递给前台的Activity显示
按赞数排序
BroadcastReceiver中
Intent i = new Intent(context,AtyAlarmAlert.class);
i.putExtra("switch", vibratorswitch);
i.putExtra("uri", uri);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
其他相似问题
相关参考资料}

我要回帖

更多关于 代码里面有哪些注释 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信