C#核心(1)概述面向对象
目录
前言
在先前的开发学习中,其实我们更多是靠流程来实现目的,但实际我们开发中,肯定不能如此,为什么呢?是因为我们要解决的问题往往在开发过程中都会有新的属性,所以我们就更需要清晰的框架。
这不是简单的函数分类,而是我们把所有流程中的事物都看成一个个物品,然后去丰富物品的属性。
你可能已经想到了结构体,但是博主想说的是,在c#中,结构体并不是核心的内容。
在我们开启c#核心的知识点的讲解之前,我希望为你们讲解一个新的概念。
即为,面向对象编程理念。
我们让gpt举了个例子。
面向过程方法的优势:
- 结构简单,直观易懂。
- 性能上相对更高,因为不需要额外的对象操作和方法调用的开销。
面向过程方法的劣势:
- 不易维护和扩展,因为它将问题分解为一系列的步骤,每个步骤都是独立的函数,难以协调和组织。
- 不易复用,因为函数只能在特定的上下文中使用。
面向对象方法的优势:
- 更易维护和扩展,因为它将问题分解为一组相互关联且彼此依赖的对象,可以通过修改对象的属性和方法来实现修改和扩展。
- 更易复用,因为对象可以在不同的上下文中使用,可以通过继承和组合来实现代码复用。
面向对象方法的劣势:
- 结构相对复杂,需要设计类和对象之间的关系。
- 性能上相对较低,因为需要额外的对象操作和方法调用的开销。
伪代码示例:
面向过程方法:
FUNCTION calculateArea(length, width)
area = length * width
RETURN area
END FUNCTION
length = 5
width = 10
area = calculateArea(length, width)
PRINT "Area:", area
面向对象方法:
CLASS Rectangle
private length
private width
METHOD setLength(newLength)
length = newLength
END METHOD
METHOD setWidth(newWidth)
width = newWidth
END METHOD
METHOD calculateArea()
area = length * width
RETURN area
END METHOD
END CLASS
rectangle = new Rectangle()
rectangle.setLength(5)
rectangle.setWidth(10)
area = rectangle.calculateArea()
PRINT "Area:", area
但很显然这些伪代码看上去非常复杂,那博主就来总结一下。
面相过程编程的概念
是一种以过程为中心的编程思想,即我想到什么都在流程里直接加,而不是把他强制和什么对象绑定在一块。
面相对象编程
面向对象是一种对现实世界理解和抽象的编程方法,把相关的数据和方法组织称为一个整体来看待。
我们可以把他理解成,我们只开发结构体(对象),然后用结构体(对象)拼接成过程。(但我们绝对不是开发结构体)
为什么可以这样做,是因为我们能把所有事情都用程序描述和形容出来。
为什么使用面向对象编程
- 代码复用率up
- 开发效率up
- 拓展性up
- 逻辑结构清晰度up
核心部分知识概括:
类(class关键词)
类的三大特性(封装继承多态)
七大原则
这作为补充知识点,博主在这里进行概括,详情看后续有没有余力,出更详细的讲解教程:
面向对象的七大原则是指以下七个原则:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、合成复用原则。
-
单一职责原则(Single Responsibility Principle,SRP):一个类只应该有一个引起它变化的原因。即一个类应该只负责一项职责,当一个类承担了多项职责时,任何一个职责的变化都可能影响到其他职责的正确性。
-
开闭原则(Open-Closed Principle,OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即在不修改现有代码的前提下,通过扩展来增加新的功能。
-
里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉它们的父类型。即使用一个父类对象的地方,可以替换成子类对象,而且程序不会出错或产生异常。
-
依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。即抽象不应该依赖细节,细节应该依赖抽象。
-
接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖于它不需要的接口。即一个类对另一个类的依赖应该建立在最小的接口上。
-
迪米特法则(Law of Demeter,LoD):一个对象应该对其他对象有尽可能少的了解。即一个对象只应该和自己的直接朋友通信,不要和陌生类通信。
-
合成复用原则(Composite/Aggregate Reuse Principle,CARP):尽量使用对象组合,而不是继承来达到复用的目的。即在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用的目的。
很复杂,但是我希望你在学习完c#核心后一定好好地恶补这些原则,因为这是你在团队中开发,或者做长远开发必不可少的东西。
总结
我们本节了解了面向对象还有七大原则,也简单了解了一些核心部分的知识点。
那就让我来继续带着你学习c#相关的知识点。
希望你能在我的博客中有所收获,有所成长。
还是那句话,学习路上,戒骄戒躁,脚踏实地。
请期待我的下一篇博客!
原文地址:https://blog.csdn.net/a6s686/article/details/142499450
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!