- •Предисловие
- •1 Среда визуального программирования visual studio.Net
- •1.1 Введение в объектно - ориентированное программирование
- •1.2 Понятие о событийном управлении Windows
- •1.3 Основные окна среды Visual Studio.Net
- •1.4 Основные структурные элементы разработки проекта c#
- •1.5 Пример первой учебной программы
- •2.1 Технология визуального проектирования форм
- •1.6 Вопросы для самопроверки
- •2 Элементы управления
- •2.2 Элементы управления панели Toolbox
- •2.3 Пример использования элементов управления
- •2.4 Вопросы для самопроверки
- •3 Графический интерфейс языка c#
- •3.1 Пространство имен System.Drawing
- •3.2 Класс Graphics
- •3.3 Пример программной реализации
- •3.4 Вопросы для самопроверки
- •4 Использование меню в приложении
- •4.1 Меню программы
- •4.2 Создание инструментальной панели приложения
- •4.3.Вопросы для самопроверки
- •5 Использование диалоговых меню
- •5.1 Обработчики событий для работы с матрицей
- •5.2 Обработчик событий для открытия файла
- •5.3 Обработчик событий для записи в файл
- •5.4 Обработчик событий для работы с текстом
- •5.5 Вопросы для самопроверки
- •6 Многооконные приложения
- •6.1 Создание «кнопочной» главной формы
- •6.2 Добавление новых форм приложения
- •6.3 Обработчики событий главной формы
- •6.4 Табличная форма представления и редактирования значений
- •6.5 Графическая форма представления прямоугольников
- •6.6 Вопросы для самопроверки
- •7. Понятие класса
- •7.1 Понятие класса
- •7.2 Состав класса
- •7.3 Методы класса
- •7.4 Структура объекта
- •7.5 Пример учебной программы
- •7.6 Доступ к полям
- •7.7 Вопросы для самопроверки
- •1 Понятие класса?
- •8 Элементы классов
- •8.1 Конструкторы
- •8.2 Деструкторы
- •8.3 Свойства
- •8.4 Параметр по ссылке this
- •8.5 События класса
- •8.6 Перегрузка операций класса
- •8.7 Вопросы для самопроверки
- •9 Принципы ооп
- •9.1 Понятие инкапсуляции
- •9.2 Понятие наследования
- •9.3 Вопросы для самопроверки
- •10 Принцип полиморфизма
- •10.1 Понятие полиморфизма
- •10.2 Пример статического наследования методов
- •10.3 Пример динамического наследования методов
- •10.4 Вопросы для самопроверки
- •11 Использование интерфейсов
- •11.1 Понятие интерфейса
- •11.2 Синтаксис интерфейса
- •11.3 Использование стандартного интерфейса iEnumerable
- •11.4 Вопросы для самопроверки
- •12 Композиция и коллекция классов
- •12.1 Понятие композиции и коллекции класса
- •12.2 Пример использования композиции и коллекции класса
- •12.3 Некоторые коллекции Framework
- •12.4 Коллекция ArrayList
- •12.5 Вопросы для самопроверки
- •13 Делегаты
- •13.1 Понятие делегата
- •13.2 Описание делегата
- •13.3 Пример использования делегата
- •13.4 Совместимость делегатов
- •13.5 Методы базовых классов делегатов
- •13.6 Вопросы для самопроверки
- •14 События
- •14.1 Понятие события
- •14.2 Некоторые часто используемые события среды Visual Studio.Net
- •14.3 Пример использования стандартных событий классов
- •14.4 Нестандартные события классов
- •14.5 Вопросы для самопроверки
- •Приложение а Ответы на вопросы для самопроверки
- •1 Понятие класса?
- •Предметный указатель
- •Список литературы
10.2 Пример статического наследования методов
Разрабатываем цепочку наследуемых классов простейших геометрических фигур с базовыми фигурами точкой и кругом.
В качестве базового возьмем класс, не имеющий полей и содержащий только виртуальную функцию вычисления площади и «чисто виртуальную функцию» печати.
Пример статического наследования – обычное создание объектов, присваивание полям данных (координатам точки или координатам центра круга и радиуса) некоторых случайных значений в диапазоне от 0 до 100 и печать этих значений.
Исходный код программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public int x, y, ra;
public abstract class baseGeo
{
public virtual double ploc() {return 0;}
public abstract string printO();
}
public class tka : baseGeo
{
protected int x, y;
public string ss;
public tka()
{
Random rnd = new Random();
x = rnd.Next(100);
y = rnd.Next(100);
}
public int gettkax() { return x; }
public int gettkay() { return y; }
public void settka(int xx,int yy)
{
x=xx;
y=yy;
}
override public string printO()
{
return "[" + x.ToString() + "," + y.ToString() + "]";
}
}
public class kryg : tka
{
public kryg()
{
Random rnd = new Random(10);
r = rnd.Next(100);
}
public void setkryg(int ax,int ay,int rr)
{
settka(ax,ay);
r=rr;
}
public void getkryg(out int ax, out int ay, out int rr)
{
ax = x;
ay = y;
rr = r;
}
public int getkrygr() { return r; }
override public double ploc() // перекрываем метод
// базового класса
{
return 3.14*r*r;
}
override public string printO() // перекрываем метод
// класса tka
{
string ss = "";
ss = "Круг с центром " + base.printO() + "\r\n";
// наследуется функция печати класса tka
ss = ss + " Радиусом = " + r.ToString() + "\r\n";
return ss;
}
private int r;
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int i;
double pl;
string s;
Random rnd = new Random(20);
x = rnd.Next(100);
y = rnd.Next(100);
//ra = rnd.Next(100);
// пример статического наследования методов
tka a = new tka();
a.settka(x, y);
s = " Точка с координатами : " + a.printO() + "\r\n";
textBox1.AppendText(s);
s = " Площадь объекта = " + a.ploc().ToString() + "\r\n";
textBox1.AppendText(s);
kryg c = new kryg();
x = c.gettkax();
y = c.gettkay();
ra = c.getkrygr();
//c.setkryg(x, y, ra);
textBox1.AppendText(c.printO());
s = " Площадь объекта = " + c.ploc().ToString() + "\r\n";
textBox1.AppendText(s);
Invalidate();
}
private void Form1_Paint_1(object sender, PaintEventArgs e)
{
Pen myPen = new Pen(Color.Red, 2);
Graphics g = e.Graphics;
g.DrawEllipse(myPen, x, y, ra, ra);
}
}
}
Работа программы представлена на рисунке 10.1.
Рисунок 10.1 – Статическое наследование методов
В приведенном примере статического наследования методов присутствует механизм перекрытия методов, но связи между методами фактически определяются во время компиляции программы.
