如果汉语背后没有文化,文化背后没有思想,思想背后没有精神,光TMD编造老娘和乔布斯没有说过的话,那中国永远不会是一个伟大的国家。——撒切尔夫人

刘一辰的软件工程随笔

实验二  面向对象程序设计

一、实验目的

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

接口。

 

using System;

 

namespace ConsoleApp1

{

    public abstract class People

    {

        public string name;

        public string age;

        public People(string a, string b)

        {

            name = a;

            age = b;

        }

        public abstract void work();

       

    }

    public class Student :People

    {

        string school;

        public Student(string a,string b,string c):base(a,b)

        {

            this.school = c;

        }

        public override void work()

        {

            Console.WriteLine("我是学生");

            Console.WriteLine("wo"+name+age+"sui"+"我在学习");

        }

    }

    public class Employer : People

    {

        string danwei;

        public Employer(string a, string b, string c) : base(a, b)

        {

            this.danwei = c;

        }

        public override void work()

        {

            Console.WriteLine("我是职工");

            Console.WriteLine("wo" + name + age + "sui"+"我在工作");

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("开始");

            People p = new Student("hu","18","一中");

            People p2 = new Employer("sheng","55","二中");

            Console.WriteLine("》》》》》》》》》》》");

            p.work();

            p2.work();

            Console.WriteLine("结束");

 

 

        }

    }

}

 

 

 

using System;

 

namespace ConsoleApp2

{

    interface IShape

    {

        void initialize(decimal b);

        decimal getPerimeter();

        decimal getArea();

    }

    interface IDisplayresult

    {

        void show()

        {

 

        }

    }

    class Square: IShape, IDisplayresult

    {

        decimal a;

        public void initialize(decimal b)

        {

            a = b;

        }

        public decimal getPerimeter()

        {

            return a;

        }

        public decimal getArea()

        {

            return a * 4;

        }

        public void show()

        {

            Console.WriteLine("边长" + a + " 面积" + getArea());

        }

    }

    class Circle : IShape, IDisplayresult

    {

        decimal a;

        public void initialize(decimal b)

        {

            a = b;

        }

        public decimal getPerimeter()

        {

            return a;

        }

        public decimal getArea()

        {

            return 3*a*a;

        }

        public void show()

        {

            Console.WriteLine("边长" + a + " 面积" + getArea());

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Square shape1 = new Square();

            Circle shape2 = new Circle();

            Console.WriteLine("输入第一个:");

            decimal key1=int.Parse( Console.ReadLine());

            shape1.initialize(key1);

            Console.WriteLine("输入第二个:");

            decimal key2 = int.Parse(Console.ReadLine());

            shape2.initialize(key2);

            shape1.show();

            shape2.show();

        }

    }

}

 

四、实验总结

          抽象类和接口容易搞混  调用函数时会遇到权限问题

 

 

posted @   崤函隳  阅读(44)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示