一分钟进一步了解面向过程、面向对象、面向接口、面向抽象

计算机是用来解决处理一些问题或事情的,而所谓的问题或事,则是由一个个的客体所触发的,所以在现实世界中存在的客体,则才是问题域的主角,这也是人类解决问题的基本思路

* 客体,即是客观存在是实体,客体由一些属性和行为来描述;

举个例子,如:现实生活中的泥石流事件,我们最好的解决办法不是针对事件本身,而是针对引起这事件的实体,
所以我们一般会将问题转移到山这个客体上,然后对山体进行一些如绿化、水泥浇灌等工作从而来解决问题;

再比如:学生打架事件,同样的,我们应关注的是客体而不是事件本身,无论什么缘由打架,最终都还是归咎于客体本身的问题,如果每个学生都一定认知,那么遇到问题就能够商讨去解决,也不至于什么问题都用打架来解决。所以针对打架事件我们应该是对学生这个客体进行教育。

回到软件设计中来,我们需要用计算机来代替人类工作,同样需要用人类解决问题的思路去分析和描述问题,才不容易让问题变得复杂,从而跟容易将问题以代码的形式表现出来。

在软件设计目前有以下两种实现方法,一种是结构化设计方法(也可称之为面向过程),一种是面向对象的设计方法

一、结构化设计方法
结构化设计方法所采用的的思路不是将客体作为一个整体,而是将客体的行为(方法)抽取出来,以功能为目标来设计系统,那么由客体构成的世界将转变为由功能构成,这远远背离了人类观察问题和解决问题的基本思路,同时在程序设计中将大大增加了系统的复杂度;

因为,在任何一个问题域中,客体是稳定的,而行为(方法)是不稳定的,当问题规模不断扩大,系统日趋复杂后,一方面,
如果客体的某些属性发生变化时,将牵扯到系统的很多功能;另一方面,很多问题将会让我们更加难以分析理解,就很难将人类处理问题的方法,以代码的形式表示出来交与计算机来处理;

因此,面向对象就应运而生。

二、面向对象
面向对象与结构化设计方法不同,它将客体的属性和行为统一抽象出来,让我们在考虑问题时,以对象为单位,考虑它的属性和方法,从而达到对现实世界中客体模拟;站在程序设计者的角度上来说,系统的各个功能是由一个个对象之间相互协作完成,那么,设计者就只需关系各对象之间的协作关系,而不用关系各对象内部的具体实现。


三、面向接口编程和面向抽象编程
面向接口编程与面向对象/过程不是一个问题,因为面向接口编程是站在一个复用性和扩展性的角度上来讲的,比如说:我们写了一个静态化功能,我们先读取文件、然后获取模板所需的数据,然后根据读取的文件和数据,调用一个execute(f,d)方法来完成静态化;但是,现在我们还没开发出execute方法,而且也不知道以后将使用freemarker、jsp还是velocity来实现静态化,所以我们就可以将execute抽象出来,作为一个接口,当谁需要使用,则随便用freemarker或是velocity来实现execute都能让程序正常运行。

在开发过程中,经常会用到第三方框架或一些插件,同样的,很多情况下,我们也只需要实现它要求的接口,就能完成对应的功能;

面向接口编程所说的接口,指的是对定义(协议、规范)和实现的分离。接口被分为两类,一类是对个体某一方面(行为)的抽象,即形成抽象面,程序中表现形式为interface;另一类是对个体的抽象,对应于一个抽象体,程序中表现为abstract class; 比如,我们可以将牛、马、羊抽象为动物一样;

 

 

参考:

1)百度百科 - 面向对象

2)  百度百科 -  结构化设计方法

2)CSDN博客 - https://www.cnblogs.com/feng9exe/p/5588671.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值