Тверской государственный университет
Опубликован: 22.11.2005 | Доступ: свободный | Студентов: 30261 / 1762 | Оценка: 4.31 / 3.69 | Длительность: 28:26:00
ISBN: 978-5-9556-0050-5
Лекция 25:

Финальный проект

< Лекция 24 || Лекция 25: 12345

Класс Ellipse

Вот программный код этого класса:

using System;
using System.Drawing;
namespace Shapes
{
	/// <summary>
	/// Класс Ellipse - потомок класса Figure.
	/// </summary>
	public class Ellipse: Figure
	{
		int axisA,axisB;
		Rectangle rect;
		public Ellipse(int A, int B, int x, int y ): base(x,y)
		{
			axisA = A; axisB = B;
			rect =Init();
		}
		public override void Show(Graphics g, Pen pen, Brush brush)
		{			
			rect = Init();
			g.DrawEllipse(pen,rect);
			g.FillEllipse(brush, rect);
		}
		public override Rectangle Region_Capture()
		{
			rect = Init();
			return rect;
		}
		Rectangle Init()
		{
			int a  =Convert.ToInt32(axisA*scale);
			int b =Convert.ToInt32(axisB*scale);
			int leftupX = center.X - a;
			int leftupY = center.Y - b;
			return( new Rectangle(leftupX,leftupY,2*a,2*b));
		}
	}
}

Класс Circle

Этот класс является потомком класса Ellipse:

using System;
using System.Drawing;
namespace Shapes
{
	/// <summary>
	/// Класс Circle - потомок класса Ellipse.
	/// </summary>
	public class Circle: Ellipse
	{
		public Circle( int radius,int x, 
			int y):base(radius,radius,x,y)
		{
		//Круг - это эллипс с равными полуосями (радиусом круга)
		}
	}
}

Здесь опять-таки проявляется мощь наследования. Потомок наследует все свойства и методы родителя. Ему остается только указать собственный конструктор объектов класса, да и в нем главное состоит в вызове конструктора родительского класса с передачей ему нужных аргументов.

Класс LittleCircle

Этот класс, задающие маленькие кружочки фиксированного радиуса, в свою очередь, является наследником класса Circle. Устроен он также чрезвычайно просто:

using System;
namespace Shapes
{
	/// <summary>
	/// Класс LittleCircle - потомок класса Circle.
	/// </summary>
	public class LittleCircle:Circle
	{
		public LittleCircle(int x,int y): base(4,x,y)
		{
			// маленький круг радиуса 4
		}
	}
}

Класс Rect

Этот класс является еще одним прямым потомком класса Figure:

using System;
using System.Drawing;
namespace Shapes
{
	/// <summary>
	/// Класс Rect - потомок класса Figure.
	/// </summary>
	public class Rect:Figure
	{
		int sideA, sideB;
		Rectangle rect;
		public Rect(int sideA,int sideB, int x, int y): base(x,y)
		{
			this.sideA = sideA; this.sideB = sideB;
			rect =Init();
		}
		public override void Show(Graphics g, Pen pen, Brush brush)
		{			
			rect = Init();
			g.DrawRectangle(pen,rect);
			g.FillRectangle(brush,rect);
		}
		public override Rectangle Region_Capture()
		{
			rect = Init();
			return rect;
		}
		Rectangle Init()
		{
			int a  =Convert.ToInt32(sideA*scale);
			int b =Convert.ToInt32(sideB*scale);
			int leftupX = center.X - a/2;
			int leftupY = center.Y - b/2;
			return( new Rectangle(leftupX,leftupY,a,b));
		}
	}
}

Класс Square

Квадрат - это частный случай прямоугольника. Соответствующий класс является потомком класса Rect:

using System;
namespace Shapes
{
	/// <summary>
	/// Класс Square - потомок класса Rect.
	/// </summary>
	public class Square:Rect
	{
		public Square(int side, int x, int y): base(side,side,x,y)
		{
			//квадрат - это прямоугольник с равными сторонами
		}
	}
}
< Лекция 24 || Лекция 25: 12345
Александр Галабудник
Александр Галабудник

Не обнаружил проекты, которые используются в примерах в лекции, также не увидел список задач.

Александра Гусева
Александра Гусева