- •Предисловие
- •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 Понятие класса?
- •Предметный указатель
- •Список литературы
7.4 Структура объекта
Рассматривая классы, мы отмечали, что переменной типа класс является объект. Объект переменная, следовательно, ей выделяется место в памяти компьютера, в которой хранится информация объекта.
Рассмотрим, что конкретно хранится в памяти, соответствующей объекту.
Естественно, то значения всех полей данных класса.
Специальное поле this (параметр по ссылке), который формируется автоматически при создании объекта и содержит адрес объекта.
Фактически связь объекта с методами класса происходит через параметр this. Каждый метод класса может непосредственно обращаться к параметру this для работы с элементами текущего объекта. Поскольку значение this всегда соответствует текущему объекту (объекту, с которым в текущий момент работает программа), то методы класса будут работать с элементами текущего объекта.
Использование указателя this позволяет не создавать в каждом объекте копии методов класса, для работы с объектом. Таким образом, методы класса не тиражируются для каждого объекта.
7.5 Пример учебной программы
Рассмотрим чисто учебный пример по созданию класса треугольник (на основе примера из первой лекции).
На этапе визуального программирования мы будем использовать те же три стандартных элемента управления из окна 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), которому в качестве фактических параметров задаются значения переменных А, В и С, введенные в режиме диалога.
В программе рассмотрены варианты «неправильного» задания значений сторон треугольника и печать соответствующих комментарий. Однако в ней не предусмотрена защита от нажатия кнопки «Ввод значений сторон треугольника» с «пустыми» окнами ввода.
