Проект программного обеспечения библиотеки

Автор: Екатерина Акбашева, 06 Декабря 2010 в 22:27, курсовая работа

Описание работы

Проект предназначен для получения информации о наличии в библиотеке соответствующих книг.
Информация о состоянии книжного фонда содержится в текстовом файле в виде последовательности групп записей <автор>, <название книги>, <инвентарный номер>, <читатель>, <срок возврата>. Файл поддерживается в актуальном состоянии в соответствии с динамикой получения – возврата книг. Файл создается клиентской частью программы. Чтение и обновление файла осуществляется с помощью специального класса, включенного в библиотеку программ.

Работа содержит 1 файл

Программирование.doc

— 1.13 Мб (Скачать)

    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.

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

    В некоторых случаях свойство или  метод базового класса может быть переопределен в производном  классе с соответствующей реализацией. Производный класс может переопределять метод базового класса, используя ту же сигнатуру. Когда имя метода упоминается в производном классе, вызывается версия производного класса. Метод базового класса необходимо объявлять как Overridable, если этот метод должен переопределяться в производном классе. Переопределение метода в производном классе производится с помощью ключевого слова Overrides.

    Методы  производного класса обычно могут ссылаться  на открытые, защищенные и дружественные  члены базового класса простым использованием имен этих членов. Если метод производного класса переопределяет член базового класса, к члену базового класса можно обращаться из производного класса, помещая ключевое слово MyBase и операцию “точка” перед именем члена базового класса. Посредством ссылки MyBase может происходить явный вызов конструктора базового класса.

    Использование Protected – членов может привести к нежелательным проблемам, поэтому рекомендуется применять их в случаях, когда базовый класс должен предоставлять услугу только своим производным классам, т.е. не должен предоставлять эту услугу другим клиентам. В остальных случаях использование членов базового класса в производном классе не отличается от обычного: для обеспечения непротиворечивого состояния объекта доступ к Private – данным осуществляется с помощью non–Private – свойств и методов.

    Конструкторы  никогда не наследуются, они являются специфическими для класса, в котором  определяются. При создании объекта  производного класса вызывается конструктор  базового класса. Если код не включает явного вызова конструктора базового класса, выполняется неявный вызов конструктора по умолчанию (без аргументов) базового класса.  Это отмечено в соответствующих местах приведенного кода.

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

      Программы могут обрабатывать  объекты всех классов в иерархии классов обобщенно как объекты общего базового класса. Объект производного класса может рассматриваться как объект его базового класса, что позволяет выполнять различные манипуляции. Например, программа может создать массив ссылок  базового класса, которые ссылаются на объекты многих типов производных классов. Это допускается, несмотря на тот факт, что объекты производных классов являются другими типами данных. Однако противоположное не будет справедливым: объект базового класса не является объектом какого – либо из его производных классов.  

          Dim i As Integer

        DB = New Manager(Application.StartupPath + "\db.txt")

        'вызываем событие кномки "открыть", чтобы обновить данные на форме

            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). Такие классы предоставляют реализации каждого метода и свойства, которые они определяют.

Информация о работе Проект программного обеспечения библиотеки