.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#语法了解很多,主要就剩编程了。
.NET程序设计实验二的更多相关文章
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- C++程序设计--实验二
第二次实验主要内容是函数重载,快速排序及其模板实现,简单的user类实现. 实验结论: 一.函数重载编程练习 /*编写重载函数add(),实现对int型,double型和Complex型数据的加法.在 ...
- #20175201 实验二:Java面向对象程序设计
20175201 实验二:Java面向对象程序设计 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L ...
- 2017-2018-2 20165215 实验二 Java面向对象程序设计
20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- 20165308 实验二 Java面向对象程序设计
20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...
- 20165230 《Java程序设计》实验二(Java面向对象程序设计)实验报告
20165230 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...
- 2016-2017-2 20155227实验二《Java面向对象程序设计》实验报告
2016-2017-2 20155227实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...
- 2017-2018-2 20165330实验二《Java面向对象程序设计》实验报告
实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 三种代码 伪代码:从意图层面来解 ...
- 20145215实验二 Java面向对象程序设计
一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二.实验步骤 (一)单元测试 (1)三种代码 伪代码: ...
随机推荐
- 自己的markdown笔记
markdown一些语法 记录自己会用的一些markdown语法,不定期更新,用的软件是hroopad,hroopad下载地址点击跳转.这个书写软件对新手还有中文用户比较友好,左边是markdown语 ...
- 2022最新IntellJ IDEA的mall开发部署文档
目录 版本说明 一.概述 二.基本构建 三.Git 导入编译器 四.模块描述浅析 五.配置文档 application.yml修改,涉及模块 application-dev.yml修改,涉及模块 ge ...
- vue js计算精度问题处理,兼容XP系统
js计算精度问题(浮点数误差,大数计算出错) JavaScript 运算时经常遇到会 0.000000001 和 0.999999999 这样奇怪的结果. 网上教程一大篇,原理请百度,抄作业往下看!! ...
- HamsterBear 构建可启动的镜像(更新中)
HamsterBear 构建可启动的镜像 Allwinner SoC 上电后会执行BootROM中的程序,会依次从SDIO,SPI等接口查询可引导的设备, SPI设备具有最低引导权,若无法查询到可引导 ...
- test 分支强制替换master 分支的办法
test分支改动太多,并且master 分支好久没有改动.直接合并到master 分支的话,会产生很多冲突,几十个文件,修复冲突会花很多时间,并且是没有意义的.因此只能使用test 分支强制替换. 代 ...
- MySQL 字符集相关
为了支持各个国家的不同语言,MySQL 从4.0 版本开始支持了很多种字符集,且每种字符集支持了 N 多种排序规则.我们可以在建表的时候指定字符集的排序规则,不指定时会有一个默认规则. 字符集和排序规 ...
- 关于二维DP————站上巨人的肩膀
意匠惨淡经营中ing, 语不惊人死不休........ 前几天学了DP,做了个简单的整理,记录了关于DP的一些概念之类的,今天记录一下刚学的一个类型 ----关于二维DP 那建立二维数组主要是干嘛用的 ...
- 使用数据库、Redis、ZK分别实现分布式锁!
分布式锁三种实现方式: 基于数据库实现分布式锁: 基于缓存(Redis等)实现分布式锁: 基于Zookeeper实现分布式锁: 基于数据库实现分布式锁 悲观锁 利用select - where - f ...
- 亚马逊云储存器S3 BCUKET安全性学习笔记
亚马逊云储存器S3 BCUKET安全性学习笔记 Bugs_Bunny CTF – Walk walk CTF 昨天玩了会这个比赛,碰到这题是知识盲点,来记录一下. 先从题目看起吧. http://ww ...
- docker容器登录,退出等操作命令
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口 ...