ЛАБОРАТОРНАЯ РАБОТА 4 .. КЛАССЫ И ОБЪЕКТЫ. ИНКАПСУЛЯЦИЯ




ЛАБОРАТОРНАЯ РАБОТА 4.

КЛАССЫИ ОБЪЕКТЫ. ИНКАПСУЛЯЦИЯ

Цель лабораторной работы: познакомиться с созданием классов и объектов на языке C#. Изучить основные конструкции, используемые при построении классов и объектов. Разобраться с понятием инкапсуляции.

Теоретические основы

В С элементом программирования является функция, а в С# - является класс.

С теоретической точки зрения:

Класс – это тип, описывающий устройство объектов.

Поля – это переменные, принадлежащие классу.

Методы – это функции (процедуры), принадлежащие классу.

Объект – это экземпляр класса, сущность в адресном пространстве компьютера.

Можно сказать, что класс является шаблоном для объекта, описывающим его структуру и поведение. Поля класса определяют структуру объекта, методы класса – поведение объекта.

С точки зрения практической реализации (в самом тексте программы) класс является типом данных, а объект – переменной этого типа.

Объявление класса состоит из двух частей: объявление заголовка класса и объявление тела класса. Заголовок класса состоит из модификатора доступа, ключевого слова class и имени самого класса. Тело класса – есть конструкция, заключенная в фигурные скобки и содержащая объявление полей и методов, принадлежащих классу.

Пример объявления класса:

public class MyClass { int a; }

Объявление объекта (создание объекта как экземпляра класса) состоит из двух частей: создание переменной-ссылки на область памяти, в которой будет располагаться объект, выделение памяти для объекта и заполнение этой памяти начальными значениями, иначе говоря инициализация данной переменной-ссылки. Объявление переменной-ссылки, а иными словами объекта, подчиняется общему правилу объявления переменных в C#. Переменные могут объявляться в любом месте в теле методов, за исключением тел условных операторов. Переменная, объявленная вне тела метода, но внутри тела класса, становится полем. Синтаксис объявления переменных имеет вид:

<имя_типа><имя_переменной>.

Пример объявления целочисленной переменной:

int a;

Пример объявления переменной-объекта класса MyClass:

MyClass MyObj;

При объявлении переменная может быть сразу инициализирована (ей может быть присвоено какое-либо значение).

Пример инициализации переменной при объявлении:

int a=0;

Выделение памяти осуществляет оператор new, а задачу заполнения памяти начальными значениями решает специальный метод объекта, называемый конструктором. Конструктор – метода объекта, объявленный следующим образом: для этого метода всегда используется модификатор доступа public, нет типа возвращаемого значения (нет даже void), имя метода совпадает с именем класса. Однако компилятор С# не требует обязательного определения конструктора для класса. Если конструктор не объявлен, компилятор вызовет так называемый конструктор по умолчанию, который создаст сам.

Таким образом, создание объекта класса MyClass будет иметь вид:

MyClass MyObj=new MyClass();

Классы (и объекты) являются прямым воплощением такой идеи объектно-ориентированного программирования как инкапсуляция данных и кода.

Инкапсуляция – это механизм объединения данных и кода, манипулирующего этими данными, а также защиты того и другого от внешнего вмешательства, неправильного использования или от несанкционированного доступа. Объект – это то, что поддерживает инкапсуляцию (объединяет в себе данные и код, работающий с ними). Для закрытия данных внутри объекта используются модификаторы доступа, в частности модификатор private, который используется по умолчанию, если не употреблен другой. Данные или методы, объявленные с этим модификатором будут недоступны вне класса (объекта), то есть к ним можно будет обратиться через открытые (объявленные с модификатором public) методы или свойства класса. Свойства класса – нечто среднее между полем и методом, представляет собой конструкцию вида:

<Модификатор доступа> <Тип свойства> <Имя свойства>

{

get{return <значение>}

set{<поле>=value}

}

Обычно свойства связываются с закрытыми полями класса и помогают осуществить доступ к этим полям из внешних (относительно класса) частей программы. Свойства вместе с модификаторами доступа реализуют механизм защиты данных от несанкционированного доступа. Как мы видим, свойство имеет заголовок и тело. В заголовке указывается модификатор доступа (обычно public), тип возвращаемого свойством значения и имя свойства. В теле объявлено два метода get и set. Больше ничего в теле свойства объявлять нельзя. Метод get имеет ключевое слово return и возвращает какое-либо значение (обычно значение какого-либо поля, хотя не обязательно). Метод set имеет ключевое слово value и присваивает (устанавливает) это значение полю объекта.

Пример объявление свойства в классе MyClass:

public class MyClass

{

int a; //поле

public int A// свойство

{

get { return a;}

set { a=value;}

}

}

Пример использование описанного свойства в программе:

MyClass MyObj=new MyClass();

MyObj.A=6; // полю a объекта MyObj присвоится значение 6.

int b=MyObj.A; // переменной b присвоится значение поля a объекта MyObj.

Так как программа на языке C# может иметь множество классов со множеством методов, то необходимо каким-то образом определять точку, откуда начнется выполнятся программа. Эта точка называется точкой входа и представляет собой метод любого класса, объявленный с заголовком static void Main(string[] args). Точка входа может принадлежать любому классу, из описанных в программе, единственно, что она должна быть в программе одна.

Задание к лабораторной работе

В рамках консольного приложения создать класс А с полями а и b и свойством с. Свойство – значение выражения над полями а и b (выражение и типы полей – см. вариант в таблице 1). Поля инициализировать при объявлении класса. Конструктор оставить по умолчанию. Проследить, чтобы поля а и b напрямую в других классах были недоступны. Создать класс Programm с одним методом – точкой входа. В теле метода создать объект класса А, вывести на экран значение свойства с.

Таблица 1. Варианты заданий к лабораторной работе

 

Контрольные вопросы

1. Что такое класс?

2. Что такое объект?

3. Как связаны между собой классы и объекты в программе?

4. Что такое инкапсуляция?

5. За счет чего реализуется защита от несанкционированного доступа к данным?

6. Чем отличаются поля от переменных?

7. Что такое свойство?

8. Какие методы есть у свойства?

9. Что делают эти методы?

10. Что такое точка входа?

ЛАБОРАТОРНАЯ РАБОТА 5



Поделиться:




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

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


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