Используя абстрактный класс, мы можем усовершенствовать рассматривавшийся ранее классTwoDShape.Для неопределенной двухмерной фигуры понятие площади не имеет никакого смысла, поэтому в приведенном ниже варианте классаTwoDShapeметодArea() и сам классTwoDShapeобъявляются какabstract.Это, конечно, означает, что во всех классах, производных от классаTwoDShape,должен быть переопределен методArea ().

// Создать абстрактный класс, using System;

abstract class TwoDShape { double pri_width; double pri_height;

// Конструктор, используемый по умолчанию, public TwoDShape()    {

Width = Height =0.0; name = "null";

}

// Параметризированный конструктор.

public TwoDShape(double w, double h, string n) {

Width = w;

Height = h; name = n;

}

// Сконструировать объект равной ширины и высоты, public TwoDShape(double х, string n) {

Width = Height = x; name = n;

}

// Сконструировать копию объекта TwoDShape. public TwoDShape(TwoDShape ob) {

Width = ob.Width;

Height = ob.Height; name = ob.name;

}

// Свойства ширины и высоты объекта, public double Width {

get {    return pri_width; }

set {    pri_width = value < 0 ? -value : value; }

}

public double Height {

get {    return pri_height; }

set {    pri_height = value < 0 ? -value :    value; }

}

public string name { get; set; } public void ShowDimO {

Console.WriteLine("Ширина и высота равны " +

Width + " и " + Height);

}

// Теперь метод Area() является абстрактным, public abstract double Area();

}

// Класс для треугольников, производный от класса TwoDShape. class Triangle : TwoDShape { string Style;

// Конструктор, используемый по умолчанию, public Triangle()    {

Style = "null";

}

// Конструктор для класса Triangle, public Triangle(string s, double w, double h) : base(w, h, "треугольник") {

Style = s;

I/Сконструировать равнобедренный треугольник, public Triangle(double x) : base(x, "треугольник") { Style = "равнобедренный";

}

// Сконструировать копию объекта типа Triangle, public Triangle(Triangle ob) : base(ob) {

Style = ob.Style;

}

// Переопределить метод Area() для класса Triangle, public override double Area()    {

return Width * Height / 2;

}

// Показать тип треугольника, public void ShowStyle()    {

Console.WriteLine("Треугольник " + Style);

}

}

// Класс для прямоугольников, производный от класса TwoDShape class Rectangle : TwoDShape {

// Конструктор для класса Rectangle, public Rectangle(double w, double h) : base(w, h, "прямоугольник"){    }

// Сконструировать квадрат, public Rectangle(double x) : base (x, "прямоугольник")- { }

Перейти на страницу:

Похожие книги