.NET程序设计实验二

实验二  面向对象程序设计

一、实验目的

1. 理解类的定义、继承等面向对象的的基本概念;

2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;

3. 掌握方法覆盖的应用;

4. 掌握接口的定义和实现方法。

二、实验要求

  根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。

三、实验内容

1. 设计编写一个控制台应用程序,练习类的继承。

(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。

(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并

覆盖Work 方法。

(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。

(4) 在 Student 和 Employer 实例中输出各自不同的信息。

2. 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。

(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分

别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。

(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult

接口。

 

Program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    class Program

    {

        static void Main(string[] args)

        {

 

 

            Console.WriteLine("*******************   实验一开始   *******************");

            Employer em;

            Student stu;

 

            //创建对象

            em = new Employer("石家庄铁道大学", "张三", 35);

            stu = new Student("石家庄铁道大学", "李四", 23);

 

            //输出信息

            em.Work();

            stu.Work();

            Console.WriteLine("*******************   实验一开始   *******************");

            Console.WriteLine();

            Console.WriteLine();

            Console.WriteLine("*******************   实验二开始   *******************");

 

            //创建对象

            Square sq = new Square();

            Circle ci = new Circle();

 

            //初始化

            sq.initialize(4);

            ci.initialize(3);

 

            //正方形计算数据

            sq.getPerimeter();

            sq.getArea();

 

            //圆形计算数据

            ci.getPerimeter();

            ci.getArea();

 

            //打印结果

            sq.display();

            ci.display();

 

            Console.WriteLine("*******************   实验二结束   *******************");

            Console.ReadKey();

        }

    }

}

IDisplayresult.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    //接口 IDisplayresult 显示计算结果。

    interface IDisplayresult

    {

        void display();

    }

}

IShape.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

 

    //(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分

    //别进行初始化、获取边长和面积,其返回值均为 decimal。

    interface IShape

    {

        void initialize(decimal b);

        decimal getPerimeter();

        decimal getArea();

    }

}

People.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    //(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。

    abstract class People

    {

        protected String name;

        protected int age;

        public abstract void Work();

        //public People(String name, int age)

        //{

        //    this.name = name;

        //    this.age = age;

        //}

    }

}

Student.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

 

    //(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并

    //    覆盖Work 方法。

    //(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。

 

    class Student : People

    {

        String school;

 

        public Student(String school, String name, int age)

        {

            this.school = school;

            this.name = name;

            this.age = age;

        }

 

 

        public override void Work()

        {

            Console.WriteLine("我的名字叫" + name + ",我" + age + "岁了,我是" + school + "的一名学生");

            //throw new NotImplementedException();

 

        }

    }

}

Square.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    //正方形

    class Square : IShape, IDisplayresult

    {

 

        decimal b;

        decimal perimeter;

        decimal area;

 

        public void display()

        {

            Console.WriteLine("这个边长为" + b + "正方形的周长为" + perimeter + ",面积为" + area);

            //throw new NotImplementedException();

        }

 

        public decimal getArea()

        {

            this.area = perimeter * perimeter;

            return area;

            //throw new NotImplementedException();

        }

 

        public decimal getPerimeter()

        {

            this.perimeter = b * 4;

            return this.perimeter;

            //throw new NotImplementedException();

        }

 

        public void initialize(decimal b)

        {

            this.b = b;

            this.perimeter = 0;

            this.area = 0;

 

            //throw new NotImplementedException();

        }

    }

}

Circle.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    class Circle : IShape, IDisplayresult

    {

        decimal r;

        decimal perimeter;

        decimal area;

 

        public void display()

        {

 

            Console.WriteLine("这个半径为" + r + "圆形的周长为" + perimeter + ",面积为" + area);

            //throw new NotImplementedException();

        }

 

        public decimal getArea()

        {

            this.area = (decimal)3.14 * r * r;

            return area;

            //throw new NotImplementedException();

        }

 

        public decimal getPerimeter()

        {

            this.perimeter = 2 * r * (decimal)3.14;

            return perimeter;

            //throw new NotImplementedException();

        }

 

        public void initialize(decimal b)

        {

            this.r = b;

            this.perimeter = 0;

            this.area = 0;

            //throw new NotImplementedException();

        }

    }

}

Employer.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace experiment2

{

    //    (2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并

    //        覆盖Work 方法。

    //    (3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。

 

    class Employer : People

    {

        public String work_place;

 

        public Employer(String work_place, String name, int age)

        {

            this.work_place = work_place;

            this.name = name;

            this.age = age;

        }

 

        public override void Work()

        {

            Console.WriteLine("我的名字叫" + name + ",我" + age + "岁了,我是" + work_place + "的一名职工");

            //throw new NotImplementedException();

        }

    }

}

 

 

四、实验总结

注:本部分写本次实验过程中出现的问题、如何解决、注意事项、以及自己的经 验体会。

 

这次实验比上次顺利很多,因为根据上次的经验对c#语法了解很多,主要就剩编程了。

 

 

posted @ 2021-10-23 22:32  我试试这个昵称好使不  阅读(100)  评论(0)    收藏  举报