Абстрактные классы

Последнее обновление: 04.03.2024

C++

C#

Dart

F#

Kotlin

Python

C++

#include <iostream>
  
class Shape
{
public:
	virtual double getArea() const = 0;     // площадь фигуры
	virtual double getPerimeter() const = 0;  // периметр фигуры
};
class Rectangle : public Shape  // класс прямоугольника
{
public:
    Rectangle(double w, double h) : width(w), height(h)
    { }
    double getArea() const override
    {
        return width * height;
    }
    double getPerimeter() const override
    {
        return 2 * (width + height);
    }
private:
    double width;   // ширина
    double height;  // высота
};
class Circle : public Shape     // круг
{
public:
    Circle(double r) : radius(r) 
    { }
    double getArea() const override
    {
        return radius * radius * 3.14;
    }
    double getPerimeter() const override
    {
        return 2 * 3.14 * radius;
    }
private:
    double radius;  // радиус круга
};
 
int main()
{
    Rectangle rect{30, 50};
    Circle circle{30};
     
    std::cout << "Rectangle area: " << rect.getArea() << std::endl;
    std::cout << "Rectangle perimeter: " << rect.getPerimeter() << std::endl;
    std::cout << "Circle area: " << circle.getArea() << std::endl;
    std::cout << "Circle perimeter: " << circle.getPerimeter() << std::endl;
}

C#

Rectangle rect = new(30, 50);
Circle circle = new(30);
Console.WriteLine($"Rectangle area: {rect.GetArea()}");
Console.WriteLine($"Rectangle perimeter: {rect.GetPerimeter()}");
Console.WriteLine($"Circle area: {circle.GetArea()}");
Console.WriteLine($"Circle perimeter: {circle.GetPerimeter()}");

abstract class Shape
{
    public abstract double GetArea();     // площадь фигуры
	public abstract double GetPerimeter();  // периметр фигуры
}
class Rectangle : Shape  // класс прямоугольника
{
    double width;   // ширина
    double height;  // высота
    public Rectangle(double w, double h)
    {
        this.width = w;
        this.height = h;
    }
    public override double GetArea()
    {
        return width * height;
    }
    public override double GetPerimeter()
    {
        return 2 * (width + height);
    }
}
class Circle : Shape     // круг
{
    double radius;  // радиус круга
    public Circle(double r) => this.radius = r;
    public override double GetArea()
    {
        return radius * radius * 3.14;
    }
    public override double GetPerimeter()
    {
        return 2 * 3.14 * radius;
    }
}

Dart

abstract class Shape { 
    double getArea();          // площадь фигуры
	double getPerimeter();     // периметр фигуры
}
class Rectangle extends Shape{  // класс прямоугольника
     
	double width;
	double height;
    Rectangle(this.width, this.height);
     
    @override
    double getArea() => width * height;
    @override
    double getPerimeter() => 2 * (width + height);
}

class Circle extends Shape     // круг
{
    double radius;  // радиус круга
    Circle(this.radius);

    @override
    double getArea() => radius * radius * 3.14;
    @override
    double getPerimeter() =>  2 * 3.14 * radius;
}
void main (){
     
    Rectangle rect = Rectangle(30, 50);
    Circle circle = Circle(30);
    print("Rectangle area: ${rect.getArea()}");
    print("Rectangle perimeter: ${rect.getPerimeter()}");
    print("Circle area: ${circle.getArea()}");
    print("Circle perimeter: ${circle.getPerimeter()}");
}

F#

[<AbstractClass>]
type Shape() =
    abstract GetArea: unit->double        // площадь фигуры
    abstract GetPerimeter: unit->double  // периметр фигуры

// класс прямоугольника 
type Rectangle(width:double, height:double) = 
    inherit Shape()
    override this.GetArea() = width * height
    override this.GetPerimeter() = 2.0 * (width + height)
 
// круг
type Circle(radius:double) = 
    inherit Shape()
    override this.GetArea() = radius * radius * 3.14
    override this.GetPerimeter() = radius * 2.0 * 3.14

let rect = Rectangle(30, 50)
let circle = Circle(30)
printfn "Rectangle area: %f" (rect.GetArea())
printfn "Rectangle perimeter: %f" (rect.GetPerimeter())
printfn "Circle area: %f" (circle.GetArea())
printfn "Circle perimeter: %f" (circle.GetPerimeter())

Kotlin

fun main() {

    val rect = Rectangle(30.0, 50.0)
    val circle = Circle(30.0)
    println("Rectangle area: ${rect.getArea()}")
    println("Rectangle perimeter: ${rect.getPerimeter()}")
    println("Circle area: ${circle.getArea()}")
    println("Circle perimeter: ${circle.getPerimeter()}")
}
abstract class Shape {
    abstract fun getArea(): Double          // площадь фигуры
    abstract fun getPerimeter(): Double     // периметр фигуры
}
// класс прямоугольника
class Rectangle(val width: Double, val height: Double) : Shape() {  
    override fun getArea() = width * height
    override fun getPerimeter() = 2 * (width + height)
}
// круг
class Circle(val radius: Double): Shape() {     

    override fun getArea() = radius * radius * 3.14;
    override fun getPerimeter() =  2 * 3.14 * radius;
}

Python

from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod 
    def area (self): pass       # площадь фигуры
    @abstractmethod 
    def perimeter(self): pass   # периметр фигуры

# класс прямоугольника 
class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height
        
    def area (self): return self.width * self.height
    def perimeter(self): return 2.0 * (self.width + self.height)
 
# круг
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius
    def area (self): return self.radius * self.radius * 3.14
    def perimeter(self): return self.radius * 2.0 * 3.14

rect = Rectangle(30, 50)
circle = Circle(30)
print("Rectangle area:", rect.area())
print("Rectangle perimeter:", rect.perimeter())
print("Circle area:", circle.area())
print("Circle perimeter:", circle.perimeter())
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850