C#复习:面向对象基本概念

news2024/9/30 1:26:01

C#复习:面向对象基本概念

  • 前言
  • 什么是面向对象
    • 类,名称空间的介绍
  • 如何导入类库
    • DLL引用(黑盒引用)
    • 项目引用(白盒引用)
    • NuGet介绍
  • 依赖关系
  • C#的分装(个人理解)

前言

关于我C#的博客是根据刘铁猛老师的C#入门课程为基础写的,可以配合刘铁猛老师的课程一起观看,会由更好的理解!

什么是面向对象

所谓面向对象,在我看来,就是把世界上的很多事物抽象成数据,方法等,举个例子
在这里插入图片描述
这是个汽车,这个汽车有发动机,变速器…
在面向对象的程序中,我们是这样描述这个汽车的
在这里插入图片描述
我们将发动机定义成了一个整形的字段,同时车还有一个速度,一个起火的方法,这就相当于设计图,当我在主函数内通过Car这个类声明一个对象时,操作系统会为其开辟一块内存空间,就相当于我对照这个设计图将汽车设计出来了,并且我可以对它进行一系列操作。
在这里插入图片描述

类,名称空间的介绍

是一种数据结构,是面向对象程序设计的基础,也是重点,所谓类就是各种数据,方法,事件…进行分装,同时,类也可以继承,多态也是基于类中的方法,若要使用某个类的话,要么使用权限访问法,要么在开头引用名称空间,直接进行访问。
在这里插入图片描述

在VS编译器中,类的提示是水蓝色的。
名称空间可以认为是类的集合,是对类进行的树型结构的管理,类似与图书馆
在这里插入图片描述
其中的每一本书都是一个被定义的类,可以通过命名空间对所有的类进行管理和访问。同时,名称空间还有一个很重要的功能,就是防止类名重复导致访问冲突,归属于不同名称空间的类,即使类名冲突,也可以分别对其进行访问。

如何导入类库

首先要讲讲什么是类库,所谓类库就加粗样式是各种名称空间的集合,相当于对名称空间再次进行分装我们在使用某个类的时候,就要引用它所在的类库(类似与C语言的包含头文件)VS可以引用自带的类库,同时使用者也可以自己定义类库并引用。

DLL引用(黑盒引用)

DLL引用被称为黑盒引用的原因,是因为我们无法知道项目中某功能的具体实现,也无法修改内容,我们只能使用。

对于微软编辑好的类库,我们可以这样引用
在这里插入图片描述
点击之后程序集下就是微软编译的类库,同时我们也可以进行搜索,找到类库后单机类库名,左侧打勾,并且确认。
在这里插入图片描述
在这里插入图片描述
其他被引用的类库是一些常用功能,系统自动引入了。
自定义的类库如何引用呢?
在这里插入图片描述
在这里插入图片描述

创建好类库后,写一个类,对类库进行运行会生成.dll文件,在自己的项目中引用,下面我来展示如何引用。
在这里插入图片描述
引用成功后,就可以使用该类库了。

项目引用(白盒引用)

所谓白盒引用,就是我们有项目的源代码,可以对其进行修改

首先创建类库(.NET Framework),写好内容后,引用
在这里插入图片描述
就可以使用该类库的内容了。

NuGet介绍

许多类库是有关联的,如果想使用某个类库中的内容,往往需要引用其他类库,为了减少我们的操作了,方便使用,NuGet程序包就出现了,程序包将一些关联的类库在进行分装,只要下载,添加后能直接使用了。

依赖关系

在我们进行程序设计的时候,往往希望我们的代码是高内聚,低耦合的,所谓高内聚就是单一的功能只由单一的方法实现,一个方法最好只实现一个功能,所谓低耦合,就是在项目中不要太依赖与某一个类,方法等,只要被依赖的类和方法出问题了,整个项目都会出问题,我们也可以通过很多方式解耦和,如接口等

C#的分装(个人理解)

面向对象的基础是类,类是方法,数据的分装,名称空间则是对类进行的树形管理,防止重复的类名访问冲突,类库对名称空间进行分装,便于更好的管理,程序包又对类库进行了分装,将相关联的类库分装在一个程序包中,便于开发者使用。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.bat批处理命令处理文件

批处理命令处理文件找到上级目录,并删除文件与文件夹 参考资料: [BAT] 如何获取bat的上一级目录、上两级目录..._bat 上层目录_Risun_Lee的博客-CSDN博客echo offset currPath%~dp0set parentPathset parentparentPath:beginfor /f "tokens1,* de…

solidworks导出文本能打开的stl文件

几种以文本格式(ASCII)导出stl的设置 1.solidworks导出时需要在选项里设置导出格式为ASCII,当选择以二进制格式导出时,打开会乱码; 2.CAD直接导出的是以二进制形式导出的,导出后也无法使用文本打开&#xf…

NVIDIA DALI学习:数据加载

DALI的工作流, 如下图: 读取数据图像解码和变换,可以放到GPU上进行,也是加速的关键生成处理好的数据, 导出给计算引擎 测试用例 import ctypesimport numpy as np import nvidia.dali.fn as fn import nvidia.dali…

关于Godot动态生成节点的细节

var dy_btn Button.new()add_child(dy_btn)print(get_child(0).name) 此时获取的名词会带有动态类型,如果这个时候想通过特定的节点名词来获取节点是不行的 此时需要补充类似 dy_btn.name "a" 的代码,然后就能按照节点名词获取节点了

