Jython
Jython(原JPython),是一个用Java语言写的Python解释器。 概述 Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。 Jython还包括[https://web.archive.org/web/20…
共 70 篇文章
Jython(原JPython),是一个用Java语言写的Python解释器。 概述 Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。 Jython还包括[https://web.archive.org/web/20…
在面向对象编程领域中,依赖反转原则(Dependency inversion principle, DIP)是指一种特定的解耦(传统的依赖关系建立在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。 该原则规定: 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。 抽象接口不应该依赖于具体实现。而具体…
在程序设计领域, SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。 概述 参考 基本概念以及相关主题 自适应软件开发 敏捷软件开发 代码复用 程序设计 面向对象程序设计 继承 (计算机科学) 奥卡姆剃刀 设计和开发原则 不…
'是一種廣泛使用的電腦程式設計語言,擁有跨平台、物件導向、泛型程式設計的特性,广泛应用于企业级Web应用开发和移动应用开发。 任職於昇陽電腦的詹姆斯·高斯林等人于1990年代初开发Java語言的雛形,最初被命名为Oak,目標設定在家用电器等小型系統的程式语言,應用在电视机、电话、闹钟、烤面包机等家用电器的控制和通訊。由于这些智能化家电的市场需求没有预期的高,昇陽電腦放弃了该项计划。随着1990年代網際網路的发展,昇陽電腦看見Oak在網際…
控制反转(,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。 起源 早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了?”这个问题。他总结出是依赖对象的获得被反转了,因为大多数应用程序都是由两个或是更多的类通过彼此的合作来实现业务…
Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类。Mixin有时被称作"included"而不是"inherited"。mixin为使用它的class提供额外的功能,但自身却不单独使用(不能单独生成实例对象,属于抽象类)。因为有以上限制,Mixin类通常作为功能模块使用,在需要该功能时“混入”,而且不会使类的关系变得复杂。使用者与Mixin不是“is-a”的关系,而是「-able…
在物件導向及函數程式語言中,不可變物件()是一種物件,在被創造之後,它的狀態(成员变量、属性等的值)就不可以被改變。至於狀態可以被改變的物件,則被稱為可變物件()。 不可变意味着只读不写,因此不可變物件天然地具備執行緒安全的特性,即是说如无其它特殊限制的话可以在任何线程上自由调用。此外,相較於可變物件,不可變物件在一些场合下也較合理,易於了解,而且提供較高的安全性。 小型的不可變物件可以被有效率的複製,但是較大的不可變物件,如果想要有效…
在電腦技術領域中,通用網路物件(Universal Network Objects, UNO)是OpenOffice.org使用的元件模型。UNO基於對外介面的設計,得以使得多個元件夠過區域網路或網際網路,達成跨程式語言、跨物件模型,以及跨機器架構的相互溝通。 UNO元件可以使用任何已定義有連結模組的程式語言去實作。目前UNO已定義有的程式語言連結有C++(但跟compiler有關)、Java和Python。程式語言連結並允許對於Sta…
Common Lisp对象系统(CLOS)是一种面向对象编程设施,它是ANSI Common Lisp的一部份。CLOS是强力的动态对象系统,在根本上不同于静态语言,比如C++或Java中的那种OOP设施。CLOS受到更早期的Lisp对象系统,比如MIT 和Xerox 的启发,然而它比二者要更加泛化。 历史 CLOS最初被提议作为一种附加件,首次出现在1988年发表的《》,和1990年出版的《》第二版(也叫做CLtL2)中。在1994年…
在计算机科学中,C3算法主要用在多重继承中,确定子类应该继承哪一个基类的方法。换句话说,C3超类线性化的输出是确定性的方法决定次序(MRO:Method Resolution Order)。 描述 C3算法得名于它的实现符合三个重要性质:基于一致性扩展(EPG)、保留局部优先次序和适合单调性准则,首次提出了C3超类线性化。它在2012年1月被适配到了Open Dylan实现,并跟从了一个增进的提议。将它选作方法解析的默认算法的语言有:P…
OOPSLA (Object-Oriented Programming, Systems, Languages & Applications)是计算机协会(ACM)的一个年度性会议,主要在美国举办。是OOPSLA在欧洲的姐妹会议。 OOPSLA的主题包括面向对象编程相关的系统,语言和应用。如同其他的会议一样,OOPSLA有各方面的议题,同时召开许多研讨会。所以它对不同的人有着不同的意义。与一些会议相比,它显得更加地具有学术性,因为博士生…
在知识表示、面向对象程序设计與面向对象设计的領域裡,is-a(,包容)指的是在抽象(比如類別或类型)之间體現的包容關係。例如類別D是另一個類別B的子類別(類別B是類別D的父類別),則D被包容在B內。換句話說,通常"D is a B"指的是,概念體D物是概念體B物的特殊化,而概念體B物是概念體D物的广泛化。舉例來說,水果是苹果、橘子、芒果與其他水果的广泛化。 在面向对象程序设计裡,is-a類別關係是在繼承概念的背景之下所形成的。比如說,苹…
约定优于配置(convention over configuration),也称作按约定编程,是一种软件,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"products_sold",才需写有关这个名字的配置。 如果所用工具的约定与期待相符,便可…
在计算机科學中,抽象化()是將資料與程序,以它的語意來呈現出它的外觀,但是隱藏起它的實作細節。抽象化是用來減少程式的複雜度,使得程式設計師可以專注在處理少數重要的部份。一個電腦系統可以分割成幾個抽象層(Abstraction layer),使得程式設計師可以將它們分開處理。 抽象與抽象層 抽象就是把一個問題或模型,以不同規則或方法所得出的不同的解(求解方法和解本身即抽象層),這些不同的解可以組合並還原成問題或模型的本身。 抽象的意義是可…
-{zh-cn:接口或界面; zh-tw:介面;}-(),-{zh-cn:; zh-tw:}-。介面泛指實體把自己提供給外界(可以為另一實體)的一種抽象化物,用以從與外部溝通時分離出內部操作,使其能被修改內部而不影響外界其他實體與其互動的方式,就如物件導向程式設計提供的多重抽象化。 介面是兩實體交換資料的媒介,交換資料的實體可以是軟體、電腦硬體、外部设备、人等等。有些介面(例如觸控式螢幕)是雙向的,可以傳送資訊,同時接收資訊,有些介面(…
函数对象(function object)是一个程序设计的对象允许被当作普通函数来调用。 与之相区分: functionoid(函数体对象)定义为“有一个主要方法”的对象(object),不要求是什么类型,只要能 “调用” 就行。例如:struct LessThan { bool compare(int a, int b) const { return a functor(仿函数)定义为:重载了 operator() 的类对象(clas…
在计算中,一个不完全类型是一种特殊的数据类型,它的定义会跨越多个源文件。在面向对象编程中,会由于一些不同的原因用到不完全类型:性能和成本常常会阻止使用几个分离的类;代码生成工具的使用越来越多,而将机器生成的代码和程序员写的代码分离开来,则会十分方便。 C#中的不完全类型 不完全类型是C# 2.0的一个特性。用于建立一个不完全类定义的语法如下: SourceFile1.cs public partial class ExampleClas…
在物件導向程式設計方法中,封裝()是指,一種將抽象性函式介面的實作細節部份包裝、隱藏起來的方法。同時,它也是一種防止外界呼叫端,去存取物件內部實作細節的手段,這個手段是由程式語言本身來提供的。封裝被視為是物件導向的四項原則之一。 適當的封裝,可以將物件使用介面的程式實作部份隱藏起來,不讓使用者看到,同時確保使用者無法任意更改物件內部的重要資料,若想接触資料只能通过公开接入方法(Publicly accessible methods)的方…
组件对象模型(,縮寫')是微軟的一套软件组件的二进制接口标准。这使得跨编程语言的进程间通信、动态对象创建成为可能。COM是多项微软技术与框架的基础,包括OLE、、ActiveX、COM+、DCOM、Windows shell、DirectX、Windows Runtime。COM與實作語言種類無關,如此使用它實作的物件可用在不同於開發它的環境,甚至跨越機器邊界。對製作良好的物件,COM使物件得以重複使用,而無須知道其內部實作,因為它強制…
在以類別為基礎、物件導向程式設計裡,類別變數(class variable)是定義在類別裡的變數,不論類別存在多少實例,同個類別的類別變數都是一個,不會因為實例數量而有多個變數 類別變數不是實例變數(instance variable),是一種特別的類別屬性(或是類別屬性、資料成員)。「類別」和「實例」的差異也可以用在方法(成員函式)上,類別可以有實例方法(instance method),也可以有類別方法。 靜態成員變數和靜態成員函式…