C#实例 项目二 计算图形面积
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教案
height = h;
}
public double area()
{
return width * height; }
}
4.Triangle类继承Shape类数据成员以及area()方法,并改写方法内容。
class Triangle : Shape// 三角形
{
public Triangle(double x, double y)
{
width = x;
height = y;
}
public double area()
{
return width * height / 2;
}
}
注:派生类方法与基类方法同名,编译时会有警告信息
改进代码如下:
class Triangle : Shape// 三角形
{
public Triangle(double x, double y):base(x,y)
{
}
new public double area()
{
return width * height / 2;
}
}
5. Trapezia类的内容与Triangle类相似,但计算面积的area()方法公式不同,相关代码如下:
class Trapezia : Shape// 梯形
{
double width2;
public Trapezia(double w1, double w2, double h): base(w1, h) {
width2 = w2;
}
new public double area() // 加new隐藏基类的area方法巡回指导
师生互动
学习环节包括“实验与思考”、“观察与思考”、“交流与分享”
return (width + width2) * height / 2; }
}
6.在Main()方法中赋值,相关代码如下:
static void Main(string[] args)
{
Shape A = new Shape(2,4); //长方形
Console.WriteLine("A.area={0}", A.area());
Triangle B = new Triangle(3,4); //三角形
Console.WriteLine("B.area={0}", B.area());
Trapezia C = new Trapezia(3, 4, 5); //梯形
Console.WriteLine("C.area={0}", C.area());
A = B; //A指向了B的引用
Console.WriteLine("A.area={0}", A.area());
A = C; //A指向了C的引用
Console.WriteLine("A.area={0}", A.area());
}
运行结果。
任务二类的多态
【任务描述】
采用另一种更为灵活和有效的手段,理解类的多态性,灵活运用virtual和override关键字。
【任务实施】
1. Shape类成员同任务一,将area()方法用virtual关键字声明为虚方法,相关代码如下:
class Shape
{
protected double width;
protected double height;
public Shape()
{
width = height = 0;
}
public Shape(double x)
{
width = height = x;
}
public Shape(double w, double h) 教师及时引导与评价
学习环节分为“合作与探索”、“交流与分享”、“实践与体验”
教师讲解
教师巡回指导
A = C; //A指向了C的引用
Console.WriteLine("A.area={0}", A.area());
}
运行结果
【项目小结】
学习者从设计基类Shape类,到派生类的功能扩展。
通过本项目,学生体会了类的继承和多态性的不同,掌握了隐藏基类方法,在派生类中重写方法等的使用,为后续章节更好的学习打下基础。
【思考与练习】
请学生参照上例,定义基类Shape类,以及衍生功能的派生类矩形、正方形、三角形、圆,并分别求其面积和周长。
教师巡回指导
学习环节分为“合作与探
索”、“成功的体验”、“思考与提高”。