Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Научите работать с классами в VB.NET ! Ищу наставника! 
V
    Опции темы
mihanik
Дата 8.10.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 1
Всего: 109



Ребята!!!

Огромное спасибо!!!  smile 

Не думал, что получу столько интересной информации!!!

Теперь даже как-то стыдно не разобраться во всём этом...

Отдельное спасибо thomas за то письмо, которое он мне прилал на личный ящик.
Его можно хоть в ФАК выкладывать, хоть куда!!!


ПРОСЬБА К МОДЕРУ!!!
thomas не отметился в этом посте, но всё равно очень мне помог в изучении поднятой темы.
Сделайте ему "+" в репутацию!!!



Ещё раз всем спасибо!!!

Это сообщение отредактировал(а) mihanik - 8.10.2006, 14:01


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 8.10.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(mihanik @  8.10.2006,  13:59 Найти цитируемый пост)
thomas не отметился в этом посте, но всё равно очень мне помог в изучении поднятой темы.Сделайте ему "+" в репутацию!!!

А сам сделать не сможешь?
У тебя же 300 постов.
Найди любой его пост и дай плюс  smile 
PM MAIL WWW ICQ   Вверх
mihanik
Дата 8.10.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 1
Всего: 109



ivashkanet
Цитата(ivashkanet @  8.10.2006,  14:12 Найти цитируемый пост)
Найди любой его пост и дай плюс    


Рассматривал такую возможность, но пока её отверг.
Я не хочу за какой-нибудь пост! smile 

Я хочу именно за этот!!! smile 

Мы (белые медведи) простых решений не ищем!!!  smile 

Это сообщение отредактировал(а) mihanik - 8.10.2006, 14:28


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 8.10.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(mihanik @  8.10.2006,  14:26 Найти цитируемый пост)
Я хочу именно за этот!!! 

А чем тебе модератор помочь может????
Он ведь не сможет создать тут пст за Томаса  smile 

И вообще: "заныканый ФАК в студию"
PM MAIL WWW ICQ   Вверх
$tatic
Дата 8.10.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Цитата(mihanik @  8.10.2006,  15:26 Найти цитируемый пост)
Я не хочу за какой-нибудь пост! smile 
Я хочу именно за этот!!! smile 

Цитата(ivashkanet @  8.10.2006,  16:24 Найти цитируемый пост)
И вообще: "заныканый ФАК в студию" 

Стукни Томасу в ПМ, попроси пусть письмо выложит. Тогда сразу обе проблемы и решатся smile
PM MAIL   Вверх
thomas
Дата 8.10.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 3
Всего: 65



Всем привет.

Я сам пользуюсь и другим предлогаю попробовать.
Для удобства написания класса логично использовать шаблон. Я его сохранил в txt файл и копирую в добавленный в проект класс.
А потом начинаю в соответствии с задачей писать код.
Вот как это примерно выглядит. Коментарии и есть шаблон.
Код

