我正在努力理解本体论基础知识.这是一个例子:
我的问题是了解什么是"2009大众CC"(作为汽车模型).如果你将产品模型作为本体中的一个子类 - 突然间你的本体变得臃肿,有数千个"汽车"的子类.那是多余的.同时我们不能说"2009 VW CC"是一个实例,至少它不是一个类的实质实例.
区分常规实例和材料(不同的物理对象)是否有意义?
另一方面,如果两者都是实例(具有不同性质),那么实例如何继承非类的属性/关系?
我讨厌说这取决于,但这取决于.
如果你需要对世界上每辆车进行建模,并且有方法可以调用它们(比如"换轮胎",这是一个每个型号都有不同的过程)那么是的,你会有很多臃肿的课程,因为你的现实世界的情况也是臃肿的.
如果你只想拥有原型汽车图片的数据库,并且你不开车是否是你邻居的实例或你姐姐的实例的图片,那么你可以放弃底层."2009 VW CC"很可能是一个实例,即使你可以想象它也是另一个模型中的一个类.
或者,也许您根本不需要使它成为真正的子类.一个简单的参考可能就足够了.例如,一家保险公司知道大量的汽车模型和年份,但开发人员不会为每个人编写一个子类.相反,他们有一个汽车模型数据库,其中一行代表2009大众CC.当您为汽车投保时,他们会创建一个"保险车"实例,并参考"2009大众CC"实例.
这并不严格遵循"使用继承进行'is-a'关系",但所有汽车类型的操作都是相同的 - 它只是改变的参数(例如每年的保险价格)和新车型记录在数据库中,而不是代码中.
这里的一个假设是,您可以将差异模型之间的差异建模为汽车上相同方法的参数.
(旁白:当iPhone开始通过电话公司网站上市时,我注意到它打破了他们的班级模式 - 他们的网站似乎在一个页面上处理了数十个品牌和型号的手机 - 可能是使用简单的手机数据库和他们的功能 - 然后需要一个专门的页面来处理iPhone型号,大概是因为他们的课程需要新的特殊方法来支持iPhone销售的某些方面.自动销售台会说"按1购买手机.按2到买一台iPhone.")