Главная страница
Навигация по странице:

  • 300 Часть VII. Объектно-ориентированное программирование

  • Глава

  • 302 Часть VII. Объектно-ориентированное программирование

  • 304 Часть

  • 1. Выберите

  • 4. Щелкните на кнопке

  • Если вы наследуете коды объекта

  • Таким образом, прием перегрузки позволяет использовать одни и те же имена для обозна- чения методов исходных и наследованных объектов.

  • должны быть наследованы для создания новых классов. 2. Нажмите клавишу , выберите команду или щелкните на значке View Code в окне Solution Explorer.

  • ключевым словом коды выбранного файла выглядят так

  • Для свойств и методов замените слово Public словом

  • Коды тех свойств и для которых вы оставите слово в новых объектах не могут быть изменены. 4. Выберите команду Class.

  • Add New Item. Наберите имя нового классов в поле Name и щелкните на кнопке Open. Visual Basic отобразит показанные ниже коды пустого класса, где вместо

  • 7. Наберите коды свойств и методов, которые должны быть перегружены, но вместо слова

  • Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев


    Скачать 7.1 Mb.
    НазваниеДиалектикамосква СанктПетербург Киев
    АнкорVisual Basic .NET для чайников - У. Вонг.pdf
    Дата29.05.2018
    Размер7.1 Mb.
    Формат файлаpdf
    Имя файлаVisual Basic .NET для чайников - У. Вонг.pdf
    ТипКнига
    #19767
    КатегорияИнформатика. Вычислительная техника
    страница28 из 30
    1   ...   22   23   24   25   26   27   28   29   30
    Глава
    Объектно-ориентированное программирование на практике
    299

    Объявление свойств объектов
    Свойства объектов представляют те данные, доступ к которым имеют все коды вашей программы. Любая часть программы может передать свойствам объектов новые значения и извлечь хранимые ими данные. Коды объявления свойств выглядят приблизительно так:
    Dim.
    As ТипДанных
    Public Property
    As ТипДанных
    НаззаниеСвойства =
    End Get
    Set
    Значение As ТипДанных)
    = Value
    End Set
    End Property
    Чтобы объявить свойство объекта, нужно создать локальную переменную в которой будет храниться значение свойства. Вместо имени можно присвоить любое другое имя.
    Тип этой переменной (ТипДанных) должен совпадать с типом данных, объявленным для свойства.
    если объявлено, что свойство будет содержать значения типа S t r i n g ,
    переменная также должна иметь тип S t r i n g .
    И. наконец, необходимо указать имя, посредством которого другие коды программы смо- гут иметь доступ к значениям свойств объектов (НазваниеСвойства).
    Например, если нужно объявить свойство объекта, именуемое словом Вектор и содер- жащее значения типа I n t e g e r , это можно сделать так:
    Dim ЗначВек As
    P u b l i c P r o p e r t y
    () As I n t e g e r
    Вектор = ЗначВек
    End Get
    Got
    ЗначВек = Value
    End Sot
    Property
    Вот как эти коды будут восприняты Visual Basic
    1. В первой строке объявляется о создании переменной ЗначЗек, которая мо- жет содержать значения типа I n t e g e r .
    2. Вторая строка говорит: "Создай свойство Вектор, которое будет представ- лять данные типа I n t e g e r " .
    3. Третья, четвертая и пятая строки дают указание:
    другая часть про- граммы хочет извлечь (Get)
    представляемые свойством Вектор, пе- редай ей значение переменной ЗначВек".
    4.
    седьмая и восьмая строки говорят:
    другая часть программы хочет передать (Set) новое значение свойству Вектор, сохрани его как зна- чение переменной
    5. А девятая строка сообщает: "На этом объявление свойства завершается"'.
    300 Часть VII. Объектно-ориентированное программирование

    Создание методов
    После того как все необходимые переменные и свойства объекта объявлены, можно при- ступать к написанию методов (другими словами, процедур и функций), которые будут что-то делать с данными, сохраненными в этом объекте.
    Методы — это те же процедуры и функции, процесс создания которых был рассмотрен в главах 27-29. Главным их отличием от таковых является то, что вместо слова P r i v a t e при объявлении процедуры или функции нужно использовать слово P u b l i c , например:
    P u b l i c F u n c t i o n
    () As I n t e g e r
    Набор инструкций
    End
    Затем, если нужно запустить в действие метод объекта, вы просто указываете имя объекта и название метода:
    га
    Этот код приказывает Visual Basic
    "Найди объект, именуемый и запусти процедуру, названную
    Пока эта процедура будет выполняться, основная программа не будет что именно она делает, поскольку процедура изолирована внутри своего объекта.
    Прежде чем приступить к написанию кодов
    Хотя вас, наверное, одолевает желание немедленно приступить к написанию кодов BASIC
    для создания модуля классов, вначале все же потратьте немного времени и продумайте об- щую его структуру.
    какая структура является оптимальной? Неизвестно. (Сейчас вы,
    наверное, подумали: "А стоило ли покупать эту книгу?")
    Дело в что выбор структуры модуля класса зависит от того, для каких целей этот класс создается. Являясь оптимальным для одной вариант структуры модуля мо- жет быть совершенно неприемлемым для другой. Но все же можно выделить несколько об- щих рекомендаций, которые работают практически во всех случаях.
    Чтобы решить, какими свойствами должны обладать модули классов, определи- те основные блоки данных, которыми должна оперировать программа. Если вы хотите написать программу, обрабатывающую данные о сотрудниках, модуль класса должен иметь такие свойства, как имя, адрес, телефон, возраст, стаж и т.п. Если вы создаете видеоигру, где по экрану ползают разные жучки, а игроки безжалостно их отстреливают, модуль класса должен содержать такие свойства,
    как координаты X и Y для определения позиции жучка на экране.
    Перед тем как создавать методы в модулях классов, определите, какие основ- ные действия должна выполнять программа в отношении данных, хранящихся в
    объектах. Например, если модуль класса содержит личные дан- ные сотрудников, нужно создать методы, позволяющие основной программе извлекать, сортировать и выводить их на печать. Если же модуль класса со- держит информацию о координатах ползающих по экрану насекомых, нужно создать методы, позволяющие основной программе заниматься перемещени- ем, отображением и удалением с экрана всей этой живности.
    После того как вы определите для себя весь перечень свойств и методов, ко- торые должны быть созданы, можете приступать к непосредственному во- площению своих идей в кодах
    Глава
    Объектно-ориентированное программирование на практике

    использование
    классов
    в ftftoifiaautax Visual Basic
    После того как вы пройдете через все перипетии процесса создания модулей классов, в основной программе нужно будет написать коды BASIC, использующие модули классов для создания реальных объектов. Как только объекты будут готовы, можно будет использовать методы объектов для сохранения и извлечения необходимой информации. Доступ к инфор- мации осуществляется через свойства объектов.
    Создание объектов
    Модуль класса— это еще не объект. Он является лишь средством, с помощью которого объекты создаются. Согласно терминологии объектно-ориентированного программирования,
    создание объектов называется также созданием экземпляров классов.
    Чтобы создать экземпляр класса, нужно создать объект, который будет представлять мо- дуль класса. Для этого используется ключевое слово New:
    Dim ИмяОбъекта As New НазваниеКласса
    Вот что эта строка означает для Visual Basic
    1. Слово Dim говорит: "Сейчас будет объявлено о создании объекта".
    2. Словом обозначается имя объекта.
    3. Слово New дает указание:
    новый объект, который будет представлять модуль класса, именуемый НазваниеКласса".
    НазваниеКласса — это то имя, которое вы дали файлу класса в момент его соз- дания. Если вы сами не укажете это имя, Visual Basic присвоит ему автомати- чески генерируемое имя наподобие C l a s s l .
    Использование объектов
    После того как объект создан, остается только использовать его для:
    |
    сохранения значений в свойствах объектов;
    %
    извлечения данных через свойства объектов;
    |
    манипулирования данными объектов с помощью методов объектов.
    Чтобы передать объекту данные, необходимо написать такой код:
    = Значение
    Извлечь информацию, хранящуюся в объекте, вам поможет код:
    А чтобы запустить метод объекта, наберите следующее:
    на
    Лучший способ понять что-то —• применить его, это "что-то", на практике. Если то, о чем вы прочитали в данной главе, кажется вам слишком сложным, попробуйте вместе с нами соз-
    302 Часть VII. Объектно-ориентированное программирование
    дать программу, отображающую на экране диалоговое окно, показанное на рис.
    Сама по себе эта программа достаточно проста, Она призвана продемонстрировать, как можно созда- вать модули классов, затем создавать объекты для представления данных, вызывать методы объектов для их обработки, и, наконец, извлекать обработанные данные.
    ч

    *
    *
    г
    Рис.
    Такое диалоговое
    будет
    отображать создаваемая программа
    В данной программе создаются файлы классов для представления местоположения улы- бающегося и грустного лиц. Каждый раз, когда пользователь щелкает на кнопке Move Smiley
    (Переместить улыбающееся лицо) или Move Frown (Переместить фустное лицо), эти кар- тинки начинают перемещаться. Ниже в таблице приведен список объектов пользовательского интерфейса, которые нужно создать для этой программы, и список значений, которые нужно присвоить их свойствам.
    Если вам по-прежнему трудно понять, что такое объектно-ориентированное про- граммирование и почему его нужно использовать, запомните хотя бы одно: его главная цель — помочь вам правильно организовать свои программы и снизить ве- роятность возникновения ошибок.
    Объект
    Значение
    1
    Button2
    Button3
    Image
    Name
    Image
    Name
    SizeMode
    Text
    Name
    Text
    Name
    Text
    Name
    Stretchlmage
    Stretchlmage
    Move Smiley
    Exit btnExit
    Move Frown
    Frown
    Глава
    Объектно-ориентированное программирование на практике 303

    Дважды щелкните на каждой из трех кнопок формы и создайте такие процедуры обработ- ки событий:
    Private Sub sender As System._
    Object, ByVal e As
    Handles
    Dim Smile As New Classl()
    =
    =
    End Sub
    Private Sub sender As System.
    ByVal e As
    Handles
    Frown As New Classl ( )
    Frown. Move
    Sub
    Private Sub sender As System._
    Object, ByVal e As
    Handles
    End Sub
    Создайте отдельный файл класса и наберите следующее:
    Public Class Classl
    Dim x, у As Integer
    Const Шаг = 10
    Public Property
    As Integer
    Get xspot x
    End Get
    Set{ByVal Value As Integer)
    x
    Value
    End Set
    End Property
    Public Property
    As Integer yspot у
    End Get
    (ByVal Value As Integer)
    у = Value
    End Set
    End Property
    Sub x = x
    Шаг у = у + Шаг
    End Sub
    End Class
    304 Часть
    Объектно-ориентированное программирование

    Глава 32
    Наследование и перегрузка
    наследования кодов элементов пользовательского интерфейса
    Наследование кодов
    > Перегрузка методов и свойств как и нормальные люди, — существа достаточно ленивые. Вме- сто того чтобы написать новую подпрограмму, они. скорее, скопируют уже создан- ную кем-то работающую процедуру и вставят ее в свою программу. Копированием сущест- вующих подпрограмм, во-первых, значительно экономится во-вторых, снижается ве- роятность ошибок.
    Однако ранее повторное использование одних и тех же кодов означало создание их от- дельных копий и физическое копирование в разные части программы. Очень скоро таких ко- пий накапливалось в программе довольно и если требовалось внести какие-то измене- ния в их работу, приходилось кропотливо просматривать коды всей программы.
    Более того, создание отдельных физических копий кодов что вы или кто-то другой могли случайно (или преднамеренно) внести в некоторые них изменения, нарушив таким об- разом работу программы. Итак, мы подходим к одному из наиболее существенных преимуществ объектно-ориентированного к наследованию кодов, которое позволяет повторно использовать фрагменты кодов без необходимости создания их отдельных копий.
    наследовании
    Один файл классов определяет один вид объектов. Используя один и тот же файл можно создать любое количество подобных объектов, но все они будут иметь одинаковые характеристики. Предположим, что нужно создать два объекта, характеристики которых должны быть почти одинаковыми, но все же немного различаться.
    Можно создать второй файл классов для второго но этот путь связан с времен- ными затратами и с повышением вероятности возникновения ошибок. (Дело в том, что напи- сание любых кодов связано с возможностью возникновения ошибок, поэтому всегда старай- тесь быть
    Вместе этого объектно-ориентированное программирование позволяет вам наследовать коды,
    что означает возможность создания нового объекта на базе
    Так, вместо создания нового классов для второго объекта, можно наследовать первый объект и добавить коды
    BASIC для определения различающихся характеристик (известных как свойства и методы).
    Таким образом, новый объект будет обладать всеми характеристиками старого объекта и иметь которыми вы его
    Обратите внимание, что если коды первого объекта работают правильно, то вам остается только без ошибок написать дополнительные коды, чтобы коды второго объекта также работали корректно.
    Глава 32. Наследование и перегрузка 305

    Наследуя правильно работающие коды, вы уменьшаете вероятность возникновения ошибок.
    создания
    новых
    Простейший пример наследования — это наследование готовых форм. При этом, по сути,
    создается новая копия уже существующей формы. Если вы вносите какие-то изменения в оригинальную форму, Visual Basic автоматически вносит те же изменения в форму, соз- данную путем наследования.
    Наследуя одну форму, вы создаете ее точную копию, которая содержит те же элементы пользовательского интерфейса (в частности кнопки и раскрывающиеся меню) и использует тс же обработки событий.
    Чтобы наследовать форму, вначале, разумеется, нужно ее создать. А наследуется исходная форма следующим образом.
    1. Выберите команду
    Inherited
    форму).
    Откроется диалоговое окно Add New показанное на рис.
    2. Щелкните на значке Inherited
    3. Щелкните в поле Name (Имя) и набернте имя новой формы.
    Какое бы имя вы ни набрали, не указывайте расширение, отличное от . VB. В
    противном случае Visual Basic может просто не распознать файл создавае- мой формы как часть вашей программы.
    4. Щелкните на кнопке Open (Открыть).
    Add New
    -
    Me
    Local
    Page
    Control
    Window.
    Service Component
    form
    on an
    Windows
    Open ]
    J
    Диалоговое
    Add New Item
    Откроется диалоговое окно Inheritance Picker (Источник наследования), пока- занное на рис. 32.2.
    306
    Часть VII. Объектно-ориентированное программирование

    Inheritance Picker
    Specify component to
    Component
    '
    component
    32,2. Диалоговое окно Inheritance Picker
    Выберите форму, которую вы хотите наследовать, и щелкните на кнопке ОК.
    Visual Basic создаст HOBVTO форму и отобразит ее имя в окне Solution Explorer.
    Если вы внесете какие-то изменения в исходную форму (выбранную на пятом ша- ге), выполните команду и все эти изменения будут перенесены и на другие формы, созданные из данной путем наследования.
    n
    Наследование форм (и сопутствующих им процедур обработки событий)— еще более простая задача, чем обычное создание пользовательского интерфейса. Но возможности Visual
    Basic этим не ограничиваются, и вы можете другие коды BASIC, сохранен- ные в файлах классов.
    Чтобы наследовать коды, нужно создать отдельный файл классов и вставить в него строку с ключевым словом I n h e r i t s и с именем файла классов, коды которого вы хотите наследо- вать. Например:
    P u b l i c C l a s s C l a s s l
    I n h e r i t s ИмяКласса
    End Class
    Вот как Visual Basic воспримет этот код:
    1. Первой строкой начинаются коды файла названного именем C l a s s l .
    2. Вторая строка говорит, что нужно наследовать коды BASIC из класса ИмяКласса.
    3. Третья строка указывает на окончание кодов класса C l a s s l .
    Для того чтобы продемонстрировать, как работают наследованные коды, рассмотрим сле- дующий пример. Предположим, вы создали файл классов который так;
    Class MainClass
    P r i v a t e
    As I n t e g e r
    P u b l i c P r o p e r t y
    As I n t e g e r
    Get
    D i r e c t i o n =
    End Get
    Set
    Value As I n t e g e r )
    = Value
    Глава 32. Наследование и перегрузка
    307

    End Set
    P r o p e r t y
    Если вам нужно создать новый файл классов (именуемый CopyClass), который будет наследовать колы файла коды нового файла могут выглядеть так:
    Public Class CopyClass
    Хотя новый файл классов может выглядеть пустым, на самом деле его коды абсолютно равнозначны следующим кодам:
    Public Class CopyClass
    P r i v a t e
    As
    Public P r o p e r t y
    As I n t e g e r
    End Get
    Set (3yVal Value As Integer)
    = Value
    End Set
    End Property
    End Class
    и
    При кодов BASIC существующего объекта для создания новою могут воз- никнуть некоторые проблемы. Что если исходный объект использует для обработки своих данных с
    же именем, которое вы хотите присвоить методу, работающему с данны- ми второго объекта?
    Возможным решением этой проблемы может быть присвоение методам всех объектов разных имен.
    такой путь поэтому Visual Basic предлагает вам другое решение: так называемую перегрузку (overriding).
    Смысл перегрузки состоит в том, что свойства и методы объектов, созданных путем на- могут быть модифицированы без внесения изменений в свойства и методы ис- ходного объекта.
    Например, вы можете создать объект, использующий метод K i l l H a r d D i s k , а затем путем наследования создать новый объект,
    разумеется, также будет иметь в своем арсенале метод с теми же кодами. Однако, воспользовавшись приемом перегрузки, в новом объекте можно оставить метод с тем же именем, но полностью изменить его коды.
    запустить какой-то метод для обработки данных укажите имя объекта и имя самого метода:
    Так, при необходимости вызвать метод K i l l H a r d D i s k для обработки данных именуемого V i r u s ,
    код
    308 Часть VII. Объектно-ориентированное программирование

    Если вы наследуете коды объекта V i r u s для создания нового объекта
    а затем за-
    хотите для обработки данных нового объекта вызвать метод
    наберите код
    Таким образом, прием перегрузки позволяет использовать одни и те же имена для обозна-
    чения
    методов исходных и наследованных объектов.
    Чтобы перегрузить какой-либо метод или свойство, выполните такие действия.
    В окне Solution Explorer щелкните на названии файла классов, коды которо-
    должны быть наследованы для создания новых классов.
    2. Нажмите клавишу , выберите команду
    или щелкните на
    значке View Code в окне Solution Explorer.
    Visual Basic
    отобразит на экране коды BASIC выбранного файла.
    3. Для каждого
    или метода, коды которого могут быть перегружены,
    замените слово P u b l i c ключевым словом
    коды выбранного файла выглядят так:
    Public Class
    '
    переменные
    Property
    As String объявляются
    Public Sub
    )
    '
    BASIC, обрабатывающие данные
    _
    Class
    Для свойств и методов замените слово Public словом
    e:
    Class
    ' Здесь объявляются переменные
    Property
    As String
    '
    End Property
    Sub
    Коды BASIC, обрабатывающие данные
    End
    End Class
    Коды тех свойств и
    для которых вы оставите слово
    в новых
    объектах не могут быть изменены.
    4. Выберите команду
    Class.
    Откроется диалоговое окно Add New Item.
    Наберите имя нового
    классов в поле Name и щелкните на кнопке Open.
    Visual Basic
    отобразит показанные ниже коды пустого класса, где вместо
    слова
    будет фигурировать указанное вами имя:
    Глава 32. Наследование и перегрузка 309

    Public Class
    End Class
    6. Наберите слово I n h e r i t s , а
    укажите название класса, коды которого
    должны быть наследованы.
    Например, если нужно наследовать коды класса, названного именем C l a s s l , на- берите
    P u b l i c C l a s s ClassName
    I n h e r i t s C l a s s l
    C l a s s
    7. Наберите коды свойств и методов, которые должны быть перегружены, но
    вместо слова P u b l i c используйте слово O v e r r i d e s .
    Слово Overrides используется при написании свойств и методов, коды которых будут отличаться от кодов свойств и методов исходного файла с теми именами:
    P u b l i c Class ClassName
    C l a s s l
    O v e r r i d e s P r o p e r t y
    As S t r i n g
    ' Здесь объявляются
    End P r o p e r t y
    O v e r r i d e s Sub
    ' Коды BASIC,
    данные
    End Sub
    End C l a s s
    Таким образом, при создании нового класса вам нужно будет написать коды только тех свойств и методов, которые должны отличаться от свойств и методов исходного класса.
    Если приемы наследования и перегрузки кодов кажутся вам не очень понятными,
    сразу же отказываться от их применения. Помните, что они действи- могут помочь вам оыстрее и оолее простым спосооом создавать корректно работающие программы, позволяя повторно использовать либо коды свойств и ме- тодов других объектов, либо только имена этих свойств и методов.
    и
    Чтобы лучше понять изложенный в этой главе материал, попробуйте набрать приведен- ные ниже коды и проследить за их выполнением. В примере используются форма и класс,
    созданные в главе
    Измените коды класса vb, заменив для метода слово словом
    P u b l i c C l a s s C l a s s l x, у As I n t e g e r
    Const
    P u b l i c P r o p e r t y xspot{> As I n t e g e r
    310 Часть VII. Объектно-ориентированное программирование

    Get xspot - x
    End Get
    Set: (ByVal Value As Integer]
    x = Value
    Set
    End Property
    Pub_ic
    As Integer
    Get yspot у
    End Get
    Value As Integer)
    у = Value
    End Set
    End Property
    Sub x = x + Шаг у
    у + Шаг
    End Sub
    End Class
    Затем создайте новый файл классов, назовите его CopyClass и наберите для него код,
    приведенный ниже:
    Public Class CopyClass
    I n h e r i t s C l a s s l
    Overrides Sub
    Move перегружен")
    End Sub
    End Class
    Наконец, измените коды в файле формы таким образом, чтобы был использован как ори- гинальный файл классов так и наследованный (CopyClass):
    Public Class
    I n h e r i t s
    P r i v a t e Sub sender
    ByVal e As
    Handles
    Smile As New
    =
    End Sub
    Sub
    (ByVal sender
    ByVal e As
    Handles
    Frown As New
    =
    1   ...   22   23   24   25   26   27   28   29   30


    написать администратору сайта