logo search
sranaya_informatika

Объект - Черный ящик

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

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

Public Class BlackBox

End Class

    Вот и весь код. Ничего страшного в нем нет. Слово Public означает, что наш класс доступен из любого внешнего модуля. Пока нам не нужно знать, зачем это, поэтому прошу не обращать внимания. Когда придет время, я объясню и это.     Мы создали пустой класс черного ящика, не содержащий ни методов, ни свойств. Теперь заполним его содержимым.

Public Class BlackBox

Private mBoxName As String

Private mBoxContent As String

Public Property Content() As String

Get

Return mBoxContent

End Get

Set(ByVal Value As String)

mBoxContent = Value

End Set

End Property

Public Property Name() As String

Get

Return mBoxName

End Get

Set(ByVal Value As String)

mBoxName = Value

End Set

End Property

Public Function OpenBox(ByVal DropContent As Boolean)

' реализация

End Function

End Class

    Поясню - мы создали класс черного ящик, обладающий свойствами: Name - название ящика, Content - описание содержимого ящика. Значения этих свойств хранятся во внутренних переменных mBoxName и mBoxContent, недоступных извне нашего объекта. OpenBox - метод, открывающий ящик, которому передается параметр - нужно ли выбросить содержимое после открытия или нет.     Теперь у нас есть класс и из него можно начать создавать объекты.