:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Структури

    Деякі вважають, що структури VB .NET аналогічні призначеним для користувача типам колишніх версій VB або багатьох інших мов програмування. Звичайно, структури VB .NET можуть використовуватися як призначені для користувача типи, але цим сфера їх можливого застосування не вичерпана. Структура може володіти всіма ознаками традиційного класу, включаючи конструктори і члени з атрибутами Private/friend/public. Єдина відмінність структур від звичайних об'єктів полягає в тому, що структури володіють структурною семантикою. Пригадаєте, який сенс вкладається в цей термін:

    • передача за значенням не змінює стану початкової змінної;
    • структури створюються без використання оператора New, тому для них завжди визначено значення за умовчанням, утворене значеннями за умовчанням всіх полів екземпляра;
    • у структурі визначений метод Equals, який повертає True, якщо дві структури містять однакові внутрішні дані (метод Equals використовується у формі А.Еquals(В)).

    У поточній версії VB .NET рівність двох екземплярів структурного типу не може бути перевірене за допомогою знаку рівності (=). Замість цього слід використовувати метод Equals. За умовчанням метод Equals виконує так зване поверхневе (shallow) порівняння — сенс цього терміну розглядається в розділі «Клонування об'єктів» розділу 5. Якщо ви хочете, щоб ваша версія Equals відрізнялася якоюсь особливою поведінкою, метод можна перевизначити у визначенні структури.

    Деякі програмісти використовують структури частіше, ніж слідує, вважаючи, що структура як1 полегшений об'єкт працює ефективніше, ніж об'єкти звичайних класів. На жаль, цей підхід не позбавлений недоліків: два об'єкти, що володіють однаковим станом, далеко не завжди повинні вважатися за рівних, тоді як при використанні структур це неминуче. Крім того, користувачі вашої коди зазвичай чекають, що структури (і структурні типи взагалі) по своїй поведінці близькі до вбудованих структурних типів ніби Integer і Double.

    Всі стандартні числові типи (Integer, Long, і так далі) реалізовані B.NETFramewdrke виді структур.

    Визначення структур в програмі

    Визначення структури починається з модифікатора рівня доступу і ключового слова Structure:

    Public Structure Nameofstructure

    ' Код структури End Structure

    Для кожного члена структури має бути вказаний модифікатор доступу (наприклад, Public або Private). Поля, оголошені з ключовим словом Dim поза процедурами і функціями, вважаються за відкриті. Нижче приведений простий варіант структури для роботи з комплексними числами:

    Public Structure Complexnumber

    Private m_real As Double

    Private m_complex As Double

    Public Property real () As Double Get

    Return m_real

    End Get Set(Byval Value As Double)

    m_real = Value

    End Set

    End Property

    Public Property complex()As Double Get

    Return m_complex End Get Set(Byval Value As Double)

    m_complex = Value

    End Set

    End Property

    Public Sub New(Byval x As Double. Byval у As Double)

    real = x complex = у

    End Sub

    Public Function Add(Byval zl As Complexnumber) As Complexnumber

    Dim z As Complexnumber

    z.real = Me.real + zl.real

    Z.complex = Me.complex + zl.complex

    Return z End Function

    ' І так далі End Structure

    Звернете увагу на повернення структури функцією Add. До речі, поля структур не можуть ініціалізуватися при оголошенні:

    Private m_real As Double = 0 ' Помилка

    Між структурами і посилальними об'єктами існує ще одна принципова відмінність: використання відкритих полів замість властивостей Get-set в структурах широко поширене і не вважається за прояв поганого стилю програмування, як для об'єктів. Це пов'язано з тим, що поля екземплярів зазвичай відносяться до базових типів. Наприклад, перевизначення приведеною вище структури Complexnumber з відкритими полями Real і Imaginary не викличе особливих проблем.

    Структури створюються викликом New або при привласненні значень їх полям. Звернення до полів структур здійснюються так само, як і звернення до властивостей об'єктів. Нижче приведений приклад використання структури Compl exnumber:

    Sub Main()

    Dim Z1 As New Complexnumber(2.3. 2.4)

    Dim Z2.Z3 As Complexnumber

    Z2.real = 1.3

    Z2.complex =1.4

    Z3 = Zl.Add(Z2)

    Console. Writeline(Z3. real)

    Console.ReadLine()

    End Sub

    Поточна версія VB .NET не дозволяє перевизначати сенс операторів (тобто про-ізводіть перевантаження операторів), тому нам довелося визначити метод Add замість того, щоб задати нове визначення для оператора «+». Можливість перевантаження операторів повинна з'явитися в майбутніх версіях VB .NET. Якщо ви хочете, щоб в сьогоднішній версії вашого пакету для роботи з комплексними числами складання виконувалося знаком «+», доведеться використовувати С#.

    Структури можуть містити будь-які об'єкти VB .NET, зокрема інші структури, перераховувані типи, масиви і так далі Таким чином, на VB .NET можна написати пакет для роботи з матрицями, в якому основна структура даних визначатиметься таким чином:

    Public Structure Matrix

    Private Theoata(,) As Double

    ' І так далі End Structure

    Простори імен для створюваних класів

    Класи, перераховувані типи, структури або модулі включаються в простори імен. Звичайно, створити екземпляр модуля неможливо — тільки екземпляри класів, визначуваних в модулі. У діалоговому вікні Project Properties, показаному на мал. 4.9, присутні текстові поля для імені збірки і кореневого простору імен

    На мал. 4.9 вказаний кореневий простір імен Apress. При оголошенні простору імен в програмі можна використовувати ієрархію довільної глибини, що відображає логічну структуру нашої програми. Розглянемо приклад визначення класу:

    Namespace Cornell.Morrison.VB.NET.CH4

    Module Module1

    Sub Main()

    Console.filriteLine("test code goes here")

    End Sub

    Public Class"employeeexamplel

    ' Код класу End Class

    End Module

    End Namespace

    Мал. 4.9. Простір імен і ім'я збірки у вікні властивостей проекту

    В цьому випадку повне ім'я класу виглядає так:

    Apress.Cornell.Morrison.VB.NET.CH4.EmployeeExamplel

    Простори імен .NET на відміну від пакетів Java не прив'язані до певної структури каталогів. Два класи можуть належати одному простору імен навіть в тому випадку, якщо вони визначаються в різних файлах, що знаходяться в різних каталогах.

    Вікно класів

    Тепер, коли ви знаєте, як визначати власні класи, вам простіше працюватиме з вікном класів, в якому члени класів вашого рішення відображаються у вигляді зручного ієрархічного дерева. Вікно класів допомагає орієнтуватися в коді вашого рішення: при подвійному клацанні в одному з рядків вікна класів у вікні програми автоматично відкривається код відповідного члена. Вікно класів відкривається командою View > Class View або комбінацією клавіш Ctrl+shift+c. На мал. 4.10 показано, як виглядає вікно класів для однієї з версій нашого класу Employee.

    Мал. 4.10. Вікно класів для класу Employee

    У лівому верхньому кутку вікна розташована пара кнопок. Кнопка New Folder створює нову теку, але частіше використовується кнопка Class View Sort By Type. Вона відкриває список, в якому вибирається режим представлення інформації у вікні.

    • Sort Alphabetically. Класи і члени упорядковуються за абеткою (a-z).
    • Sort By Type. Класи і члени упорядковуються за типом. Наприклад, в цьому режимі зручно згрупувати всі властивості (базових класів, інтерфейсів, методів і т. д.).
    • Sort By Access. Класи і члени упорядковуються по рівню доступу.
    • Group By Type. Класи і члени групуються в різних вузлах залежно від типу. Наприклад, всі властивості об'єднуються у вузлі Properties, а всі поля — у вузлі Fields.

     




    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©