当前位置: 首页 > news >正文

C#知识|加强面向对象编程的认识

哈喽,你好啊,我是雷工!

前面记录过《OOP、类、对象的认识》与《OOP学习总结》

本节补充学习面向对象相关的内容,以下为学习笔记。

01 面向对象起源

最初的程序基本是面向过程,像最初的PLC程序一样,规模比较小,编程基本上是用各种函数,按照一定的逻辑进行执行和中断,实现过程控制;

随着项目规模的扩大,无法很好的满足系统要求,于是优化出面向对象编程,对系统进行“类的划分’”,以类为单元封装对应数据和功能;

02 面向对象优点

如果按照传统的面向过程方式编程,所有代码都堆在一起,完全是各种函数和方法的罗列,随着功能的扩展,程序代码需要整个修改,全部优化,随着规模的增大,会非常乱,最后成为大家所说的屎山;

面向对象编程的好处是分工非常明确,可以专注某一部分,扩展比较方便;

03 如何学好面向对象编程

①:首先要理解类的概念、类的组成和对象的使用;

②:要学好面向对象编程,主要是学好面向对象编程的各种原则,各种方法、各种技巧、各种模式及各种经验;

③:掌握面向对象的封装、继承、多态三大特性;

04 面向对象编程方式

当用面向对象的思想进行编程时一般按照以下步骤进行:

①:首先进行UI界面效果设计;

这个跟SCADA项目类似,项目开发前先进行UI界面的效果设计,客户认可后再根据UI设计的效果图进行切图,开始SCADA界面程序的开发;

②:以对象为中心进行类的抽象化;

根据项目需求,分析都有哪些对象参数,应该封装哪些数据和行为;

使用面向对象思想编程将数据和行为封装后,需要考虑数据在各层之间的传递问题;

类的作用是封装属性和行为。

当使用类中的属性和行为时,通常是以这个类的对象形式new一个类,就是创建一个对象;

程序会随着对象的创建开辟对应的内存空间,当使用完后对象会被垃圾回收装置自动清理;

C++属于半面向对象编程,当创建使用完需要手动清理;

C#属于完全面向对象编程,对象的清理是自动完成的,不需要人为干预;

05 Windows事件

事件组成:事件委托和事件方法

当删除事件委托时,事件的方法在操作时不再响应;

当只删除事件方法而没有删除对应的事件委托时,程序会提示错误;

06 后记

以上为面向对象的补充记录,有不当之处欢迎评论区指正;

更多相关话题可以在交流群沟通;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024年【氧化工艺】考试及氧化工艺最新解析
  • docker run的--shm-size是干嘛用的
  • 聊一下Jetpack AppStartUp的使用和原理。
  • ClimODE——使用神经网络ODE 进行天气预报
  • 日志管理与时钟同步
  • 11 Java 方法引用、异常处理、Java接口之函数式编程(接口知识补充Function<T,R>、BiFunction<T, U, R>和自定义泛型接口)
  • 14个中国各朝代地图图源分享
  • YoloV9改进策略:下采样改进|集成GCViT的Downsampler模块实现性能显著提升|即插即用
  • 燃油车淘汰倒计时开始了?
  • 音视频入门基础:WAV专题(8)——FFmpeg源码中计算WAV音频文件AVStream的time_base的实现
  • echarts处理y轴最大小值根据数据动态处理、分割数和是否从0开始
  • 衡石科技产品手册-指标分析
  • OpenCV绘图函数(14)图像上绘制文字的函数putText()的使用
  • 赞奇科技与华为云共襄828 B2B企业节,激活数字内容“云”创作
  • 理解并优化页面启动时的周期性数据发送代码
  • Cookie 在前端中的实践
  • JavaScript-Array类型
  • Java超时控制的实现
  • JS实现简单的MVC模式开发小游戏
  • Mocha测试初探
  • supervisor 永不挂掉的进程 安装以及使用
  • 初识 webpack
  • 关于Flux,Vuex,Redux的思考
  • 软件开发学习的5大技巧,你知道吗?
  • 收藏好这篇,别再只说“数据劫持”了
  • 我看到的前端
  • 用简单代码看卷积组块发展
  • 如何用纯 CSS 创作一个货车 loader
  • # Apache SeaTunnel 究竟是什么?
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C++17) optional的使用
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (第二周)效能测试
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (转)ObjectiveC 深浅拷贝学习
  • *上位机的定义
  • ./和../以及/和~之间的区别
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 验证控件和javaScript的冲突问题
  • .NET关于 跳过SSL中遇到的问题
  • /etc/fstab和/etc/mtab的区别
  • /proc/stat文件详解(翻译)
  • ??eclipse的安装配置问题!??
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ 第一章] JavaScript 简史
  • [\u4e00-\u9fa5] //匹配中文字符
  • [].slice.call()将类数组转化为真正的数组
  • [AutoSar]工程中的cpuload陷阱(三)测试