c#—基础拾遗(1) 面向对象

白冰 2021-05-04 15:19:25
C# 面向对象 基础 面向 拾遗


首先咱们复习一下什么是对象。

这里这个对象不是咱们c# 中的实例,在c# 中我们也可以把一个类也可以当成一个对象。但是在面向对象编程时这个对象应该是实现的对象,对象的定义是这个实现要做的事。从简单到复杂都可以看作一个对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

有人说一切皆对象,难道在编程时要面对一切编程, 那岂不是复杂了。

因此面向对象,这个对象,指的是客体。所谓客体是指客观存在的对象实体和主观抽象的概念。

为什么要面向对象编程?

面向对象是为了解决系统的可维护性,可扩展性,可重用性,我们再进一步思考,面向对象为什么能解决系统的可维护性,可扩展性,可重用性?

咱们可以从面向对象产生的历史来发现:

计算机的产生是来帮助人们解决问题的,但是机器毕竟是机器,需要人来设置下一步的指令来完成下一步的操作,最终得到我们想要的结果。所以不管程序多么复杂,计算机都能轻松应对。如此以往代码越来越看不懂维护越来越复杂。因此就叫做结构化编程诞生。

结构化编程的基本思想是:

  1. 有序地控制流程,即把程序的执行顺序限制为顺序、分支和循环这三种;
  2. 把共通的处理归结为例程(函数)。

结构化编程的好处是:

三大限制:大大降低了程序的自由度,减少了各种组合,使得程序不至于太过复杂。对于这一点,结构化编程的顺序、分支和循环可以实现一切算法,虽然降低了程序的复杂性和灵活性,但是程序的实现能力并没有降低。

例程(函数):我们只需要知道过程(函数)的名字,而不需要知道过程的内部细节,即“黑盒化”。

虽然结构化解决了程序控制流的复杂问题,但程序里面不仅包括控制结构,还包括要处理的数据。随着处理数据的增加,程序的复杂性也会上升。这时候,面向对象编程来了!

面向对象编程分为几个步骤?

面向对象是一种思想,他让我们在分析和解决问题时,把思维和重点转向现实中的客体中来,然后通过UML工具理清这些客体之间的联系,最后用面向对象的语言实现这种客体以及客体之间的联系。它分为面向对象的分析(OOA),面向对象的设计(OOD),面向对象的编程实现(OOP)三个大的步骤。

1、首先是分析需求,先不要思考怎么用程序实现它,先分析需求中稳定不变的客体都是些什么,这些客体之间的关系是什么。

2、把第一步分析出来的需求,通过进一步扩充模型,变成可实现的、符合成本的、模块化的、低耦合高内聚的模型。

3、使用面向对象的实现模型

面向过程到面向对象思维如何转变?

我们在拿到这个需求时不应该直接去想怎么去实现。应该去分析需求,找到需求中对应的客体,根据找到的这些客体来分析这些客体中的关系。因此我们拿到需求后先分析建模了解其中的关系,开发出可维护,可扩展,可重用,高质量的模块。这种思路的转变,可能需要个过程

面向对象三大特性:

【封装、继承、多态】

面向对象编程的优点?

A、可重用性:有利于开发速度 如果你想开发某个功能发现他实现起来很麻烦,这个时候有另一技术能很好地解决,其优势就发挥出来了

B、封装性/抽象性:结构清晰 很标准 规范化 易于理解 可读性更强

C、继承 :易扩展,在大框架不变的情况下很容易就开发出适合自己的功能

版权声明
本文为[白冰]所创,转载请带上原文链接,感谢
https://www.seoxiehui.cn/article-318397-1.html

  1. Help, Java how to get all the current processes of the system
  2. Has anyone ever used JMeter or written tests in httpUnit????
  3. Living in a mountain village in late spring
  4. Partridge day, spring of HKUST
  5. JavaScript异步编程4——Promise错误处理
  6. 海康摄像SDK开发笔记(一):海康威视网络摄像头SDK介绍与模块功能
  7. JavaScript asynchronous programming 4 -- promise error handling
  8. Haikang video SDK development notes (1): introduction and module functions of Hikvision webcam SDK
  9. JOP:用于FPGA的嵌入式实时系统中的Java优化处理器内核
  10. Spring Boot源码:使用MongoDB MongoTemplate公开REST在几分钟内实现CRUD功能
  11. Spring Boot应用程序事件教程 - reflectoring
  12. 带有Resilience4j断路器的Spring云网关 - rome
  13. 经验分享:Apache Kafka的缺点与陷阱 - Emil Koutanov
  14. 通过Spring Boot Webflux实现Reactor Kafka
  15. 从Java 8升级到Java 11应该注意的问题
  16. Jop: Java optimized processor core for FPGA embedded real time system
  17. Spring boot source code: use mongodb mongotemplate to open rest to realize crud function in a few minutes
  18. Spring boot application event tutorial - reflecting
  19. Spring cloud gateway with resilience4j circuit breaker - ROM
  20. Experience sharing: shortcomings and pitfalls of Apache Kafka - Emil koutanov
  21. Realization of reactor Kafka through spring boot Webflux
  22. RPC框架设计----Socket与I/0模型
  23. Problems in upgrading from Java 8 to Java 11
  24. RPC framework design -- socket and I / 0 model
  25. RPC框架设计----I/0模型
  26. RPC framework design: I / 0 model
  27. RPC框架设计----NIO编程缓冲区Buffer
  28. RPC框架设计----NIO编程缓冲区Buffer
  29. RPC framework design -- NiO programming buffer
  30. RPC framework design -- NiO programming buffer
  31. Java多线程基础
  32. Java multithreading Foundation
  33. 码农飞升记-00-Java发展历程
  34. Development history of coder-00-java
  35. 码农飞升记-00-Java发展历程
  36. Development history of coder-00-java
  37. Spring and Autumn Moon
  38. Node.js与Spring Boot比较? - Ryan Gleason
  39. Spring WebFlux的明显陷阱 - ŁukaszKyć
  40. Spring创始人Rod大叔对YAML的真实想法
  41. Compare node.js with spring boot- Ryan Gleason
  42. Obvious pitfalls of spring Webflux- Ł ukaszKy ć
  43. Spring founder uncle rod's real thoughts on yaml
  44. 码农飞升记-02-OracleJDK是什么?OracleJDK的版本怎么选择?
  45. What is manong feisheng-02-oracle JDK? How to choose the version of Oracle JDK?
  46. Spring tide surging Xinanjiang
  47. Linux内核软中断
  48. Linux kernel soft interrupt
  49. Linux内核软中断
  50. Linux kernel soft interrupt
  51. Java multithreading Foundation
  52. The construction of Maven private library nexus
  53. I / O stream in Java
  54. JDK 16:Java 16的新功能 - InfoWorld
  55. 在Java中本地进行线程间数据传输的三种方式和源码展示
  56. jdon导致cpu 99%最后tomcat死掉---banq给予回复
  57. 用领域事件模拟AOP注入
  58. JDK 16: new function of Java 16 - InfoWorld
  59. Cartoon: from JVM lock to redis distributed lock
  60. Spring 3.1 终于加入了Cache支持