Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 2
Гостей: 2
Пользователей: 0
Реклама
Главная » Статьи » C# |
Урок 19
using System; namespace test { abstract class Figure { //Площадь фигуры public abstract double square(); public abstract double perimeter(); } class Triangle: Figure { double a, b, c; //Стороны //Конструктор public Triangle(double a, double b, double c) { this.a=a; this.b=b; this.c=c; } public override double square() { //Используем формулу Герона double p = (a+b+c)/2; return Math.Sqrt(p*(p-a)*(p-b)*(p-c)); } public override double perimeter() { return a+b+c; } } class Rectangle: Figure { double a, b; //Стороны //Конструктор public Rectangle(double a, double b) { this.a=a; this.b=b; } public override double square() { return a*b; } public override double perimeter() { return (a+b)*2; } } class Test { public static void Main() { Figure f1, f2; f1=new Triangle(3, 4, 5); f2=new Rectangle(2, 6); System.Console.WriteLine(f1.perimeter()+", "+ f1.square()); System.Console.WriteLine(f2.perimeter()+", "+ f2.square()); } } } Тут мы объявляем абстрактный класс Figure, от которого производим два класса - Rectangle (класс прямоугольника) и Triangle (треугольника). В классе Figure есть два абстрактных метода - square (для подсчета площади) и perimeter (для периметра). Так как для призвольной фигуры формул для площади и для периметра не существует, то эти методы объявлены в классе Figure и переопределены в производных классах (с ключевым словом override). Далее в классе Test мы проводим испытание - заводим две переменные типа ссылка на базовый класс Figure, ниже в эти ссылки мы записываем созданные экземпляры производных классов Triangle и Rectangle. Обратите внимание, что ссылку на абстрактный класс мы создать можем, а экземпляр - нет. Далее мы выводим на экран периметр и площадь для наших фигур. | |
Просмотров: 836 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |