Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Инкапсуляция. Классы и структуры




Инкапсуля́ция — свойство языка программирования, позволяющее объединить и защитить данные и код в объектe и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта.

-Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public.

-Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.

Сокрытие реализации целесообразно применять в следующих случаях:

предельная локализация изменений при необходимости таких изменений,

прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

Другое определение:

Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.

Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

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

На практике объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию.

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

Структуры и классы схожи в следующих отношениях.

Они являются типом контейнера, то есть содержат другие типы в качестве элементов.

У них есть элементы, такие как конструкторы, методы, свойства, поля, константы, перечисления, события и обработчики событий. Однако следует отличать эти элементы от объявленных элементов структуры.

Их элементы могут иметь индивидуальные уровни доступа. Например, один элемент может быть объявлен как Public, а другой — Private.

Они могут реализовывать интерфейсы.

Они имеют общие конструкторы с параметрами или без параметров.

Они могут предоставлять свойство по умолчанию, если это свойство принимает хотя бы один параметр.

Они могут объявлять и создавать события и могут объявлять делегаты.

Структуры и классы отличаются следующими особенностями.

Структуры являются типами значений; классы — ссылочными типами. Переменная типа структуры, в отличие от типа класса, содержит данные структуры, а не ссылки на данные.

Структуры используют выделенную память стека; классы — память кучи.

Все элементы структуры по умолчанию являются Public; переменные и константы класса по умолчанию — Private, а другие элементы класса по умолчанию являются Public. Такое поведение элементов класса обеспечивает совместимость с системой значений по умолчанию Visual Basic 6.0.

Структуры должны иметь хотя бы одну переменную или элемент события без общего доступа; класс может быть совершенно пустым.

Элементы структуры не могут быть объявлены как Protected; члены класса могут.

Процедура структуры может обрабатывать событие, только если она является процедурой Shared (Visual Basic)Sub, и только с помощью оператора Оператор AddHandler; любая процедура класса может обработать событие, используя либо ключевое слово Предложение Handles (Visual Basic), либо оператор AddHandler. Дополнительные сведения см. в разделе События (Visual Basic).

В объявлениях переменных структуры не могут быть заданы инициализаторы или исходные размеры массивов, но это возможно в объявлениях переменных класса.

Структуры неявно наследуют от класса System.ValueType и не могут наследовать ни от какого другой типа; классы могут наследовать от любых классов, отличных от System.ValueType.

Структуры не наследуются; классы наследуются.

Структуры никогда не завершаются, т. е. среда CLR никогда не вызывает метод Finalize для структур; классы завершаются при помощи сборщика мусора, который вызывает метод Finalize для класса, когда обнаруживает, что не осталось активных ссылок.

Для структуры не требуется конструктор; для класса требуется.

Структуры могут иметь конструкторы, не являющиеся общими, только если они принимают параметры; классы могут иметь их как с параметрами, так и без.

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

3. Анализ типов данных компиляторами. //Далее по 7е Серега надрался и не сделал; должно быть в лекциях





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 900 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2221 - | 2091 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.