欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#类类型

程序员文章站 2023-10-16 19:44:21
一、类和对象 假设我开了一家烤鱼店,每当客人来点餐时,我就会用笔和纸记录这笔订单,并计算出每单的价格。以下是记录的订单: 单号:00001种类:清江鱼口味:香辣配菜:豆腐价格:140元 单号:00002种类:江团口味:蒜香配菜:海带价格:180元 上面所有的内容都需要手写,当客人多的时候很浪费时间, ......

一、类和对象

  假设我开了一家烤鱼店,每当客人来点餐时,我就会用笔和纸记录这笔订单,并计算出每单的价格。以下是记录的订单:

单号:00001
种类:清江鱼
口味:香辣
配菜:豆腐
价格:140元
------------
单号:00002
种类:江团
口味:蒜香
配菜:海带
价格:180元

上面所有的内容都需要手写,当客人多的时候很浪费时间,于是我就去打印店按照以下模板打印点餐单(即纸质订单):

单号:
种类:
口味:
配菜:
价格:

这样每位客人点餐时,我就只需要写下客人点餐的内容即可。

在上面的例子中,我记录的每一笔订单都可以看作一个对象,这每一笔订单都有对应的值使之与其他订单不同,但是所有订单都具有相同的属性和行为,通过抽象出这些属性和行为得到点餐单,所以点餐单可以看作订单的类,反之对点餐单填充不同的值,可以得到不同的订单,也就是不同的对象。通过对上面的理解给类和对象下定义,类是具有相同状态和行为的一类事物,对象是一个客观存在且独一无二的个体。类和对象的关系:类是对对象的抽象,对象是对类的填充或实例化。

 

  类的基本结构:访问修饰符 class 类名{ },其中大括号里可以是类型成员(常量、字段、属性、构造函数、方法、事件等)中的一种或多种构成。

  对象的基本结构是类的实例化:类名 变量名 = new 类名();,其中变量名也叫对象。

  下面我们根据上面的例子设计对应的类,并实现相应的对象。(为使代码简单,访问修饰符均用public)

 1 /// <summary>
 2 /// 拥有单号、种类、口味、配菜、价格和计算价格行为的订单类
 3 /// </summary>
 4 public class order
 5 {
 6     #region 字段
 7     /// <summary>
 8     /// 单号(单号为自增字段,无需赋值,自增代码省略)
 9     /// </summary>
10     public int orderno;
11 
12     /// <summary>
13     /// 种类
14     /// </summary>
15     public string type;
16 
17     /// <summary>
18     /// 口味
19     /// </summary>
20     public string flavor;
21 
22     /// <summary>
23     /// 配菜
24     /// </summary>
25     public string garnish;
26 
27     /// <summary>
28     /// 价格
29     /// </summary>
30     public decimal price;
31     #endregion
32 
33     #region 方法
34     /// <summary>
35     /// 计算价格
36     /// </summary>
37     /// <param name="type">鱼的种类</param>
38     /// <param name="garnish">配菜种类</param>
39     public void calculatetheprice(string type, string garnish)
40     {
41         //通过鱼的种类和配菜种类计算价格,过程省略
42     }
43     #endregion
44 }
45 /// <summary>
46 /// 实现对象的类
47 /// </summary>
48 public class realizeobject
49 {
50     #region 方法
51     /// <summary>
52     /// 实现
53     /// </summary>
54     public realize()
55     {
56         //清江鱼香辣味加豆腐配菜需要140元的订单对象
57         order order = new order();
58         order.type = "清江鱼";
59         order.flavor = "香辣";
60         order.garnish = "豆腐";
61         order.price = 140;//直接赋予价格
62         order.calculatetheprice("清江鱼", "豆腐");//通过行为计算价格
63 
64         //江团酱香味加海带配菜需要180元的订单对象
65         order ordertwo = new order();
66         ordertwo.type = "江团";
67         ordertwo.flavor = "酱香";
68         ordertwo.garnish = "海带";
69         ordertwo.price = 180;//直接赋予价格
70         ordertwo.calculatetheprice("江团", "海带");//通过行为计算价格
71     }
72     #endregion
73 }

  详解类的实例化过程:order order = new order();等号前半部分定义一个类型为order的变量order,这个变量的值为null;当加上等号后半部分时,才给order变量赋值,并且order的构造函数会为order的所有字段赋默认值。用点餐单的例子讲当没有等号后半部分时,我想把一张白纸order用作点餐单,但我还没有去打印,当加上等号后半部分后,order这张白纸被我打印成了点餐单,并且我可能在打印完后立马填充对应的值。