C# 一个简单的面向对象例子

比如说

先设计一个关于时间的类(Time类)。该类的成员如下:

代码:

//Time类的定义代码
        class Time
        {
            //下面为私有成员
            private int hour;
            private int minute;
            private int second;

            private void SetTime(int h,int m, int s)
            {
                Hour = h;
                Minute = m;
                Second = s;
            }


            //下面为公有成员
            //构造函数:无参数
            public Time()
            {
                SetTime(0, 0, 0);
            }

            //构造函数:1个参数
            public Time(int hourValue)
            {
                SetTime(hourValue, 0, 0);
            }

            //构造函数:3个参数
            public Time(int hourValue,int minuteValue,int secondValue)
            {
                SetTime(hourValue, minuteValue, secondValue);
            }


            //属性:Hour
            public int Hour
            {
                get { return hour; }

                //如果value的值合法,就把value的值赋给hour,否则把0赋给hour
                set { hour = ((value >= 0 && value < 24) ? value : 0); }
            }

            //属性:Minute
            public int Minute
            {
                get { return minute; }
                set { minute = ((value >= 0 && value < 60) ? value : 0); }
            }

            //属性:Second
            public int Second
            {
                get { return second; }
                set { second = ((value >= 0 && value < 60) ? value : 0); }
            }

            //函数:返回24小时制时间
            public string ToString24()
            {
                string output = Hour + ":" + Minute + ":" + Second;
                return output;
            }

            //函数:返回12小时制时间
            public string ToString12()
            {
                int hourTemp = ((Hour == 12) || (Hour == 0))? 12 : (Hour % 12);
                string AMPM = (Hour <12?"AM":"PM");
                string output = hourTemp + ":" + Minute + ":" + Second + AMPM;
                return output;
            }
        }

在上面的例子中,我们用属性实现对私有变量的访问,其好处如下:

1.可以对赋值进行合法性检查。

2.增强封装性,当数据的储存形式发生变化时,只需改动属性中的代码,其他代码不受影响。

 

主程序调用Time类,代码如下:

static void Main(string[] args)
        {
            Time time1 = new Time();

            Console.WriteLine("time1:");
            Console.WriteLine("24小时制时间:" + time1.ToString24()) ;
            Console.WriteLine("12小时制时间:" + time1.ToString12()+"\n");

            Time time2 = new Time(22);
            Console.WriteLine("time2:");
            Console.WriteLine("24小时制时间:" + time2.ToString24());
            Console.WriteLine("12小时制时间:" + time2.ToString12() + "\n");

            Time time3 = new Time(22,36,30);
            Console.WriteLine("time2:");
            Console.WriteLine("24小时制时间:" + time3.ToString24());
            Console.WriteLine("12小时制时间:" + time3.ToString12() + "\n");

        }

运行结果:

 

 

类的成员不光可以是int,double等基本类型的变量,也可以是其他类的对象。

我们在前面的那个例子的基础上继续追加,追加后完整的内容如下:

class Time
        {
            //下面为私有成员
            private int hour;
            private int minute;
            private int second;

            private void SetTime(int h, int m, int s)
            {
                Hour = h;
                Minute = m;
                Second = s;
            }


            //下面为公有成员
            //构造函数:无参数
            public Time()
            {
                SetTime(0, 0, 0);
            }

            //构造函数:1个参数
            public Time(int hourValue)
            {
                SetTime(hourValue, 0, 0);
            }

            //构造函数:3个参数
            public Time(int hourValue, int minuteValue, int secondValue)
            {
                SetTime(hourValue, minuteValue, secondValue);
            }


            //属性:Hour
            public int Hour
            {
                get { return hour; }

                //如果value的值合法,就把value的值赋给hour,否则把0赋给hour
                set { hour = ((value >= 0 && value < 24) ? value : 0); }
            }

            //属性:Minute
            public int Minute
            {
                get { return minute; }
                set { minute = ((value >= 0 && value < 60) ? value : 0); }
            }

            //属性:Second
            public int Second
            {
                get { return second; }
                set { second = ((value >= 0 && value < 60) ? value : 0); }
            }

            //函数:返回24小时制时间
            public string ToString24()
            {
                string output = Hour + ":" + Minute + ":" + Second;
                return output;
            }

            //函数:返回12小时制时间
            public string ToString12()
            {
                int hourTemp = ((Hour == 12) || (Hour == 0)) ? 12 : (Hour % 12);
                string AMPM = (Hour < 12 ? "AM" : "PM");
                string output = hourTemp + ":" + Minute + ":" + Second + AMPM;
                return output;
            }
        }


        //为了简介,我们把所有成员都定义为公有
        class Date
        {
            public int year;
            public int month;
            public int day;
            public Time clock;

            //构造函数
            public Date(int yearValue, int monthValue, int dayValue, Time timeValue)
            {
                year = yearValue;
                month = monthValue;
                day = dayValue;
                clock = timeValue;
            } 
        }

主程序修改为:

static void Main(string[] args)
        {
            //我出生了!
            Date birthday = new Date(1981, 12, 2, new Time(16, 30, 0));
            Console.Write("我出生于{0}年{1}月{2}日{3}。", birthday.year, birthday.month, birthday.day, birthday.clock.ToString24());
        }

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值