Автор: Екатерина Акбашева, 06 Декабря 2010 в 22:27, курсовая работа
Проект предназначен для получения информации о наличии в библиотеке соответствующих книг.
Информация о состоянии книжного фонда содержится в текстовом файле в виде последовательности групп записей <автор>, <название книги>, <инвентарный номер>, <читатель>, <срок возврата>. Файл поддерживается в актуальном состоянии в соответствии с динамикой получения – возврата книг. Файл создается клиентской частью программы. Чтение и обновление файла осуществляется с помощью специального класса, включенного в библиотеку программ.
Shared-переменные класса имеют область действия класса. К открытым Shared-членам класса можно обращаться по имени класса, используя операцию “точка”: <имя класса>.<имя Shared-члена>. Закрытые Shared-члены класса могут быть доступны только через методы класса. Shared-члены класса доступны, как только класс загружается в память во время выполнения. Они существуют на протяжении выполнения программы, даже когда не существуют никакие объекты этого класса. В этом случае для доступа к закрытому Shared-члену класса необходимо предоставлять открытый Shared-метод или свойство.
Shared-метод не имеет доступа к не используемым совместно (non-Shared) членам класса. В отличие от non-Shared-методов, Shared-методы не имеют ссылки Me.
Постоянные члены данных класса:
Чтобы создать постоянный член данных класса, нужно объявить его с помощью ключевого слова Const или ReadOnly. Член класса, объявленный как Const, должен инициализироваться в своем объявлении. Член класса, объявленный как ReadOnly, может инициализироваться либо в своем объявлении, либо в конструкторе класса. Ни Const- значение, ни ReadOnly-значение не могут быть изменены, после того как они инициализированы.
Члены класса, объявляемые как Const, могут инициализироваться только другими константными значениями, такими как целые, строковые литералы, символы и другие Const-члены. Эти значения присваиваются во время компиляции. Константные члены, которые не могут определяться во время компиляции, должны объявляться с помощью ключевого слова ReadOnly. Если значения ReadOnly-членам присваивается в конструкторе класса, то для инициализации Shared ReadOnly-членов необходимо использовать Shared-конструктор, а для инициализации non-Shared ReadOnly-членов используется отдельный non-Shared конструктор экземпляра класса.
Объектно-ориентированное программирование подразумевает поддержку объектами трех качеств: инкапсуляции, наследования и полиморфизма.
Инкапсуляция
представляет собой механизм, который
объединяет в классе данные и методы, манипулирующие
этими данными, и защищает их от внешнего
вмешательства или неправильного использования.
Другими словами, это означает сокрытие
деталей реализации класса внутри него
самого. Используя инкапсуляцию, классы
контролируют доступ к элементам объекта
так же, как в чертеже указываются части
здания, доступные для использования.
Каждый
класс
должен предоставлять некий
Инкапсуляция позволяет контролировать способы использования данных и процедур. Чтобы предотвратить выполнение методов класса или чтения и изменение данных в свойствах и полях внешними процедурами, можно использовать модификаторы доступа, например Private или Protected. Следует объявить внутренние сведения о классе как Private, чтобы предотвратить их использование вне класса. Этот прием и называется скрытие данных. Таким образом, инкапсуляция также упрощает последующие изменения кода.
Инкапсуляция означает, что группа связанных свойств, методов и других членов рассматривается как единый элемент или объект. Объекты способны контролировать изменение свойств и выполнение методов. Например, объект способен проверять значения, прежде чем разрешить изменение свойств. Без использования инкапсуляции необходимо объявить отдельно процедуры и переменные, а с инкапсуляцией можно использовать данные и процедуры в классе как модуль.
Данные класса должны изменятся или извлекаться только процедурами или методами Property — это одно из базовых правил инкапсуляции. Сокрытие сведений о реализации классов предотвращает их использование нежелательным образом и позволяет позже изменять такие элементы без риска возникновения проблем с совместимостью.
Public Class Manager
Inherits Data
Private IO As IIO
Private FFileName As String
Private FFound As Integer
Расширение возможностей функционала класса достигается с помощью наследования и полиморфизма.
Наследование позволяет использовать закрытые переменные некоторого класса в другом классе. Наследование(Inheritance) – это перенесение части функционала из других классов, то есть способ повторного использования программного обеспечения, при котором классы создаются путем заимствования данных и поведения уже существующих классов и обогащения этих классов новыми возможностями.
Public Class Manager
Inherits Data
Private IO As IIO
Private FFileName As String
Private FFound As Integer
или
Public Class Finder
Inherits Data
End Class
В VB.NET абсолютно все классы прямо или косвенно (через цепочку других классов) наследуются от класса System.Object. Факт наследования указывается служебным словом Inherits.
Наследование позволяет использовать в производном (дочернем) классе функционал базового (родительского) класса и в случае необходимости дополнять его, расширяя возможности базового класса за счет новых членов (переменных, методов, свойств, событий). Это значит, что можно разрабатывать класс и выполнять его отладку один раз, а затем повторно использовать его в качестве основы для других классов.
В
некоторых случаях свойство или
метод базового класса может быть
переопределен в производном
классе с соответствующей реализацией.
Производный класс может
Методы производного класса обычно могут ссылаться на открытые, защищенные и дружественные члены базового класса простым использованием имен этих членов. Если метод производного класса переопределяет член базового класса, к члену базового класса можно обращаться из производного класса, помещая ключевое слово MyBase и операцию “точка” перед именем члена базового класса. Посредством ссылки MyBase может происходить явный вызов конструктора базового класса.
Использование Protected – членов может привести к нежелательным проблемам, поэтому рекомендуется применять их в случаях, когда базовый класс должен предоставлять услугу только своим производным классам, т.е. не должен предоставлять эту услугу другим клиентам. В остальных случаях использование членов базового класса в производном классе не отличается от обычного: для обеспечения непротиворечивого состояния объекта доступ к Private – данным осуществляется с помощью non–Private – свойств и методов.
Конструкторы никогда не наследуются, они являются специфическими для класса, в котором определяются. При создании объекта производного класса вызывается конструктор базового класса. Если код не включает явного вызова конструктора базового класса, выполняется неявный вызов конструктора по умолчанию (без аргументов) базового класса. Это отмечено в соответствующих местах приведенного кода.
Для
изменения существующего
Программы могут обрабатывать
объекты всех классов в иерархии
классов обобщенно как объекты общего
базового класса. Объект производного
класса может рассматриваться как объект
его базового класса, что позволяет выполнять
различные манипуляции. Например, программа
может создать массив ссылок базового
класса, которые ссылаются на объекты
многих типов производных классов. Это
допускается, несмотря на тот факт, что
объекты производных классов являются
другими типами данных. Однако противоположное
не будет справедливым: объект базового
класса не является объектом какого –
либо из его производных классов.
Dim i As Integer
DB = New Manager(Application.
'вызываем событие кномки "открыть", чтобы обновить данные на форме
Button3_Click(sender, e)
Или
FFound = -1
FFileName = FileName
IO = New IIO
If Not IO.FileExist(FileName) Then
IO.FileCreate(FileName)
End If
Преобразование объектов производного класса в объекты базового класса осуществляется посредством присваивания ссылкам базового класса объектов производного класса, а также приведения типа ссылки производного класса к типу ссылки базового класса. Для преобразования встроенных типов в VB используются такие методы, как, например, ConvertToInt32, ConvertToDouble и т.д. Если приведение типов недопустимо, VB генерирует исключение InvalidCastException.
Абстрактные классы и методы:
Рассматривая класс как тип, мы предполагаем, что будут создаваться объекты этого типа. Однако встречаются случаи, когда полезно определять классы, для которых не будут создаваться какие-либо объекты. Такие классы называются абстрактными классами (abstract classes). Они обычно используются как базовые классы в ситуациях наследования. Эти классы не могут использоваться для создания объектов. Абстрактные классы являются неполными. Производные классы должны определять “недостающие части”. Абстрактные классы обычно содержат один или несколько абстрактных методов или абстрактных свойств, которые являются методами или свойствами, не предоставляющими реализацию, т.е. не позволяющими создавать объекты. Производные классы должны переопределять унаследованные абстрактные методы и свойства, чтобы было возможно создавать объекты этих производных классов.
Назначением абстрактного класса является предоставление соответствующего базового класса, от которого могут наследовать другие классы. Классы, из которых могут создаваться объекты, называются конкретными классами (Concrete Classes). Такие классы предоставляют реализации каждого метода и свойства, которые они определяют.
Информация о работе Проект программного обеспечения библиотеки