Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Practicing Polymorphism | OOP Principles
C# Beyond Basics

book
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.

cs

index

copy
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 float getArea()
{
return 0.0f;
}

protected 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 float getArea()
{
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
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 float getArea() { return 0.0f; } protected 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 float getArea() { return width * height; } protected 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 float getArea() { return length * length; } protected 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 float getArea() { return 3.14f * radius * radius; } protected 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()); } } }

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 5

Chieda ad AI

expand
ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt