Понятие инкапсуляции

Технология объектно - ориентированного программирования базируется на трех основных принципах – инкапсуляции, наследовании и полиморфизме.

Принцип инкапсуляции – объединение в одной структуре данных и методов их обработки лежит в основе самой организации класса.

Формально инкапсуляция это объединение полей и методов класса с целью защиты данных от непосредственного доступа из программы.

Поля объекта должны использоваться через его интерфейс – совокупность правил доступа или свойства. Скрытие полей объекта – их инкапсуляция (от слова «капсула») осуществляется через свойства.

Понятие свойства подробно рассмотрено в предыдущей лекции, поэтому ограничимся только рассмотрением примера использования свойства в программе.

Используем класс treyg в качестве учебного примера, для демонстрации роботы со свойствами класса.

Задача 9.1 В классе treyg сторонам треугольника, через свойства, присваиваются случайные целые числа в диапазоне от минус 5 до 5. Свойства выполняют проверку, чтобы вводимые значения были больше 0. После ввода значений сторон треугольника, отдельным методом класса выполняется проверка, что сумма любых двух сторон больше третьей. Каждый шаг работы программы сопровождать комментариями.

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 treyg()

{

a = b = c = 0;

}

public int Aa

{

get { return a; }

set { if (value > 0) a = value; else a = 0; }

}

public int Bb

{

get { return b; }

set { if (value > 0) b = value; else b = 0; }

}

public int Cc

{

get { return c; }

set { if (value > 0) c = value; else c = 0; }

}

public int Pp

{

get { return p; }

}

public void proverka()

{

if (a + b > c && a + c > b && b + c > a)

{

p = a + b + c;

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

}

else

MessageBox.Show("Одна из сторон треугольника больше суммы двух других Повторите ввод ");

}

}

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Random rnd = new Random();

int A=1, B=1, C=1;

bool ok = true;

treyg t = new treyg();

while (ok)

{

A = rnd.Next() % 11 - 5; t.Aa = A;

B = rnd.Next() % 11 - 5; t.Bb = B;

C = rnd.Next() % 11 - 5; t.Cc = C;

textBox1.Text = Convert.ToString(t.Aa);

textBox2.Text = Convert.ToString(t.Bb);

textBox3.Text = Convert.ToString(t.Cc);

if (A + B + C == t.Aa + t.Bb + t.Cc)

{

t.proverka();

if (t.Pp!= 0) ok = false;

}

else

MessageBox.Show("Одна из сторон треугольника меньше 0! Повторите ввод ");

}

textBox1.Text = Convert.ToString(t.Aa);

textBox2.Text = Convert.ToString(t.Bb);

textBox3.Text = Convert.ToString(t.Cc);

textBox4.Text = t.ss;

}

}

}

Работа программы представлена на рисунке 9.1.

Рисунок 9.1 – Окна работающей программы

При появлении окна MessageBox.Show() одновременно в главном окне программы отображаются значения свойств сторон треугольника.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: