C#工控上位机开发---2.面向对象编程

学习目标:

1、对象与类的概念

2、类的组成

3、字段、属性、方法

4、属性扩展


学习内容:

1.1 对象与类的概念:

类就是以对象共有的属性,方法来定义的一个整体,也就是一类,比如一张个人信息表,里面包含了一个人的姓名,性别等一系列社会角色,这个就是人的一个类,而当这张表被不同的人将信息填充之后,这时候填完的表就是利用这个相同的类,创建了不同的对象。

2.1类的组成

修饰符+class+类名  

{

//字段

//属性

//方法

}

一个类中可以只有属性,只有方法,但是只有字段很少用,字段就是一个成员变量,是在类的内部使用的。

3.1字段概念:字段,又叫成员变量,是在类的内部进行使用的,一般用private修饰,不会用public来修饰字段。

3.2属性:对外提供数据接口,和字段的区别,强调对外使用,使用public 修饰,很少使用private来修饰。

3.3方法:方法是执行相关的业务逻辑,属于动态行为。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Fish.ClassAndObject
{/// <summary>
/// 这个是一个类的组成
/// </summary>
  public class Equipment
    {
        //【字段】强调在类的内部使用
        private int name;

        //【属性】对外提供数据的接口
        public int EquipmentId { get; set; }//设备Id

        public string EquipmentName { get; set; }//设备名称

        public double  Pressure { get; set; }//采集的压力

        //【方法】//动态行为,执行相关业务逻辑
        public void ShouInfo()
        {
            Console.WriteLine($"设备ID:{EquipmentId }  设备名称:{EquipmentName }" +
                $"压力值:{Pressure }");
        }
    }
}

4.1属性本质

下面代码解剖中属性   EquipmentId
属性public int EquipId { get; set; }
各自对应一个get和set方法,同时增加了一个隐藏字段。

隐藏字段干什么?其实当调用set方法的时候,是把外面的数据给了对应的隐藏字段来保存。
当调用get方法的时候,其实是从隐藏字段中把数据读取出来。

4.2属性拓展问题

属性中的get();set();方法是可以去掉任意一个的,去掉就是只写或者只读属性,在只读属性中,是没有私有字段的,虽然没有了私有字段,但是使用方法是无法代替属性的,属性表示的是一个静态特征,而方法是动态的行为,所以无法使用方法代替只读属性,同样,字段也是无法替代属性的,属性是对外提供数据的接口,强调对外使用,而字段则是成员变量,强调在类的内部使用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Fish.ClassAndObject
{
   public  class Equipment2
    {
        private int equipmentId;//get和set方法的私有字段
        public int EquipmentId 
        {
            get { return equipmentId; }
            set { 
                if(value  <100)
                {
                    equipmentId = 100;
                }
                else
                {
                    equipmentId = value;
                }
            }
        }//设备Id
//***************************************************************************************
        public string EquipmentName { get; } = "压力传感器";//设备名称--》只读属性

        public double Pressure 
        {
            get 
            {
                double result = 3.5;
                return result;
            }
        }//采集的压力
//**************************************************************************************
        public void ShouInfo()
        {
            Console.WriteLine($"设备ID:{EquipmentId }  设备名称:{EquipmentName }" +
                $"压力值:{Pressure }");
        }
    }
}

 4.3在Winfrom控件中,字段是无法解析的。也就是无法绑定对应的数据。

三个设备属性,当其中一项改为字段时,数据绑定失败,这个属性则不会显示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FromEquipment
{
  public class Equipment
    {
        public int EquipmentId { get; set; }//设备Id


***********************************************************
        //【属性没有改变为字段时运行程序】

        public string EquipmentName{ get; set; }//设备名称
*************************************************************



        public double  Pressure { get; set; }//采集的压力

        public void ShouInfo()
        {
            Console.WriteLine($"设备ID:{EquipmentId }  设备名称:{EquipmentName }" +
                $"压力值:{Pressure }");
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FromEquipment
{
  public class Equipment
    {
        public int EquipmentId { get; set; }//设备Id
***************************************************************
*                                                             *
*        //【将属性改为字段时运行程序】                         *
*
*       public string EquipmentName;//{ get; set; }//设备名称  *
***************************************************************
        public double  Pressure { get; set; }//采集的压力

        public void ShouInfo()
        {
            Console.WriteLine($"设备ID:{EquipmentId }  设备名称:{EquipmentName }" +
                $"压力值:{Pressure }");
        }
    }


 

 

学习时间:

每周一、周三晚上


学习产出:

  • 技术笔记 1 遍
  • 优快云 技术博客 1 篇
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魚先森871

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值