Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бИЛЕТЫ_GOSam.doc
Скачиваний:
0
Добавлен:
28.12.2019
Размер:
1.46 Mб
Скачать

Нумерованные списки

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

Нумерованный список задается при помощи тега <OL>:

<OL>

<LI>Первый элемент списка</LI> <LI>Последний элемент списка</LI>

</OL>

Вид номера определяется значением атрибута type в теге <OL>:0, А, а,l, i.

Естественную нумерацию элементов списка (с единицы) можно изменить при помощи атрибута start=n. Число n задает начальное значение нумерации. Если для нумерации используются буквы или римские цифры, то стартовое значение равно n-му элементу в системе нумерации (например, 4 означает D или IV).

Раскрывающейся список

Тег <select> позволяет создать элемент интерфейса в виде раскрывающегося списка, а также список с одним или множественным выбором. Конечный вид зависит от использования атрибута size тега <select>, который устанавливает высоту списка. Ширина списка определяется самым широким текстом, указанным в теге <option>, а также может изменяться с помощью стилей. Каждый пункт создается с помощью тега <option>, который должен быть вложен в контейнер<select>. Если планируется отправлять данные списка на сервер или обращение к нему через скрипты, то требуется поместить элемент <select> внутрь формы.

Синтаксис

<select>

<option>Пункт 1</option> <option>Пункт 2</option>

</select>

Ссылка (гиперссылка) – это возможность «связать» любой находящийся на данной странице фрагмент текста (слово, фразу или целый абзац) либо рисунок с другой Интернет-страницей или файлом данных (например, графическим файлом GIF или JPEG).

Переход внутри одного документа

Для задания гипертекстового перехода внутри документа используют два тега <A>. Первая тег с атрибутом href является источником перехода, вторая с атрибутом name – приемником.

<A href=#Ololo>Переходим на Ololo</A> <A name = Ololo>

Переход к другому документу или ссылки

Для того чтобы браузер загрузил в свое окно новый HTML-документ, нужно записать в программе ссылку при помощи тега <A> с атрибутом href=имя_файла/ссылки.

<A href = ololo.html>Переходим на страницу ololo </>

Заголовки <Нn>…</Нn>,

Заголовки. Обозначают начало раздела документа. В стандарте определено 6 уровней заголовков: от Н1 до Н6. Текст, окруженный тегами <Н1></Н1>, получается большим - это основной заголовок. Если текст окружен тегами <Н2></Н2>, то он выглядит несколько меньше (подзаголовок); текст внутри <НЗ></НЗ>еще меньше и так далее до <Н6></Н6>.

Параграф <P>

Тег <P> применяется для разделения текста на параграфы.

Перевод строки <BR>

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

Билет №5.

1)Полиморфизм и его реализация посредством раннего и позднего связывания. Примеры на языке C++.

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

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

Рассмотрим в качестве базового класса – класс форм Shape и несколько производных классов: Circl (круг), Rectangle (прямоугольник), Square (квадрат). Каждый из производных классов имеет свою функцию Draw, которая умеет рисовать соответствующую форму. Можно работать с объектами этих фигур, как с объектами базового класса Shape, не разбираясь в истинной природе каждого объекта.

class Shape{public: virtual void Draw(void);};

class Circl : public Shape{public: void Draw(void);};

class Rectangle : public Shape{public: void Draw(void);};

class Square : public Shape{public: void Draw(void);};

Shape * ShapeArray[10]; // создаём массив указателей базового класса

ShapeArray[0]=new Circl(); // загружаем массив указателями на объекты

ShapeArray[1]=new Rectangle(); разных фигур

ShapeArray[2]=new Square();

for(int i=0, i<3, i++)\

ShapeArray[i]->Draw(); // каждая фигура будет рисоваться своей функцией

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

Вирт.ф-ции предоставляют механизм позднего (отложенного) или динамического связывания. Любая нестатическая функция базового класса может быть сделана виртуальной, для чего используется ключевое слово virtual:

virtual тип имя_функции (списк_формальных _параметров);

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

Пример разрешения конфликтов множественного наследования:

class X : virtual public B { ... }

class Y : virtual public B { ... }

class Z : public X, public Y { ... }

Объект класса Z имеет только 1 экземпляр объекта класса B.

Конструкторы виртуальных базовых классов выполняются до выполнения конструкторов других базовых классов.

Пример class X : public Y, virtual public Z:

Cоздание объекта класса X приведет к следующей последовательности вызовов:

Z(); // virtual base class initialization

Y(); // non-virtual base class

X(); // derived class

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]