Зміст курсу
C# Beyond Basics
C# Beyond Basics
Practicing Polymorphism
The program given below contains a superclass called Shape
and three derived classes called Rectangle
, Square
and Circle
. The problem with the code is that the methods are not properly overridden since the output shows 0.0
for all the three Console.WriteLine
statements which implies that the methods of the base class are being executed instead of the derived class' methods.
Edit the code in such a way that the two methods, namely getArea
and calculatePerimeter
are correctly overridden.
index.cs
virtual
keyword to make the methods overridable.2. In every derived class, add the
override
keyword in the method definitions.
using System;
using System.Collections.Generic;
class Shape
{
// Perimeter is the length of the 'outline' of a shape
public float perimeter;
// Change code below this line
public virtual float getArea()
{
return 0.0f;
}
protected virtual float calculatePerimeter()
{
return 0.0f;
}
// Change code above this line
}
class Rectangle : Shape
{
float width;
float height;
public Rectangle(float width, float height)
{
this.width = width;
this.height = height;
this.perimeter = this.calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return width * height;
}
protected override float calculatePerimeter()
{
return width * 2 + height * 2;
}
// Change code above this line
}
class Square : Shape
{
float length;
public Square(float length)
{
this.length = length * length;
this.perimeter = calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return length * length;
}
protected override float calculatePerimeter()
{
return 4 * length;
}
// Change code above this line
}
class Circle : Shape
{
float radius;
public Circle(float radius)
{
this.radius = radius;
this.perimeter = calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return 3.14f * radius * radius;
}
protected override float calculatePerimeter()
{
return 2.00f * 3.14f * radius;
}
// Change code above this line
}
class ConsoleApp
{
static void Main()
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Rectangle(10f, 20f));
shapes.Add(new Square(10f));
shapes.Add(new Circle(10f));
foreach (Shape shape in shapes)
{
Console.WriteLine(shape.getArea());
}
}
}
Все було зрозуміло?
Зміст курсу
C# Beyond Basics
C# Beyond Basics
Practicing Polymorphism
The program given below contains a superclass called Shape
and three derived classes called Rectangle
, Square
and Circle
. The problem with the code is that the methods are not properly overridden since the output shows 0.0
for all the three Console.WriteLine
statements which implies that the methods of the base class are being executed instead of the derived class' methods.
Edit the code in such a way that the two methods, namely getArea
and calculatePerimeter
are correctly overridden.
index.cs
virtual
keyword to make the methods overridable.2. In every derived class, add the
override
keyword in the method definitions.
using System;
using System.Collections.Generic;
class Shape
{
// Perimeter is the length of the 'outline' of a shape
public float perimeter;
// Change code below this line
public virtual float getArea()
{
return 0.0f;
}
protected virtual float calculatePerimeter()
{
return 0.0f;
}
// Change code above this line
}
class Rectangle : Shape
{
float width;
float height;
public Rectangle(float width, float height)
{
this.width = width;
this.height = height;
this.perimeter = this.calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return width * height;
}
protected override float calculatePerimeter()
{
return width * 2 + height * 2;
}
// Change code above this line
}
class Square : Shape
{
float length;
public Square(float length)
{
this.length = length * length;
this.perimeter = calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return length * length;
}
protected override float calculatePerimeter()
{
return 4 * length;
}
// Change code above this line
}
class Circle : Shape
{
float radius;
public Circle(float radius)
{
this.radius = radius;
this.perimeter = calculatePerimeter();
}
// Change code below this line
public override float getArea()
{
return 3.14f * radius * radius;
}
protected override float calculatePerimeter()
{
return 2.00f * 3.14f * radius;
}
// Change code above this line
}
class ConsoleApp
{
static void Main()
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Rectangle(10f, 20f));
shapes.Add(new Square(10f));
shapes.Add(new Circle(10f));
foreach (Shape shape in shapes)
{
Console.WriteLine(shape.getArea());
}
}
}
Все було зрозуміло?