首页 > 编程语言 >三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】

三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】

时间:2023-07-29 23:35:25浏览次数:61  
标签:对象 编程 接口 面向 面向对象编程 水龙头

〇、前言

对于 .Net 中的编程思想还是十分重要的,也是编码出高效的程序的基础!

在使用之前了解其本质,那么用起来就游刃有余。下面来简单对比下三个编程思想,看下它们都是什么,它们之间又有什么关系。

一、对象、接口、过程

稍等,在介绍主角之前呐,先来了解下它们思想的基础是怎么回事。

对象

  万事万物皆为对象。我们生活中的每一件东西都可以看作是一个对象,包括我们本身都是一个对象。

  这是一种抽象的思想,我们将一件事物提取出特征和行为,将特征定义为属性,将行为封装成方法

  如,一个人,特征有姓名、年龄、性别、职业等等,行为有吃饭、睡觉、学习等等。

接口

  接口声明了属性、方法和事件,这些都是接口的成员。

  在 C# 8.0 之前,接口只包含成员的声明而不关心成员的实现,只是提供派生类实现的标准结构。在此之后时代变了,接口也可以拥有自己的带实现的方法,而且在未实现此方法的派生类中不能调用。

过程

  顾名思义,就是广义上的一件事,通过一系列对象,按照顺序,执行一系列动作,从开始到完成的集合。

二、简介与示例

1.1 面向对象编程

面向对象编程(Object Oriented Programming:OOP),侧重点在对象,解决一个问题时,先将问题中的包含的事物抽象成对象概念,对象中包含具体的属性和行为,真正执行时再让每个对象去执行自己的某些方法,从而解决问题。

举个例子说明:

就拿日常洗手这个流程吧,简单点,水冲一下就好。

其中涉及的对象有:手、水龙头、水、毛巾。

  • 针对“手”这个对象,有 5+5=10 根手指等属性,以及“开水龙头”“关水龙头”“洗”等动作,对应的就是方法。
  • 针对“水龙头”这个对象,有开关、出水口等属性,以及“流出水”等动作。

然后就是执行:

  • 手对象进行开水龙头动作,
  • 水龙头对象进行流出水动作,
  • 手对象进行洗动作,
  • 手对象进行关水龙头动作,洗手过完成。

通过上边的例子知道,面向对象编程的方式,就是先将事件中的实体抽象成具体的对象,然后再将属性和方法封装到对象中,最后通过不同的对象执行相应的方法完成事件。

1.2 面向过程编程

面向过程编程(Procedure Oriented Programming:POP),侧重点在过程。解决一个事件的时候,先分析出处理这个事件需要的步骤,然后使用方法将这些步骤一步步实现,然后处理事件的时候,按照一定的顺序执行这些方法,全部执行一遍后事件就完成了。

还是上边那个洗手的例子:

面向过程,就需要先把吸收这个事件分步骤:

  • 打开水龙头,
  • 水龙头流水,
  • 洗手动作开始,
  • 关闭水龙头。

通过以上四步,完成洗手这个事件。

通过上边的例子知道,面向过程编程的思想在处理事件时,将整个事件拆分成一个个步骤,每个步骤封装成对应的函数,然后按照某个顺序去执行,来完成事件。

1.3 面向接口编程

面向接口编程(Interface Oriented Programming:OIP)是一种编程思想。接口作为实体抽象出来的一种表现形式,用于分离内部实现和外部沟通,最终达到内部变动而不影响外部与其他实现交互的目的。可以理解成,按照这种思想来设计编程的方式称为面向接口编程。

面向接口编程归属于面向对象编程。它是属于面向对象思想体系中的一部分,或者说它是面向对象编程体系中的思想精髓之一。

还是关于洗手的例子:

  • 对于手这个对象,可以规范出一个接口,每个人的手都可以实现这个接口。这个接口都包含基本的属性,如肤色、手指等;都包含基本的方法,如洗手、开启水龙头等。
  • 对于水龙头这个对象,可以规范出接口,每个不同的水龙头都可以实现这个接口。包含基本的属性,如材质、开关的方向等;包含基本的方法,如出水等

有了这两个接口,不管是谁、那个地方、那个国家的手或者水龙头,都可以实现上边两个接口,然后轻松完成洗手这个事件。

