Я бы посоветовал немного больше подумать над дизайном вашей иерархии классов.Вдобавок ко всему, я хотел бы предложить вам поместить все свойства, которые вы определили для ваших производных форм, в родительский объект.Кроме того, вы можете рассмотреть возможность создания некоторых из них методов, которые возвращают значения.
Хотя это не является частью вашего текущего примера, любая фигура, включая круг, имеет конечное число точек (круг просто имеет ноль).Универсальное свойство shape_family может представлять классификацию строк для конкретного производного класса формы («Треугольник», «Звезда» и т. Д.).
Тип shape_sub может представлять определенные варианты («Прямоугольный треугольник», «Изоцелеобразный треугольник» и т. Д.).Затем, если вы определите точки как, ну, ТОЧКИ и добавите их в список, у вас будет не только определенное местоположение для них (если это не выходит за рамки вашей программы), но у вас также будет счет.Оттуда вы, вероятно, сможете разработать дополнительную логику для отображения сторон / вертикалей и вычислить такие вещи, как площадь, периметр и т. Д.vb.net, поэтому, если я раскрою код здесь, постараюсь сосредоточиться на структуре класса, а НЕ на моем синтаксисе ...):
Редактировать: 22.04.2011 7:41 - Упс.Забыл сделать Класс абстрактным.Если методы класса определены как «абстрактные», то и сам класс также должен быть абстрактным, то есть нельзя напрямую создавать экземпляр абстрактной базы.Вот ссылка на дополнительную информацию об абстрактных классах и методах /
public abstract class Shape
{
int Area;
string shape_family;
string shape_subtype;
list<point> Points
public int number_of_points()
{
return points.count
}
public abstract int perimeter_lenngth()
public abstract int area()
}
class Triangle : Shape {
//Example of Triangle-specific implementation:
public override int perimiter_length {
//You code to obtain and compute the lengths of the sides
}
//Example of Triangle-specific implementation:
public override int area {
//Your code to obtain and compute
}
}
class Star : Shape{
//Example of Star-specific implementation:
public override int perimiter_length {
//Your code to obtain and compute the lengths of the sides
}
//Example of Star-specific implementation:
public override int area {
//Your code to obtain and compute
}
}
class Circle : Shape {
point center;
int radius
// Example of Circle-specific implementation:
public override int perimiter_length {
return 2*3.14*radius
}
// Example of Circle-specific implementation:
public override int area {
return 3.14*radius^2
}
}