Лекция: Классы. Оператор new. Наследование. Visual Basic.NET

Классы играют важную роль в объектно-ориентированном программировании (а

также в ASP.NET). Класс определяется путем соединения в одно целое общего кода и

свойств — подобно тому, как из отдельных деталей собирают часы. В действительно-

сти .NET Framework состоит из очень многих классов. При создании страниц ASP.NET на самом деле вы в структуре .NET создаете объекты, определяемые на основе класса Page (страница).

 

Class имя

процедуры, функции и свойства

End Class

 

I: <%! Page Language=«VB» %>

I 2:

3: <script runat=«server»>

4: Class Clock

5: public Second as integer

6: public Minute as integer

7: public Hour as integer

8:

9: Sub SetTime (intSec as integer, intMin as integer, intHour as integer)

11: Second = intSec

12: Minute = intMin

13: Hour = intHour

14: end sub

15: End Class

16:

17: sub Page_Load(obj as object, e as eventargs)

18: dim objClock as new Clock

19:

20: objClock.Second =60

21:

22: end sub

23:

24: </script>

25:

26: <html><body>

27:

28: </bodyx/html>

 

Любые переменные, объявленные в классе так, как это делается в строках 5-7, называются его свойствами. В этом классе содержатся такие свойства, как Second (секунда), Minute (минута) и Hour (час). Кроме того, в нем имеется процедура для установки значений времени. В строке 20 свойство Second устанавливается равным 60.

 

Ключевое слово public (открытый), стоящее перед компонентом кода, сообщает

VB.NET, что этот компонент может быть виден и изменяем любым кодом, который на-

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

переменной. И наоборот, если используется ключевое слово private (закрытый), то со-

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

 

Метод SetTime (установить время) устанавливает свойства Second, Minute и Hour равными

значениям его параметров. В своей странице ASP.NET вы можете делать следующее:

Dim objClock as new Clock

objClock.SetTime(60, 4, 12)

objClock.Second = 5

 

Оператор new

Очень важным является ключевое слово new (новый): оно используется для ини-

циализации нового объекта. Использование этого ключевого слова аналогично выполнению следующего кода:

dim intNumber as Integer = 7

Кроме того, для инициализации объектной переменной можно использовать

dim objClock as Clock = New Clock

А это равносильно простому использованию ключевого слова new.

 

Наследование

Наследование — это важное понятие, относящееся к классам и объектно-

ориентированному программированию.

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

Clock. Свойства и методы первоначального Clock имеются у всех часов, по-

этому при создании новых часов просто добавляются любые нужные для их

работы свойства или методы. Эти действия называются наследованием.

Используя наследование, не нужно создавать полностью

новые классы, если уже есть какой-либо класс, который делает почти то же самое, что

вам нужно. Вот пример, в котором используется ваш первоначальный класс Clock:

 

Class AnalogClock: Inherits Clock

private ClockWound as Boolean = false

sub WindClock()

ClockWound = true

end sub

End Class

 

Путем наследования из первоначального класса Clock был создан новый класс,

AnalogClock (аналоговые часы). Он автоматически наследует свойства Second, Minute и

Hour, а также метод SetTime, поэтому заново создавать их не нужно. Надо только доба-

вить компоненты, специфичные для нового класса: значение типа Boolean для свойст-

ва ClockWound (часы заведены), а также метод, предназначенный для завода (wind) ча-

сов.

Теперь ваша страница ASP.NET должна выглядеть таким образом:

dim objAnalogClock as new AnalogClock

objAnalogClock.SetTime(60, 4, 12)

objAnalogClock.WindClock

Наследование способно заменять (override) родительские методы. Если по какой-то

причине метод SetTime у AnalogClock должен быть не таким, как у Clock, то для этого

надо просто создать другой метод под тем же именем:

Class AnalogClock: Inherits Clock

private ClockWound as Boolean = false

sub WindClock()

ClockWound = true

end sub

sub SetTime(intSec as integer, intMin as integer, _

intHour as integer)

Second = intSec

Minute = intMin

Hour = intHour — 12

end sub

End Class

Теперь objAnalogClock.SetTime будет использовать видоизмененную процедуру.

еще рефераты
Еще работы по информатике