Пример учебной программы




 

Рассмотреть чисто учебный пример по созданию класса треугольник (на основе примера из первой лекции).

На этапе визуального программирования мы будем использовать те же три стандартных элемента управления из окна Toolbox: статический текст или метка (Label), поле ввода или окно редактирования (TextBox) и командную кнопку (Button), но расположи их на форме в другом порядке.

Исходный код файла Form1.cs:

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 class treyg

{

private int a, b, c, p;

public string ss;

 

public void vvod(int sa, int sb, int sc)

{

if (sa > 0 && sb > 0 && sc > 0)

{

if (sa + sb > sc && sa + sc > sb && sb + sc > sa)

{

a = sa; b = sb; c = sc;

p = a + b + c;

ss = "Периметр треугольника = " + p.ToString();

}

else

ss = "Одна из сторон треугольника больше суммы двух других Повторите ввод ";

}

else

ss = "Одна из сторон треугольника меньше 0! Повторите ввод ";

}

}

 

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

int A, B, C;

treyg t = new treyg();

A = Convert.ToInt32(textBox1.Text);

B = Convert.ToInt32(textBox2.Text);

C = Convert.ToInt32(textBox3.Text);

t.vvod(A,B,C);

textBox4.Text = t.ss;

}

}

}

 

Рассмотрим подробнее некоторые элементы класса и их использование в программе.

 

Рисунок 7.1 Окна программы «Треугольник Класс».

 

В первую очередь для работы с данными и методами класса class treyg необходимо создать объект этого класса – переменная t

treyg t = new treyg();

Данные класса private int a, b, c, p; являются закрытыми. Это означает, что доступ к элементам данных класса возможен только с помощью его методов. Например, если после создания объекта t попытаться присвоить новое значение элементу данных b (t.b = 3;), то это действие вызовет сообщение об ошибке т.к. непосредственное обращение к элементам данных класса запрещено спецификатором доступа private.

В классе treyg использованы два метода – конструктор (по умолчанию) и метод ввода значений сторон треугольника.

Конструктор создает объект с «нулевыми» значениями его полей данных.

Задание значений полям данных класса treyg осуществляется методом public void vvod(int sa, int sb, int sc), которому в качестве фактических параметров задаются значения переменных А, В и С, введенные в режиме диалога.

В программе рассмотрены варианты «неправильного» задания значений сторон треугольника и печать соответствующих комментарий. Однако в ней не предусмотрена защита от нажатия кнопки «Ввод значений сторон треугольника» с «пустыми» окнами ввода.

Доступ к полям

 

Каждое поле имеет модификатор доступа, принимающий одно из четырех значений: public, private, protected, internal. Возможно совместное задание двух атрибутов protected и internal.

Модификатор private

Модификатор private является атрибутом доступа по умолчанию. Он закрывает поля от всех других классов, разрешая прямой доступ к ним (чтение и запись) только методам самого класса. Помните, все поля всегда доступны всем методам класса. Они являются для методов класса глобальной информацией, с которой работают все методы, извлекая из полей нужные им данные и изменяя их значения в ходе работы.

Модификатор protected

Этот модификатор открывает поля классам наследникам. Если класс A объявил некоторое поле с модификатором protected, то методы класса B, который является наследником класса A и, следовательно, наследует поля класса A, могут непосредственно работать с наследуемыми полями.

Модификатор internal

Этот модификатор открывает поля дружественным классам. Два класса A и B называются дружественными, если они принадлежат одной сборке - одному проекту. Если класс A объявил некоторое поле с модификатором internal, то методы дружественного класса B, являющегося клиентом класса A, могут непосредственно работать с таким полем.

Комбинация атрибутов protected и internal

Эта комбинация открывает поле тем классам, которые являются либо наследниками, либо дружественными классами. Если требуется более строгое ограничение доступа к полю, чтобы оно было доступно только тем наследникам, которые являются дружественными классами, то сам класс нужно объявить с модификатором internal, а соответствующее поле - с модификатором protected.

Если поля доступны только для методов класса, то они имеют модификатор доступа private, который можно опускать. Такие поля считаются закрытыми, но часто желательно, чтобы некоторые из них были доступны в более широком контексте. Если некоторые поля класса A должны быть доступны для методов класса B, являющегося потомком класса A, то эти поля следует снабдить модификатором protected. Такие поля называются защищенными. Если некоторые поля должны быть доступны для методов классов B1, B2, и так далее, дружественных по отношению к классу A, то эти поля следует снабдить модификатором internal, а все дружественные классы B поместить в один проект (assembly). Такие поля называются дружественными. Наконец, если некоторые поля должны быть доступны для методов любого класса B, которому доступен сам класс A, то эти поля следует снабдить модификатором public. Такие поля называются общедоступными или открытыми.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: