理解面向接口编程。

目录

        1.什么是接口?

        2.实体分层级,对应的,各类实体的接口也因实体的层级不同而表现为不同的形式。

        3.为什么需要接口。

        4.计算机常用实体的接口的具体表现/实现是怎样的。

        5.面向实现编程与面向接口编程。

        6.面向接口编程与面向过程编程、面向对象编程的关系。

        7.接口的本质:抽象----对具体实现数据(现实世界数据)的抽象。

        8.接口的要求:规范。


        1.什么是接口?

        接口,就是一个实体与其他实体进行交互时发生联系的那个界面。一个实体与外界其他实体发生关系,通过自己的接口和别的实体的接口进行。因此,接口的对立面,就是内部。
        也就是说,可以把实体分成:内部与接口两部分

        2.实体分层级,对应的,各类实体的接口也因实体的层级不同而表现为不同的形式。

        计算机世界的实体,就像现实世界的实体。
        实体有大有小,有层次之分。
        现实世界的实体。比如:树叶、树枝、树根、指甲,眉毛,手,脚,脑袋,心脏,人,老虎,树木,单位,县,市,省,国家,地球,太阳系,银河系,宇宙等等。
        计算机编程中常用的实体。包括:函数,类与对象,模块,程序,硬件(键盘,鼠标,显示器,cpu,计算机,集群,网络)等。
        想当然,不同大小或层级的实体间的接口当然是不同的。比如函数的接口,类与对象的接口,模块的接口,程序的接口,键盘接口,cpu接口,网络接口等,彼此是不同的。

        3.为什么需要接口。

        接口源于实体间相互协作的客观需要。一个实体只关心另一个实体能干什么或者能提供什么(即接口的输出),为此自己需要先提供给对方什么(即接口的输入)。至于对方实体的内部是什么样的,怎样运作的,那是对方实体自己的事情,与自己无关,不必关心。

        4.计算机常用实体的接口的具体表现/实现是怎样的。

        接口,通常不止一个部分,多数会有若干个部分组成。大致可分为:接口输入、接口输出两大部分。
        函数的接口:输入参数,输出参数,返回值。返回值类似是一种特殊的输出。如果使用了全局变量的话,其实全局变量也是一种接口。但都不建议使用全局变量,读了下面“5.面向实现编程与面向接口编程”的内容后你会明白为什么这样建议。所以,建议:在一切使用全局变量的地方,统统用输入/输出参数代替之。注意:有些输入/输出参数是文件名,其真实的接口其实是外部的文件,或是数据文件,或是可执行文件等。
        类与对象的接口:公共方法(本质是公共函数)。一般都不建议直接使用公共属性。
        模块的接口:内置函数与公共类。
        程序的接口:就是程序命令后的参数(就是C语言int main( int argc, char *argv)中的argv)与程序输入输出操作的那些文件等。在可视化编程中,这些接口可能通过可视化的方式如对话框、输入框、复选框、按钮等方式表现。

        其他实体的接口:如硬件USB接口、CPU接口、网络软socket接口、网络硬RJ45接口等读者自行脑补。无法一一赘述。

        5.面向实现编程与面向接口编程。

        面向实现编程。比如:计算一个班50名学生的平均身高计算 ,需要编写(h1+h2+h3......+h50)/50计算即可 。那么计算第二个班的呢,再编写(h1+h2+h3......+h50)/50计算一遍。如果有100个班就编写100遍,有1000个班编写1000遍。显然,对于巨大数据量的情况,编写工作量将是难以承受的。面向实现编程,是最原始的编程方式。上面“4.计算机常用实体的接口的具体表现/实现是怎样的”中提到的使用全局变量,本质上就是面向实现编程的一种体现。
        事实上,上述编写工作中的大部分代码都是重复性工作,这就诞生了相同性工作不要重复做,而只做一次的技术需要,这就是“代码的复用”。
        面向接口编程的根本目的:代码的复用(即,节省重复性工作的工作量)。
        最早的或者最低一级的代码复用:函数。
       代码复用的技术实现:面向接口编程。
       面向接口编程实现了:实体间的解耦(即,最大程度的简化两个实体间的不必要的互相影响,减少代码修改的工作量)。一个实体内部代码的修改变化,对于与其交往的其他实体的内部运作无影响,即不需要修改其他实体的代码,这就是解耦。

        6.面向接口编程与面向过程编程、面向对象编程的关系。

        首先,很多文章认为面向接口编程是面向对象编程思想的一部分。这种观点是不对的。面向对象编程用得到面向接口编程思想。但他们不是包含/被包含关系,面向接口编程不是面向对象编程的一部分,尽管面向接口编程是面向对象编程七大原则之一,但两者之间不是整体与部分的关系。
        他们是按不同的分类标准划分的。就像,可以说老虎比狼有力量,但要说老虎不如麻雀飞的高就是笑话了。
        面向实现编程、面向接口编程两者是按一个标准分的类。
        面向过程编程、面向对象编程两者是按一个标准分的类。举例说明如下:函数的函数体内部就是面向过程编程,函数的输入/输出参数与返回值就是面向接口编程思想的体现。类与对象的设计本身就是面向对象编程的基础体现,类与对象的公共方法就是面向接口编程思想的体现。

        7.接口的本质:抽象----对具体实现数据(现实世界数据)的抽象。

        从一个角度讲,程序/代码就是对数据进行处理。面向实现编程,是直接使用真实的海量数据编写代码。面向接口编程,是使用对现实数据进行抽象后得到的那个某种数据类型的变量进行编程,一个变量代表了无穷个真实数据。
        比如上面计算学生的平均身高的函数的接口,int height[50],是一个整型数组变量(即整型变量),而不是具体的50个身高数据(即50个整数)。事实上,上述int height[50]数组可以代替/代表无穷组的50个身高数据。对50个身高数据的抽象,就是整形变量int height。

        8.接口的要求:规范。

        规范,即标准化的或约定俗称的形式。其目的是便于各实体的识别与统一。毕竟,如果张三要买李四1斤苹果的话,假如张三的1斤是10两,而李四的1斤是16两的话,那就麻烦了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值