含义
关于概念是什么,至今也没有形成一个统一的定义。各门学科都从不同的视角表述了对概念的认识,比如:
在逻辑学中,概念是反映对象本质属性的思维形式;
在心理学中,概念是人脑对客观事物本质的反映,它是思维活动的结果和产物,同时又是思维活动借以进行的单元;
在哲学中,概念是抽象的观念。从各学科的定义中,至少我们可以看出概念是最小的思维单位,是抽象的东西。
其实,在软件工程中,我们对概念是什么应该是再熟悉不过的了,因为在面向对象的编程语言中,有一个东西和概念非常相似。
这便是我们构建应用程序的最小单位:类。
形成
应用程序设计中,让你创建一个接口想必不是什么难事,但让你定义一个稳定的、不变的接口,你未必能做得到。
定义接口其实就是定义概念,它是对事物层层抽象获取事物本质属性的结果,上层概念和下层概念之间的逻辑关系是包含关系。
比如说,日常生活中的这些概念:树、人、植物、动物、生物。
那每一层的概念如何形成的呢?一般概念的形成过程采用的是螺旋式归纳法,层层提取事物或概念共同属性的过程,大致可以分为5个基本步骤,分别是:经验、分析、对比、抽象、命名、定义。
经验作为感觉形成的第一个步骤,经验的结果即感觉是认识的材料,没有感觉我们很难想象思维何以可能。
分析是认识活动的起点。感觉中的事物有什么样的形状、颜色、气味、作用,都需要我们仔细分析事物所具有的属性。
对比是是将多个事物放在一起,找出它们之间的相似属性以及不相似的属性。
抽象是将相似的属性与不相似的属性分离,并从相似属性中提取本质属性的过程。
命名是给抽象出的本质属性找一个符号来代表其所指的事物。
定义是明确被命名的概念所反映的事物本质属性。
当然,上面的步骤仅仅只是一般的而非绝对的,而且概念的形成方式也不是仅有上面这种归纳式的方式,还有一些最抽象的概念是基于假设和演绎,如数字、时间、空间以及它们的属概念,这些概念严格意义上是无法靠归纳获得的。
范畴
范畴有两层含义,一层含义是指某个领域中最基本的概念,如上图中的View这个基本概念;另一层含义是指范围或领域,比如,我们说Button属于View范畴。
范畴是反映客观事物的普遍本质的基本概念,它可以用来表示某个特定域下的一切具体的事物。
古希腊哲学家亚里士多德在其逻辑学著作《工具论》中的范畴篇里,给出了人类认识的10个范畴,分别是:实体、性质、地点、时间、数量,关系、姿态、状况、主动、被动。
后来,德国伟大的哲学家康德对其进行了完善,将其分成4组每组三个总共12个范畴,如下:
量的范畴:单一性、多数性、全体性
质的范畴:实在性、否定性、限制性
关系范畴:实体--偶性、原因--结果、协同性
模态范畴:可能性--不可能性、实有性--非实有性、必然性--偶然性。
各学科和各行业因研究的对象不同或领域不同,也会形成自己的基本概念,它们的主要工作便是研究这些概念以及概念之间的普遍关系。
比如,逻辑学中的概念、命题、论证等,经济学中的需求、供给、均衡。
在比如,应用软件中,MVC架构模式中的模型、视图、控制器,它们是基本概念也是范畴。
总结
概念是抽象思维活动的产物,同质的概念属于同一范畴,同范畴中的概念因逻辑关系会形成抽象的等级结构,这个结构看起来像一棵树或金字塔,塔顶的概念是基本概念即范畴,塔底的东西是具体的事物,从塔底到台顶是不断抽象的过程。
应用程序便是由很多彼此联系的金字塔构成的,程序设计最重要的便是找到范畴或域,并定义范畴之间的关系、以及概念之间的层次关系。