- •Предисловие
- •Введение в объектно-ориентированное программирование Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм Объект
- •Наследование и полиморфизм
- •Агрегация
- •Апология ооп
- •Демонстрация преимущества объектно-ориентированного программирования на примере системы вывода графических изображений
- •Реализация с помощью структурных технологий
- •Реализация с помощью объектно-ориентированных технологий
- •Создание классов и объектов в actionscript 2.0
- •Основы создания классов и объектов
- •Объектно-ориентированные, объектные и объектно-базированные языки программирования
- •Квалификаторы доступа и методы доступа Get/Set Первая версия класса библиографических карточек
- •Вторая версия класса библиографических карточек
- •Задание 1
- •Наследование и полиморфизм в actionscript 2.0 Наследование
- •Полиморфизм
- •Задание 2
- •Литература
Квалификаторы доступа и методы доступа Get/Set Первая версия класса библиографических карточек
Рассмотрим более подробно возможности по созданию классов средствами ActionScript 2.0 на примере класса библиографических карточек. Пусть требуется создать класс библиографических карточек, описывающих монографии, которые должны содержать имя автора, название, издательство, год, число страниц. Кроме того, объекты этого класса должны формировать описание книги в виде одной строки. Код класса будет следующим:
class CBibliographicCard
{
//Автор
var m_sAuthor:String;
//Заглавие
var m_sTitle:String;
//Издательство
var m_sPublisher:String;
//Год издания
var m_nYear:Number;
//Число страници
var m_nPageCount:Number;
//Конструктор
function CBibliographicCard(sAuthor:String, sTitle:String,sPublisher:String, nYear:Number, nPage-Count:Number)
{
//Производим инициализацию атрибутов
m_sAuthor = sAuthor;
m sTitle = sTitle;
m_sPublisher = sPublisher;
m_nYear = nYear;
m_nPageCount = nPageCount;
}
function GetDescription():String
{
//Формируем описание монографии в виде одной строки
//и возвращаем эту стоку с помощью оператора return
return m_sAuthor + " " + m_sTitle + ". "
+ m_sPublisher + ", " + String(m_nYear)
+ ". " + String(m_nPageCount) + " стр.";
}
}
Проанализируйте вышеприведенный код. Такие свойства библиографической карточки как имя автора, название, издательство, год, число страниц, очевидно, следует представить в виде атрибутов. Требование же к объектам данного класса формировать описание в виде одной строки представлено методом. Очевидно также, почему такие атрибуты как имя автора, название и издательство являются переменными строкового типа, а год и число страниц - числового. Конструктор реализован аналогично конструктору рассмотренного выше класса точек. А вот реализацию метода, возвращающего описание книги GetDescription (), рассмотрим несколько подробней.
Так как метод должен возвратить строку, следует явно задать тип его возвращаемого значения String:
function GetDescription():String
Далее формируется строка при помощи оператора конкатенации, «склеивающего» несколько строк в единое целое. Но у нас помимо строковых переменных еще имеются и числовые. Поэтому необходимо провести преобразование типов, как это делается, например для атрибута, содержащего число страниц String (m_nPageCount). Назначение строковых констант (пробел, точка с пробелом и т. д.) - придать формируемой строке требуемую форму.
После того как строка сформирована, она возвращается оператором return.
Приведем пример использования рассмотренного класса, создав объект библиографической карточки конкретной книги и затем выведя на экран строку, являющуюся ее библиографическим описанием. var theCard:CBibliographicCard =
new CBibliographicCard("Таненбаум Э.",
"Компьютерные сети", "Питер", 2003, 992);
//Выводим на экран библиографическое описание в виде строки trace(theCard.GetDescription());
Как видим, вызов метода осуществляется аналогично обращению к атрибутам. Отличием же является то, что при вызове метода обязательно требуется указывать скобки, даже если не предполагается передавать что-либо этому методу в качестве аргументов.
