русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Новый объект и обращение к нему производим в нашем главном классе Program.


Дата добавления: 2015-07-09; просмотров: 504; Нарушение авторских прав


Инкапсуляция

Открываем VisualStudio (у вас стоит 2010 версия), далее через меню файл создаем новое консольное приложение для языка C#. У вас откроется заготовка со стандартным классом Program.

Советую прочитать пример инкапсуляции до конца а затем набирать код. Код дополняется и модифицируется по ходу действий.

Весь код приводится ниже.

Классы нужно создавать ниже класса Program, но чтобы они не выходили за рамки namespace.

Новый объект и обращение к нему производим в нашем главном классе Program.

У нас есть новый тип данных - TAirplan . Если мы попробуем использовать этот класс следующим образом:

то обнаружим следующие ошибки. Во-первых, для создания экземпляра класса недостаточно объявить соответствующую переменную. Экземпляр класса необходимо создать с помощью оператора New. Дело в том, что переменная типа класса на самом деле является не переменной, а ссылкой на переменную. По сути ссылка - это адрес в памяти, где должна храниться переменная. Поэтому процедура создания класса включает в себя выделение соответствующей памяти, инициализации полей класса и присвоение ссылке адреса выделенной памяти. Создать экземпляр класса можно следующим образом:

Во-вторых, использование полей класса и вызов его методов в строках:

будет невозможным. Дело в том, что по умолчанию определенные поля и методы являются закрытыми от внешнего обращения. К таким полям можно обращаться только из методов самого класса. Для того, чтобы сделать возможным общаться к полям и методам класса необходимо использовать спецификаторы доступа.

В C# существуют следующие спецификаторы доступа:

  • public
  • protected
  • private
  • new
  • internal
  • static
  • readonly
  • volatile

Некоторые спецификаторы могут использоваться совместно, а некоторые являются взаимоисключающими. По умолчанию, если не указан спецификатор доступа, полям и методам присваивается спецификатор private. Этот спецификатор означает, что к данному полю и методу невозможно обратиться из другого класса и даже из класса - наследника нашего класса. Спецификатор protected аналогичен спецификатору private за исключением того, что поля и методы с этим спецификатором "видны" для классов наследников данного класса. Наиболее либеральным является спецификатор public. К полям и методам, помеченным этим спецификатором, можно обращаться из любых других классов. Может показаться, что легче всего помечать все поля и методы public, чтобы "не мучаться". Часто начинающие программисты именно так и поступают. Однако такой подход противоречит идеологии объектно-ориентированного программирования. Важная идея инкапсуляции состоит в сокрытии внутренних полей и методов от внешней среды. Может показаться удивительным, но порой чем меньше мы знаем о внутреннем устройстве класса, тем легче и безопаснее им пользоваться.



Возвращаясь к примеру, разумно дать возможность вызывать метод IncAltitude() для изменения высоты. Для этого нужно назначить для метода IncAltitude спецификатор доступа - public. Но не стоит давать возможность пользователям класса самостоятельно изменять высоту путем доступа к полю Altitude, поскольку тогда возможно превышение порога высоты. В тоже время, если у поля Altitude будет спецификатор доступа private, то пользователь не сможет не только изменить это поле, но и прочитать. Для этого нужно создать еще один метод, который будет выдавать пользователю значение высоты:

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

Если создать класс в таком виде:

и использовать его таким образом:

то мы увидим строку "Высота = 100". Объясняется это тем, что мы никак не инициализировали поля перед использованием. C# всегда инициализирует переменные типа double нулем, но желательно инициализировать переменные явно. В объектно-ориентированном программировании каждый класс может иметь специальный метод (и даже не один) называемый конструктором. Конструктор - это метод, который всегда вызывается при создании экземпляра класса. Если в классе не определен ни один конструктор, то компилятор создает конструктор по умолчанию. Конструктор имеет следующие черты, которые выделяют его из других методов.

1. Имя конструктора всегда совпадает с именем класса. Никакой другой метод не может иметь имя, совпадающее с именем класса.

2. Конструктор не имеет возвращаемого типа. Никакой другой метод не может не иметь возвращаемого типа.

3. Конструктор можно вызвать только путем создания экземпляра класса.

Добавим в класс конструктор:

Теперь создавать экземпляр класса нужно следующим образом:

 



<== предыдущая лекция | следующая лекция ==>
Тема 6. Підвищений рівень складності | Наследование и полиморфизм


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.331 сек.