Java下打印九九乘法表

这个算法是基于打直角三角型演变而来&#xff0c;代码如下&#xff1a; public class MyWork {public static void main(String[] args) {for (int i 1; i < 10; i) {for (int j 1; j < i; j) {System.out.print(j "x" i "" i*j "\t&qu…

使用Arduino简单测试HC-08蓝牙模块

目录 模块简介模块测试接线代码测试现象 总结 模块简介 HC-08 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V4.0 BLE 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM&#xff0c;调制方式是 GFSK。模块最大发射功率为4dBm&#xff0c;接收灵度-93dBm&#xff0c…

软考软件设计师-计算机组成与体系结构(上

软考中级 一、数据的表示如果是其他进制 二、把十进制转其他进制【短除法三、存储系统的层次结构存储系统-存储器的分类 四、把二进制转8进制与16进制二进制转8进制二进制转16进制 五、原码、反码、补码原码反码补码移码原码 反码 补码的取值范围 六、数据的表示-浮点数运算七、…

TienChin 渠道管理-配置字典常量

在字典管理当中添加渠道状态 channel_status&#xff1a;渠道状态 分别为&#xff1a; 正常&#xff0c;键值为1&#xff0c;回显样式为 success 禁用&#xff0c;键值为0&#xff0c;回显样式为 info !> 有个注意点&#xff1a;Vue3 当中 v-for 与 v-if 不能写在一起。 在上…

Linux 查看进程和线程

ps命令 在ps命令中&#xff0c;“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。 ps -T -p <pid> “SID”栏表示线程ID&#xff0c;而“CMD”栏则显示了线程名称。 你可以用 ps -eLf |grep XXX 来查看程序运行所产生的线程情…

005:vue2使用vue-type-writer实现打字机效果

Vue Type Writer是一个Vue.js 2打字机效果组件&#xff0c;支持像打字机一样模仿键入文本。 文章目录 1. 效果2. 安装使用 1. 效果 2. 安装使用 npm 安装 npm install vue-type-writer --save完整代码 <template><div class"app-container home"><…

MyBatis 高级使用

文章目录 动态SQL语句ifchoosetrimforeach 批量操作批量插入批量更新批量删除BatchExecutor 关联查询嵌套查询延迟加载 分页操作逻辑分页物理分页 MyBatis Generator添加配置文件添加插件生成 通用Mapper方式一方式二 MyBatis-Plus 动态SQL语句 动态 SQL 是 MyBatis 的强大特性…

【运维篇】二、配置文件与多环境控制

文章目录 1、临时属性2、IDEA中的临时属性3、配置文件4级分类4、关于四级分类的思考5、自定义配置文件6、多环境开发&#xff08;yaml版&#xff09;7、配置文件按环境分类8、include与group再细粒度9、一点思考10、多环境开发兼容问题 1、临时属性 jar包或者镜像已经打完了&a…

根据每帧点云的PCD文件和每帧的位姿合成整个点云地图(附python open3d 代码)

现在有多个PCD文件表示每帧的点云,有一个位姿文件,里面是每帧的位姿,需要根据每帧点云和每帧的位姿合成整个地图。 首先,从文件中读取所有点云文件的路径,并将其存储到一个列表中。然后,读取位姿文件,并将其转换为一个 3x4 的矩阵。 然后,遍历所有点云文件。对于每帧点…

如何通过简历展示自己的执行力和动力?

导语: 简历是求职过程中的重要工具&#xff0c;通过合适的展示方式能够有效地展示自己的执行力和动力。本文将分享一些技巧&#xff0c;帮助您在简历中突出这两个关键能力。 突出成就和项目经历: 在简历中详细描述您曾经完成的项目或工作&#xff0c;并着重强调其中的具体成果…

ICS TRIPLEX T9402 自动化控制模块

ICS TRIPLEX T9402 是一款自动化控制模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;用于监测、控制和自动化各种工业过程。以下是该产品的一些主要特点&#xff1a; 可靠性&#xff1a; T9402 模块通常具有高可靠性&#xff0c;以确保系统能够稳定运行&#xff0…

开学季哪个牌子的电容笔好?ipad2023手写笔推荐

到底是用苹果原装的电容笔&#xff0c;还是用平替的电容笔&#xff0c;这要根据自己的需要来决定&#xff0c;比如经常用在画画上&#xff0c;可以选择苹果原装笔&#xff1b;如果你一天里用来写东西的时间多于用来画画的时间&#xff0c;那你就该考虑一下&#xff0c;买一支更…

基于GBDT+Tkinter+穷举法按排队时间预测最优路径的智能导航推荐系统——机器学习算法应用(含Python工程源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境Scikit-learnt 模块实现1. 数据预处理1&#xff09;加载数据集2&#xff09;时间划分与保存3&#xff09;处理天气预报数据4&#xff09;增加特征5&#xff09;合并特征值 相关其它博客工程源代码下载…

pytest框架前后置设置,以及pytest默认规则

一、pytest框架的默认规则 1、模块名默认必须以test开头或者以test结尾 2、测试类必须以Test开头&#xff0c;并且不能有__init__方法 3、测试方法默认必须以test开头 当然以后的一些默认规则除测试类不能使用__init__方法外其余的都是可配置的&#xff0c;当然一般情况下我们…

TypeError: The view function did not return a valid response

TypeError: The view function did not return a valid response._白振峰的博客-CSDN博客