11月12每日打卡

实验二  面向对象程序设计

一、实验目的 

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

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

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

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

二、实验要求 

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

三、实验内容 

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

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

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

覆盖Work 方法。

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

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

 

源码:

using System;

 

abstract class People

{

    private string name;

    public string Name

    {

        get { return name; }

        set { name = value; }

    }

    public int Age { get; set; }

 

    public abstract void Work();

}

创建学生类 Student 和职工类 Employer

class Student : People

{

    public string School { get; set; }

 

    public override void Work()

    {

        Console.WriteLine("我是学生,我的工作是学习。");

    }

}

 

class Employer : People

{

    public string Company { get; set; }

 

    public override void Work()

    {

        Console.WriteLine("我是职工,我的工作是……(填写具体工作内容)。");

    }

}

创建实例并输出各自不同的信息

class Program

{

    static void Main(string[] args)

    {

        Student student = new Student { Name = "小明", Age = 18, School = "ABC 学校" };

        Employer employer = new Employer { Name = "张三", Age = 30, Company = "XYZ 公司" };

 

        Console.WriteLine("学生信息:");

        Console.WriteLine("姓名:" + student.Name);

        Console.WriteLine("年龄:" + student.Age);

        Console.WriteLine("学校:" + student.School);

        student.Work();

 

        Console.WriteLine("\n职工信息:");

        Console.WriteLine("姓名:" + employer.Name);

        Console.WriteLine("年龄:" + employer.Age);

        Console.WriteLine("工作单位:" + employer.Company);

        employer.Work();

    }

}

 

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

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

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

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

接口。 

 

源码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Lab06_2

{

    public interface Ishape

    {

        void initialize();

        decimal getPerimeter();

        decimal getArea();

    }

    public interface IDisplayresult

    {

        void showResult();

 

    }

    public class Square : Ishape, IDisplayresult

    {

        decimal l;

        public void initialize()

        {

            Console.WriteLine("请输入正方形边长:");

            do

            {

                l = decimal.Parse(Console.ReadLine());

                if (l <= 0)

                {

                    Console.WriteLine("输入数据错误,请重新输入:");

                }

            } while (l <= 0);

        }

        public decimal getPerimeter()

        {

            return 4 * l;

        }

        public decimal getArea()

        {

            return l * l;

        }

        public void showResult()

        {

            Console.WriteLine("该正方体的周长:{0}", getPerimeter());

            Console.WriteLine("该正方体的面积:{0}", getArea());

        }

    }

    public class Circle : Ishape, IDisplayresult

    {

        static decimal pi = 3.14M;

        decimal r;

        public void initialize()

        {

            Console.WriteLine("请输入圆形的半径:");

            do

            {

                r = decimal.Parse(Console.ReadLine());

                if (r <= 0)

                {

                    Console.WriteLine("输入数据错误,请重新输入:");

                }

            } while (r <= 0);

        }

        public decimal getPerimeter()

        {

            return 2 * r * pi;

        }

        public decimal getArea()

        {

            return pi * r * r;

        }

        public void showResult()

        {

            Console.WriteLine("该圆形的周长:{0}", getPerimeter());

            Console.WriteLine("该圆形的面积:{0}", getArea());

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            int i;

            Square sq = new Square();

            Circle cr = new Circle();

            do

            {

                Console.WriteLine("请选择 1:正方形  2:圆形  3:退出");

                i = int.Parse(Console.ReadLine());

                switch (i)

                {

                    case 1: sq.initialize(); sq.showResult(); break;

                    case 2: cr.initialize(); cr.showResult(); break;

                    case 3: Console.WriteLine("感谢您的使用!!!"); break;

                    default: Console.WriteLine("输入数据错误,请重新输入:"); break;

                }

                Console.Write("\n请按任意键继续...");

                Console.ReadKey();

                Console.Clear();

            } while (i != 3);

 

        }

    }

}

四、实验总结 

通过完成这个实验,你应该对类的定义、继承、成员的使用(字段、属性、方法)、方法覆盖和接口的实现有了更深入的了解。这些概念和技术是面向对象编程中非常重要的组成部分,对于构建灵活、可扩展和可维护的应用程序至关重要。继续进行练习和实践,不断加强对这些概念和技巧的理解和应用。

 

posted @ 2023-11-12 16:44  云边上打盹  阅读(23)  评论(0)    收藏  举报