Public Class clsFile

    '------------------------------------------------------------
    'К О Н С Т Р У К Т О Р Ы класса
    '------------------------------------------------------------
    'конструктор без параметров
    Public Sub New()

    End Sub
    'конструктор с параметром(-и)
    Public Sub New(ByVal Path As String) '(ByVal Path As String, ByVal File As String)
        mPath = Path 'тоесть уже при создании экземпляра класса мы задем атрибут mPath
        'mFile=File 'здесь сразу задаем путь и имя файла
    End Sub

    '------------------------------------------------------------
    'А Т Р И Б У Т Ы  (поля)
    '------------------------------------------------------------
    'буковка "m" обозначает что это внутренная переменная
    Private mPathFile, mPath, mFile As String
    Private mFileExists As Boolean
    Private mIndex As Integer
    '-----------------------------------------------------------
    'С В О Й С Т В А
    '-----------------------------------------------------------
    'здесь используются Get и Set методы
    Public Property PathFile() As String
        Get
            Return mPathFile
        End Get
        Set(ByVal Value As String)
            mPathFile = Value
        End Set
    End Property
    'свойства могут быть как ReadOnly, только для чтения - метод "Get"
    Public ReadOnly Property Path() As String
        Get
            mIndex = mPathFile.LastIndexOf("\")
            mPath = mPathFile.Substring(0, mIndex)
            Return mPath
        End Get
    End Property

    Public ReadOnly Property FileExists() As Boolean
        Get
            If System.IO.File.Exists(mPathFile) Then
                Return True
            End If
        End Get
    End Property
    'свойства могут быть как  WriteOnly, тоько для записи - метод "Set"

    '--------------------------------------------------------------------------
    'М Е Т О Д Ы
    '--------------------------------------------------------------------------


    '--------------------------------------------------------------------------
    'С О Б Ы Т И Я
    '--------------------------------------------------------------------------

End Class

Код

Public Class clsFile

    '------------------------------------------------------------
    'К О Н С Т Р У К Т О Р Ы класса
    '------------------------------------------------------------
    'конструктор без параметров
    Public Sub New()

    End Sub
    'конструктор с параметром(-и)
    Public Sub New(ByVal Path As String) '(ByVal Path As String, ByVal File As String)
        mPath = Path 'тоесть уже при создании экземпляра класса мы задем атрибут mPath
        'mFile=File 'здесь сразу задаем путь и имя файла
    End Sub

    '------------------------------------------------------------
    'А Т Р И Б У Т Ы  (поля)
    '------------------------------------------------------------
    'буковка "m" обозначает что это внутренная переменная
    Private mPathFile, mPath, mFile As String
    Private mFileExists As Boolean
    Private mIndex As Integer
    '-----------------------------------------------------------
    'С В О Й С Т В А
    '-----------------------------------------------------------
    'здесь используются Get и Set методы
    Public Property PathFile() As String
        Get
            Return mPathFile
        End Get
        Set(ByVal Value As String)
            mPathFile = Value
        End Set
    End Property
    'свойства могут быть как ReadOnly, только для чтения - метод "Get"
    Public ReadOnly Property Path() As String
        Get
            mIndex = mPathFile.LastIndexOf("\")
            mPath = mPathFile.Substring(0, mIndex)
            Return mPath
        End Get
    End Property

    Public ReadOnly Property FileExists() As Boolean
        Get
            If System.IO.File.Exists(mPathFile) Then
                Return True
            End If
        End Get
    End Property
    'свойства могут быть как  WriteOnly, тоько для записи - метод "Set"

    '--------------------------------------------------------------------------
    'М Е Т О Д Ы
    '--------------------------------------------------------------------------


    '--------------------------------------------------------------------------
    'С О Б Ы Т И Я
    '--------------------------------------------------------------------------

End Class


В данном классе не прописаны методы и события.
В качестве методов могут выступать как субрутины, так и функции.
Для событий мы должны сначала обьявить событие, а потом описать метод его вызывающий.
Вот здесь можно прочитать об этом. http://msdn.microsoft.com/library/rus/defa.../vastmevent.asp


Кстати прочитать про интерфейсы можно в русской MSDN http://msdn.microsoft.com/library/rus/defa...nInterfaces.asp


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
DarkDragon
Дата 8.10.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Цитата

А сам сделать не сможешь?
У тебя же 300 постов.

Шота я не понял, разве нельзя добавлять плюсы или минусы, если ниже 300?
PM MAIL   Вверх
mihanik
Дата 9.10.2006, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 1
Всего: 109



А вот то письмо, которое thomas прислал мне.

Цитата

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

Другими словами класс описывает обьект и то что с ним может происходить.
Каждый класс может содержать следующие подразделы: конструкторы класса, атрибуты класса, свойства(Properties), методы (Methode), события(Events).
Потому для написания класса полезно иметь такой вот шаблон

Код 

Public Class имя класса ' желательно с префиксом cls

    '------------------------------------------------------------
    'К О Н С Т Р У К Т О Р Ы класса
    '------------------------------------------------------------
    'конструктор без параметров
    
    'конструктор с параметром(-и)
   
    '------------------------------------------------------------
    'А Т Р И Б У Т Ы
    '------------------------------------------------------------
   
    '-----------------------------------------------------------
    'С В О Й С Т В А
    '-----------------------------------------------------------
    'здесь используются Getи Set методы
    
    'свойства могут быть как ReadOnly, только для чтения - метод "Get"
   
   
    'свойства могут быть как  WriteOnly, тоько для записи - метод "Set"

    '--------------------------------------------------------------------------
    'М Е Т О Д Ы
    '--------------------------------------------------------------------------


    '--------------------------------------------------------------------------
    'С О Б Ы Т И Я
    '--------------------------------------------------------------------------

End Class
 


Сохрани его в txt файл и копируй каждый раз когда пишешь класс.
А там определяйся что ты хочешь от своего класса.
Будешь ты писать отдельные конструкторыили оставишь по умолчанию - конструктор без параметров.
Какие атрибуты должен содержать класс, это типа местные переменные. При наименовании полезно двать префикс "m". Так ты будешь четко знать что эта переменная внутри класса.
Далее ты определяешься со свойствами. Здесь используются два метода которые примнимают значения и которые определяют значения (Get и Set) . Свойства могут быть только для чтения или только для записи. 

Код 

Public Property PathFile() As String
        Get
            Return mPathFile
        End Get
        Set(ByVal Value As String)
            mPathFile = Value
        End Set
    End Property
 


это свойство "путь к файлу". Принимает значение(Set) и передаёт его в класс для дальнейшего использования(Get).

Как может выглядеть простой класс для файлов.

Код 

Public Class clsFile

    '------------------------------------------------------------
    'К О Н С Т Р У К Т О Р Ы класса
    '------------------------------------------------------------
    'конструктор без параметров
    Public Sub New()

    End Sub
    'конструктор с параметром(-и)
    неопределены

    '------------------------------------------------------------
    'А Т Р И Б У Т Ы
    '------------------------------------------------------------
    'буковка "m" обозначает что это внутренная переменная
    Private mPathFile, mPath, mFile As String
    Private mFileExists As Boolean
    Private mIndex As Integer
    '-----------------------------------------------------------
    'С В О Й С Т В А
    '-----------------------------------------------------------
    'здесь используются Getи Set методы
    Public Property PathFile() As String
        Get
            Return mPathFile
        End Get
        Set(ByVal Value As String)
            mPathFile = Value
        End Set
    End Property
    'свойства могут быть как ReadOnly, только для чтения - метод "Get"
    Public ReadOnly Property Path() As String
        Get
            mIndex = mPathFile.LastIndexOf("\")
            mPath = mPathFile.Substring(0, mIndex)
            Return mPath
        End Get
    End Property

    Public ReadOnly Property FileExists() As Boolean
        Get
            If System.IO.File.Exists(mPathFile) Then
                Return True
            End If
        End Get
    End Property
    'свойства могут быть как  WriteOnly, тоько для записи - метод "Set"
    не определены

    '--------------------------------------------------------------------------
    'М Е Т О Д Ы
    '--------------------------------------------------------------------------
    не определены

    '--------------------------------------------------------------------------
    'С О Б Ы Т И Я
    '--------------------------------------------------------------------------
    не определены
    
End Class

 



Как мы используем этот класс
На форме распологаем текстбокс и кнопку. В текстбоксе пишем путь и файл, а кнопкой проверяем существует ли такой файл.

Код 

Private Sub btnTesten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTesten.Click
        Dim test As New clsFile 'создаем экземпляр класса(в нашем случае обьекта-файл, который описывает наш класс. Путь к файлу и имя файла)
        test.PathFile = txtPath.Text
        If test.FileExists = True Then
            MessageBox.Show(test.Path & Chr(13) & test.File)
        Else
            MessageBox.Show("Файла не существует!")
        End If
    End Sub
 



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

Следующий пример класса будет о клиенте ( ФИО)

Код 

Public Class clsПерсона
 '------------------------------------------------------------
    'К О Н С Т Р У К Т О Р Ы класса
    '------------------------------------------------------------
    неопределены

 '------------------------------------------------------------
    'А Т Р И Б У Т Ы
    '------------------------------------------------------------
    Public mФамилия, mИмя As String
    Private index As Int16
 '-----------------------------------------------------------
    'С В О Й С Т В А
    '-----------------------------------------------------------
    Public WriteOnly Property Фамилия() As String
        Set(ByVal Value As String)
            mФамилия = Value
        End Set
    End Property
    Public WriteOnly Property Имя() As String
        Set(ByVal Value As String)
            mИмя = Value
            Toekennen()
        End Set
    End Property
    Public ReadOnly Property Инициалы() As String
        Get
            Select Case index
                Case 0
                    mФамилия = mФамилия.ToUpper()
                    mИмя  = mИмя .ToUpper()
                Case 1
                    mФамилия = mФамилия.ToLower()
                    mИмя  = mИмя .ToLower()
                Case 2
                    mФамилия = mФамилия.ToUpper.Chars(0)
                    mИмя  = mИмя .ToUpper.Chars(0)
            End Select
            Return mФамилия.Chars(0) & mИмя .Chars(0)
        End Get
    End Property
    Public ReadOnly Property ФИО() As String
        Get
            Select Case index
                Case 0
                    mФамилия = mФамилия.ToUpper()
                   mИмя  = mИмя .ToUpper()
                Case 1
                    mФамилия = mФамилия.ToLower()
                    mИмя  = mИмя .ToLower()
                Case 2
                    mФамилия = mФамилия.ToUpper.Chars(0) & mФамилия.Substring(1).ToLower
                    mИмя  = mИмя .ToUpper.Chars(0) & mИмя .Substring(1).ToLower
            End Select
            Return mФамилия & " " & mИмя 
        End Get
    End Property
 '--------------------------------------------------------------------------
    'М Е Т О Д Ы
    '--------------------------------------------------------------------------
    ' это могут быть как субрутины(не возвращают значений), так и функции(возвращают значение определенного типа)
    Public Function Заполнено() As Boolean
        If mФамилия <> "" And mИмя <> "" Then
            Return True
        End If
    End Function
    Public Function ИзмениВид(ByVal sIndex As Int16)
        index = sIndex
        Return index
    End Function
 '--------------------------------------------------------------------------
    'С О Б Ы Т И Я
    '--------------------------------------------------------------------------

    Public Event СобственноеИмя()
    Public Sub Узнать() 'здесь субрутина написана рядом с событием, чтобы показать что вызывает это событие.
        If mИмя = "Иван" Or mИмя = "ИВАН" Or mИмя = "иван" Then
            RaiseEvent СобственноеИмя()
        End If
    End Sub

End Class
 


И что мы делаем на форме со всем этим. На форме у нас следующие контролы: два текстбокса, комбобоксб две label и кнопка.
В текстбоксы вводим фамилию и имя. Сомбобокс определяет как показывать ФИО в label большие/маленькие буквы или имя и фамия с заглавной буквы, а во второй инициалы.
Вот код для формы.

Код 

Private WithEvents Клиент As New clsПерсона 'создали экземпляр нашего класса

    Private Sub btnПокажи_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToon.Click

        Клиент.Фамилия = txtФамилия.Text
        Клиент.Имя = txtИмя.Text
        If Клиент.Заполнено = True Then
            lblФИО.Text = Клиент.ФИО
            lblИнициалы.Text = Клиент.Инициалы
        Else
            MessageBox.Show("Укажите фамилию и имя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Private Sub cboType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboType.SelectedIndexChanged
        Клиент.ИзмениВид(cboType.SelectedIndex)
    End Sub
'после заполнения проверит совпадает ли указанное имя с Иваном, ели да, то сгенерирует событие-покажет сообщение
    Private Sub Клиент_СобственноеИмя() Handles Клиент.СобственноеИмя
        MessageBox.Show("У тебя имя тоже Иван.")
    End Sub
 

 
 
В следующем примере покажу как использовать конструкторы класса с параметрами.


Добавлено @ 07:46 
БЛИН!!!!!
ТАК ХОЧЕТСЯ ВСЕМ "ДАТЬ В РЕПУ" !!!  smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Naum
Дата 9.10.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15



Раньше тоже использовал что-то типа этого. Только это все было написано на листочке в тетрадке. А тут в Visual Studio 2005 появилась диаграмма классов. Прикольная штучка. smile  Тока вчера начал пользоваться. Вчера за 2 часа написал логику работы средненькой программки. Раньше на это уходило 1-2 дня (и то в конце концов она кардинально менялась). Правда все же есть некоторые ограничения, но ничего.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Exception
Дата 9.10.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Добавлю несколько важных замечаний к коду thomas'а.

Цитата
Какие атрибуты должен содержать класс, это типа местные переменные. При наименовании полезно двать префикс "m". Так ты будешь четко знать что эта переменная внутри класса.


Переменные класса принято именовать полями. Атрибуты - это кое-что другое.
Насчёт префиксов - можно, но всё-таки код выглядит лучше, если вместо m использовать, например, знак подчёркивания (_).

Цитата
Public Class имя класса ' желательно с префиксом cls


Так было принято в VB6. В VB .NET и других ОО языках никаких префиксов не используется - взгляни ан классы .NET Framework.


Цитата
mФамилия, mИмя As String


Использовать русские символы в идентификаторах - не лучшее решение.

Цитата
Раньше на это уходило 1-2 дня (и то в конце концов она кардинально менялась).


Пока люди не попробуют проектировать программу перед её написанием, они никогда не верят, что так проще smile . Особенно, VB .NET-чики.

Добавлено @ 15:00 
P.S. В 2005-ой студии можно твой кусок кода сделать шаблоном (code snippet) и потом вставлять в любом месте прямо из редактора кода smile .
PM   Вверх
thomas
Дата 9.10.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 3
Всего: 65



Exception
Приветствую.
Attribute это и есть, в принципе, "поля". Просто, похоже, русские программисты используют слово поля (английское field я в классах не втречал), а забугорные используют слово атрибуты.
Еще одно: методы и субрутины (в C# еще void) это суть одно и тоже, а вот функция это уже другое. Функция не только производит определенные действия, она еще и возвращает результат заданного типа, в отличие от методы(субрутины)

По поводу префикса для переменных в классе часто встречается и "_" , с этим согласен.
Просто наш препод предложил нам нотацию с "m" и для имен классов в VB префикс cls, а в C# соответственно cl.
Наверное это можно и не использовать, но когда в коде формы ты обьявляешь  новый экземпляр класса, лично мне, с префиксом имя класса понятнее. Это явно указывает на класс.

Еще одно замечание по поводу наименования идентификаторов.
Имена полей(атрибутов) пишут с маленькой буквы, а вот свойства(Propertie) с заглавной.

И конечно я не использую кириллицу в идентификаторах. Я учусь на Нидерландском. И потому в кодировании употребляю существительные и глаголы из Нидерландского.
А тут так написал что бы человек понял логику построения класса. Но для более серьезного и "правильного" подхода к программированию, мне нужно учить Английский и использовать английские существиетльные и глаголы. Хотя здесь во всех, там где я побывал, школах кодируют на Нидерландском и ничего, все счастливы.  smile 




--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
DarkDragon
Дата 9.10.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Цитата

ТАК ХОЧЕТСЯ ВСЕМ "ДАТЬ В РЕПУ" !!!  smile  

Типа в знак благодарности?smile
PM MAIL   Вверх
DarkDragon
Дата 9.10.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Насчет аттрибутов. В языках .NET, мелкософт им отвела другую роль. А именно роль некого дополнительного свойства обьекта(под обьектом понимается классы, структуры, переменные, процедуры).

Атрибуты прикручивают следубщим способом:
Код

   <Serialization()>Class MyClass

   End Class


В C#, так:
Код

  [Serialization()]class MyClass
  {

  }


Например одно из применений атрибутов служит декларация функций из библиотек:
Код

  <DllImport("user32.Dll")>Public Function ShowWindow (nCmdShow As Integer) As Integer
  End Function


Еще для того чтобы поля структур, при выполнении программы, стояли друг за другом, можно применить следующий атрибут:
Код

  <StructLayout(LayoutKind.Sequential)> Public Structure APIPoint
    Public X As Integer
    Public Y As Integer
End Structure

В частности так делают, для передачи структур, в API функции(т. к. в таких библиотеках поля структур идут друг за другом, как описано в самом коде, а в .NET поля структур располагаются случайным образом).


PM MAIL   Вверх
Exception
Дата 10.10.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(thomas @  9.10.2006,  17:44 Найти цитируемый пост)
Attribute это и есть, в принципе, "поля". Просто, похоже, русские программисты используют слово поля (английское field я в классах не втречал), а забугорные используют слово атрибуты.


Как правильно выше написал DarkDragon, именно в .NET атрибуты - это специальные штучки, присоединяющиеся к классу/методу/etc - метаданные, короче. Поэтому переменные уровня класса называют полями.

Цитата(thomas @  9.10.2006,  17:44 Найти цитируемый пост)
Еще одно: методы и субрутины (в C# еще void) это суть одно и тоже, а вот функция это уже другое. Функция не только производит определенные действия, она еще и возвращает результат заданного типа, в отличие от методы(субрутины)


Метод - логически ограниченный кусок кода, выполняющий некоторую задачу и (необязательно) принимающий некоторые входные параметы (немного упрощённое определение, но суть отражена smile ).

Процедура [subroutine] - это метод, не возвращающий никакого значения.

Функция - это метод, возвращающий значение smile . Вот и всё.
PM   Вверх
DarkDragon
Дата 11.10.2006, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Я вот посмотрел на шаблон класса, и подумал предложить свою версиюsmile
Ничего против комментариев не имею, но если мы пишим код в VS.NET, то
я думаю лучше будеть использовать регионы.

Пример:

Код

#Region "Private Variables"
    ' Переменные для частного пользования
    Private pVar1 As Integer
    Private pVar2 As String
    ...
#End Region

#Region "Public Properties"
    ' Публикация свойств
    Public Property Var1() As Integer
        ...
    End Property
    
    Public Property Var2() As String
        ...
    End Property
#End Region

#Region "Constructors"
    ' Конструкторы класса
    Public Sub New()
    End Sub

    Public Sub New(...)
        ...
    End Sub
#End Region

#Region "Public Functions"
    ' Публикация функций
    Public Function Func1() As Integer
        ...
    End Function

    Public Function Func2() As String
        ...
    End Function
#End Region


Почему я так думаю? Потому что Регионы можно сварачивать(все одним кликом, в один прямоугольник, внутри которого распологается текст
описанный в ковычках)smile
А комментарии направить к региону, или можно оставить так как они естьsmile

Конечно в маленьких проектах, вполне можно обойтись, а вот в большущих, я думаю
что очень сильно помогут, если с умом давать им именаsmile

Наверное для этого мелкософт и ввела понятие регионы (область содержащая конкретные данные, это так сказать придумал я русское определение регионамsmile)

PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1024 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.