Smalltalk OOP和Simula OOP之间在哲学上有区别吗?
这是一个与Java&C#与C 间接相关的问题。据我了解,C 基于Simula,但是Java和C#或多或少地来自Smalltalk系列。
在更广泛的OOP标语中有几个“风格”上的关键“差异”。
在所有情况下,关于 静态 或 动态
类型系统的声明主要意味着一个或另一个,这个问题远非明确或明确定义的。同样,许多语言选择模糊选择之间的界限,因此无论如何这都不是二进制选择的列表。
或“什么foo.Bar(x)
意思?”
1通常在错误的静态类型框架中使用,在编译时检查是否存在这样的实现。此外,如果x和y是不同类型,则语言通常会区分Bar(x)和Bar(y)。这是方法重载,并且具有相同名称的结果方法被视为完全不同。
2通常在动态语言中使用(这往往会避免方法重载),因此,在运行时foo类型的消息可能没有名为“ Bar”的消息的“
handler”,因此不同的语言会以不同的方式进行处理。
如果需要,两者都可以以相同的方式在后台实现(第二种默认情况下,Smalltalk风格的默认设置是调用一个函数,但这并不是在所有情况下都具有定义的行为)。由于前一种方法可以很容易地实现为简单的指针偏移函数调用,因此可以更轻松地使其相对较快。这并不意味着其他样式也不能快速制作,但是可能需要做更多的工作才能确保在这样做时不会损害更大的灵活性。
或“婴儿从哪里来?”
同样,静态语言倾向于1,动态语言倾向于2,尽管这绝不是要求它们简单地适应样式。
或“什么或如何?”
这绝不是二进制选择。大多数基于类的语言都允许使用抽象方法的概念(尚未实现的方法)。如果您有一个所有方法都是抽象的类(在C
++中称为纯虚函数),则该类相当于一个接口,尽管它可能也定义了一些状态(字段)。真正的接口应该没有状态(因为它 仅 定义可能的事物,而不是其发生的方式。
只有较旧的OOP语言趋向于仅依赖一种或另一种。
VB6仅在接口上,没有实现继承。
Simula使您可以声明纯虚拟类,但可以实例化它们(使用时会出现运行时错误)
或“谁是爸爸?”
这个问题引起了广泛的争论,特别是因为它是C ++的OOP实现与许多现代的静态类型语言(如c#和java之类的继任者)之间的关键区别。
或“您想对我做什么?”
通常,这不是全部或全部,它仅仅是一个默认值(最常用的OOP语言默认情况下默认为可变)。这会对语言的结构产生很大影响。许多包含OOP功能的主要功能语言会将对象默认为不可变状态。
或“所有事物都是对象吗?”
这是非常复杂的,因为像自动装箱这样的技术使一切看起来都很好,但是您会发现存在一些边界情况,在这些情况下发现了这种“编译器魔术”,并且在幕后发现了Oz众所周知的向导,从而导致了问题或错误。
。在具有默认不变性的语言中,这种情况不太可能发生,因为对象的关键方面(它们既包含方法又包含 状态 )意味着与对象相似但不太复杂的事物。
或“您认为自己是谁?”
语言设计的一个更为广泛的方面,不是一个要深入的方面,而是此决策中固有的选择影响了OOP的许多方面,如前所述。
多态后期绑定的各个方面可以取决于:
语言变得越动态,这些决策就越趋于复杂,但是相反,语言用户的投入越多,而不是语言 设计者
在决策中的投入越大。在这里举一些例子是很困难的,因为可以将静态类型的语言修改为包括动态方面(例如c#4.0)。
我们学校签约购买学校云了吗?学校如何提 出签约学校云的申请? 答: 您需要咨询学校教务处,确认是否已经采购过云服务。 请学校教务处联系中国大学MOOC各省区经销商负责人详细了解办理手续。 http://www.icourses.cn/occ/ 查看本校是否在学校云名录中 学生要统一认证,才能加入课程学习,这真是太麻烦了 答:根据您学校不同情况而定,如果开通了学校云,并需要加入SPOC课程,需要统一
主要内容:PyCharm,Eclipse+PyDev,Visual Studio Code,Microsoft Visual Studio百度搜索“ Python IDE”会发现支持 Python 编程的 IDE 有很多,那么对于零基础的初学者,应该使用哪款 IDE 呢? 我个人推荐初学者使用 Python 自带的 IDLE。因为 IDLE 的使用方法很简单,非常适合初学者入门。本教程中使用的也是 Python 自带的 IDLE。 当然,除了 IDLE,还有很多其他的 IDE 供大家选择,这里列
问题内容: 我正在开发一个使用angular作为客户端框架的应用程序,目前使用angular作为岩石,我真的很高兴,尽管现在我发现我经常复制和粘贴要组织成类层次结构的代码。例如,对话框共享一组通用的功能,需要打开,关闭它们,提供功能的代码也是从某些父BaseTypeaheadClass继承的首选对象,尽管我在angular中没有发现的一件事是组织这些层次结构。控制器,服务和提供者都在下面使用普通的
本文向大家介绍你学习的方法有哪些?有方法论吗?相关面试题,主要包含被问及你学习的方法有哪些?有方法论吗?时的应答技巧和注意事项,需要的朋友参考一下 大概 跟3+1一样了 1.坚持 2.做笔记 把自己认为自己已经掌握的 再用自己的话复述一遍 3.不管多简单 都要自己动手试一试 绝知此事要躬行
如题,培训班出来的,教的东西都很浅,感觉完全不够用,想再补充自己提高自己。请问哪里有进阶的课程资料,要视频的,有语音讲解的,我知道免费的资源有很多,但是鱼龙混杂,质量参差不齐,挑选成本太高。付费的至少质量方面肯定比免费的好吧。大家有什么推荐吗?谢谢。
问题内容: 通常,我不想知道OOP缺点的细节,但是当我在最近参加的一次采访中争论时,感觉有点奇怪。发布给我的问题是告诉我面向对象编程(OOP)的一个缺点。那时,我认为OOP是继过程和功能模型之后最成熟的编程级别。因此,我对他说,我完全看不出任何负面影响。 但是面试官说人数很少,如果他不介意的话,我请他列出一个。他举了一个例子,我消化不好。他说,一种面向对象的模式并没有严格执行继承规则,并列举了卫星