当然,以后如果科技发达了,不用水洗手了,直接用水龙头一照就可以了,那么我们就可以在水龙头接口里边,添加一个包含实现的方法(在 C# 8.0 之后可实现),这样也就不用担心已经实现了水龙头的类出错。

通过上边的例子知道,接口可以把某一类对象的统一属性和方法,声明在一起,然后实体类再来是现接口中的全部声明,然后在通过这个类实例化出具体的对象。这样就形成了高内聚低耦合、提高了可维护性,从而降低系统维护成本。

三、小小的总结

面向对象编程

适用于用户需求经常变化,性能要求不算最高的系统开发。

  • 易理解:采用面向对象思想设计开发,更符合人的思考方式,可读性高。
  • 易维护:面向对象有封装、继承、多态性的特性,即使需求有变动,需要维护的更多是局部模块,维护起来更加方便和更低成本。
  • 易扩展:面向对象有封装、继承、多态性的特性,在设计系统阶段可以设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展。
  • 易复用:也是同理,因为面向对象的三大特性,使得通用代码可以更简单的复用,提高开发效率。
  • 性能会比面向过程低,编程复杂度较高

面向过程编程

适用于性能要求较高的系统开发。

  • 简化了事件处理的过程,一步一步执行更加易于理解。
  • 性能比面向对象编程高,面向对象编程中类调用过程需要加载、实例化,资源消耗更大。对性能要求高的产品,比如单片机、嵌入式开发、 Linux/Unix 等,一般采用面向过程开发。
  • 没有面向对象编程易维护、易复用、易扩展

面向接口编程

  • 程序结构清晰,使用方便
  • 接口经过合理设计后,有利于程序设计的规范化,并可以并行开发,提高工作效率
  • 实现了程序的可插拔性,对于不同的需求切换不同的实现,降低了耦合度,随着系统复杂性的提高这个优势会越来越明显
  • 允许多重实现,弥补了继承的缺陷
  • 增加了设计的复杂度,不佳的接口的设计会对所有使用接口的层都有影响,并且并不是所有的程序的都需要使用接口,接口只有在系统的复杂性达到一定程度才能体现出它的优势,否则只是纯粹的增加工作量
  • 可能会降低代码的可复用性
  • 可能会降低程序的执行效率

参考:https://zhuanlan.zhihu.com/p/407548596  https://zhuanlan.zhihu.com/p/75265007  https://blog.csdn.net/wantken/article/details/31763669

标签:对象,编程,接口,面向,面向对象编程,水龙头
From: https://www.cnblogs.com/czzj/p/ProgrammingConcept.html

相关文章

  • 面向对象(四)
    1、static关键字1.1、如果想让一个成员变量被类的所有实例共享,就可以用static修饰,它属于类的没一个对象,称为类变量。例如,每个中国人的国籍都属于中国,那么就不需要对每个中国人的对象都创建一个国籍的属性。1.2、在类中的方法必须通过类实例出对象才能调用,但是有些时候我们想不创......
  • 埃斯顿机器人在线编程
    1,设置电脑IP与机器人控制器LAN2口为同一网段; 2,打开,点击连接;   3,下载和上载程序   4,如果想通过电脑控制埃斯顿机器人点动,需要下载单独的示教器demo,且官网下载不到; ......
  • 笔记|《面向对象编程技术与方法(C++)》电子工业出版社
    第一章概述C++多态:https://blog.csdn.net/K346K346/article/details/82774937第二章编程基础数据类型枚举:https://www.runoob.com/w3cnote/cpp-enum-intro.html联合:https://www.runoob.com/cprogramming/c-unions.html作用域运算符:c++入门学习篇(1)之::作用域符解析c++条......
  • 一位大咖写给软件编程新手的建议 - 经验谈
    今天逛微信公众号的时候看到一个文,关于给软件新手建议的事情。看了之后有一点想法,然后就思考了下,觉得有必要记录一下自己的建议,所以就有了此博文。这里提一下,笔者自己非计算机专业,但是在学校的时候就对编程感兴趣,毕业后也从事编程工作,累积了一定的经验。按笔者的理解,不管......
  • 面向对象编程的 SOLID 原则 - 里氏替换原则
    里氏替换原则里氏替换原则描述的是子类应该能替换为它的基类。意思是,给定classB是classA的子类,在预期传入classA的对象的任何方法传入classB的对象,方法都不应该有异常。这是一个预期的行为,因为继承假定子类继承了父类的一切。子类可以扩展行为但不会收窄。因此,当......
  • 面向对象编程的 SOLID 原则 - 依赖倒置原则
    依赖倒置原则依赖倒置原则描述的是我们的class应该依赖接口和抽象类而不是具体的类和函数。在这篇文章(2000)里,Bob大叔如下总结该原则:“如果OCP声明了OO体系结构的目标,那么DIP则声明了主要机制”。这两个原则的确息息相关,我们在讨论开闭原则之前也要用到这一模式。......
  • 面向对象编程的 SOLID 原则 - 接口隔离原则
    接口隔离原则隔离意味着保持独立,接口隔离原则是关于接口的独立。该原则描述了很多客户端特定的接口优于一个多用途接口。客户端不应该强制实现他们不需要的函数。这是一个简单的原则,很好理解和实践,直接看例子。publicinterfaceParkingLot{ voidparkCar(); //Decrease......
  • 面向对象编程的 SOLID 原则
    SOLID原则是面向对象class设计的五条原则。他们是设计class结构时应该遵守的准则和最佳实践。通常,这五个原则可以帮助我们了解设计模式和软件架构。这是每个开发人员都应该了解的主题。这篇文章介绍了在项目中使用SOLID原则的细节。首先我们先看一下SOLID原则的历史。......
  • Python面向对象编程-学习笔记(二)
    5.类的继承classEmployee:raise_amount=1.04def__init__(self,first,last,pay):self.first=firstself.last=lastself.pay=payself.email=first+'.'+last+'@company.com'cla......
  • 面向对象编程的 SOLID 原则 - 开闭原则
    开闭原则开闭原则要求“class应该对扩展开放对修改关闭”。修改意味着修改存在class的代码,扩展意味着添加新的功能。这个原则想要表达的是:我们应该能在不动class已经存在代码的前提下添加新的功能。这是因为当我们修改存在的代码时,我们就面临着创建潜在bug的风险。因此,......