:: Меню ::

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

    :: Друзі ::

     
     

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

    = =

     

     

     

     

    Відладка об'єктно-орієнтованих програм

    Відладка об'єктно-орієнтованих програм завжди починається з аналізу об'єктних змінних і перевірки того, чи відповідає їх стан передбачуваному. Саме з цієї причини в VS IDE передбачені засоби для отримання інформації про закриті поля ваших класів — вікна перегляду (Watch) і локальних змінних (Locals). Застосування цих засобів відладки буде розглянуто на простому прикладі. Допустимо, ми вирішили перейти від зв'язаного списку до двозвязкового. Простіше кажучи, в кожному елементі повинне зберігатися не одне посилання, а дві — на наступний і на попередній елемент списку, щоб перебір міг здійснюватися не тільки в прямому, але і у зворотному напрямі. Нижче приведений перший варіант класу двозвязкового списку, що містить помилку. На цьому прикладі будуть продемонстровані основні прийоми відладки об'єктно-орієнтованих програм:

    1 Option Strict On

    2 Module Modulel

    3 Sub Main()

    4 Dim alinklist As New Linkedlist("first link")

    5 Dim alink As Linkedlist.Link

    6 alink = alinklist.MakeLink(alinklist.GetFirstLink, "second link")

    7 alink = alinklist.MakeLinktaLink, "third link")

    8 Console.WriteLine(alinklist.GetFirstLink.MyData)

    9 alink = alinklist.GetNextLink(alinklist.GetFirstLink)

    10 Console.Wri teline(ali nk.MyData)

    11 Console.WriteLineCaLink.NextLink.MyData)

    12 Console. Readune()

    13 End Sub

    14 Public Class Linkedlist

    15 Private m_currentlink As Link

    16 Private nffirstunk As Link

    17 Sub New(Byval thedata As String)

    18 m_currentlink = New Link(thedata)

    19 m_firstlink = m Currentlink

    20 End Sub

    21 Public Function Makelinktbyval currentlink As Link. Byval _

    22 thedata As String) As Link

    23 m_currentlink = New Linkccurrentlink.theData)

    24 Return m_currentlink

    25 End Function

    26 Public Readonly Property Getnextlink(Byval alink As Link)_

    27 As Link

    28 Get

    29 Return alink.NextLink()

    30 End Get

    31 End Property

    32 Public Readonly Property Getcurrentlink() As Link

    33 Get

    34 Return m_currentlink

    35 End Get

    36 End Property

    37 Public Readonly Property Getfirstlink() As Link

    38 Get

    39 Return m_firstlink

    40 End Get

    41 End Property

    42

    43 ' Вкладений клас для посилань

    44 Friend Class Link

    45 Private m_mydata As String

    46 Private m_nextlink As Link

    47' Private m_parentlink As Link

    48 Friend Sub New(Byval myparent As Link. Byval thedata As String)

    49 m_mydata = thedata

    50 m_parentlink = Me

    51 m_nextlink = myparent

    52 End Sub

    53 Friend Sub New(Byval thedata As String)

    54 m_mydata = thedata

    55 End Sub

    56 Friend Readonly Property Mydata() As String

    57 Get

    58 Return m_mydata

    59 End Get

    60 End Property

    61 Friend Readonly Property Nextlink() As Link

    62 Get

    63 Return m_nextlink

    64 End Get

    65 End Property

    66 End Class

    67 End Class

    68 End Module

    Результат роботи програми показаний на мал. 4.11. Звичайно, це зовсім не те, що ми чекали отримати.

    Мал. 4.11. Результат роботи програми з помилкою

    У подібних ситуаціях програму доводиться відладжувати. Одін із способів відладки описаний нижчим.

    • Натисніть кнопку Break в діалоговому вікні, показаному на мал. 9.11.
    • Закрийте вікно (у даному прикладі — консольне), щоб повернутися в IDE.

    Встановите точку переривання (F9) в позиції, з якою повинен початися аналіз стану різних об'єктів програми, — в нашому прикладі логічно встановити її в рядку, передуючому тій, в якій відбулося виключення (рядок 9 лістингу). Запустите програму командою Debug > Start (клавіша F5). Відкрийте вікно локальних змінних і виведіть його на передній план. На мал. 4.12 показано, як виглядає це вікно. Поряд з іменами об'єктних змінних alink і alinkedlist розташовані значки «+», на яких так і хочеться клацнути.

    Мал. 4.12. Вікно локальних змінних на початку сеансу відладки .

    Оскільки об'єктна змінна alink відповідає третьому посиланню, очевидно, посилання на попередній елемент не має бути рівна Nothi ng. Це наводить на думку, що ми повинні уважніше придивитися до коду, в якому привласнюється значення посилання на попередній елемент.

    Friend Sub New(Byval myparent As Link. Byval thedata As String)

    m_mydata = thedata

    m_parentlink = Me

    m_nextlink = myparent End Sub

    Виявляється, ми переплутали операції привласнення посилань і забули задати посилання з попереднього елементу списку на поточний. Виправлений варіант цієї функції повинен виглядати так:

    Friend Sub Newtbyval myparent As Link, Byval thedata As String)

    m_mydata = thedata

    m_parentlink = myparent

    m_parentlink.m_NextLink = Me

    End Sub

    Можливості відладки не обмежуються використанням вікна локальних змінних. Наприклад, ви можете встановити умовну точку переривання по умові alink Is Nothing або скористатися командою Add Watch контекстного меню у вікні програми, коли програма знаходиться в режимі переривання. Втім, незалежно від того, який шлях буде вибраний, центральне місце в процесі відладки займає аналіз стану об'єктів.

    Підсумки

    Розділ вийшов дуже довгим. У ній ви познайомилися з деякими вбудованими класами .NET Framework, але головною темою була специфіка роботи з об'єктами в VB .NET. В порівнянні з колишніми версіями VB в цій області відбулися багато змін, в основному принципових. Зокрема, були розглянуті конструктори, що параметризувалися, створення об'єктів, що значно підвищують надійність, і їх ініціалізацію. Коротше кажучи, в цьому розділі був викладений базовий матеріал, абсолютно необхідний для подальшого освоєння VB .NET.

     




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

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

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


    :: Реклама ::

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


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

    -


     

     

     


    Copyright ©