Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Открытые параметры-массивы

Логические операторы | Целые отрицательные числа. | Мантисса меньше единицы и первая значащая цифра — не ноль. | Работа с числами | Работа со строками | Преобразование строк в числа | Побитовые (поразрядные)операторы | Побитовые операторы сдвига | Открытые и закрытые процедуры |


Читайте также:
  1. Механизм финансирования расходов бюджетов через лицевые счета открытые распорядителями и получателями средств бюджета в органах федерального казначейства
  2. Механизм финансирования расходов бюджетов через лицевые счета, открытые распорядителям и получателям средств бюджета в органах федерального казначейства
  3. Открытые высказывания о желании покончить с собой
  4. Открытые горные работы
  5. Открытые и закрытые процедуры
  6. Открытые лекции, мастер-классы, круглые столы, конференции
  7. Открытые материалы?

Формальный параметр, описанный с помощью синтаксиса:

array of T

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

array[0..N - 1] of T

где N - число элементов в фактическом параметре. По существу, диапазон индекса фактического параметра отображается в диапазон целых чисел от 0 до N - 1. Если фактический параметр - это прос­тая переменная типа T, то он интерпретируется как массив с одним элементом типа T.

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

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

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

При применении к открытому параметру-массиву стандартная функция Low возвращает 0, стандартная функция High возвращает ин­декс последнего элемента в фактическом параметре-массиве, а функ­ция SizeOf возвращает размер фактического параметра-массива.

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

procedure Clear(var A: array of Real);

var

I: Word; begin

for I:= 0 to High(A) do A[I]:= 0; end;

function Sum(const A: array of Real): Real;

var

I: Word;

S: Real; begin

S:= 0;

for I:= 0 to High(A) do S:= S + A[I];

Sum:= S; end;

 

10. Объектно-орентированное программирование: описание классов и объектов, инкапсуляция, наследование, полиморфизм, конструкторы и деструкторы. Примеры.

Объектно-ориентированное программирование - это стиль программирования ориентированный на работу с объектами. Объектно-ориентированный стиль программирования сейчас является доминирующим и почти все популярные языки программирования поддерживают его. Этот стиль стал популярным в основном благодаря тому, что он повторяет наш обычный способ мышления. В реальном виде мы можем рассматривать как объекты все, что нас окружает. Объектом может быть: компьютер, машина, самолет, дом, гитара. В языке программирования объектами являются строки, массивы, регулярные выражения и т.д.

Основные идеи объектно-ориентированного подхода опираются на следующие положения:

- Программа представляет собой модель некоторого реального процесса, части реального мира.

- Модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.

- Объект описывается набором свойств, значения которых определяют состояние объекта, и набором действий (методов), которые может выполнять объект.

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

 

В большинстве объектно-ориентированных языков программирования

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

 

В JavaScrip Объекты создаются и инициализируются двумя путями:

1) путем вызова специальных функций - конструкторов.

 

За оператором new должно быть указано имя функции конструктора. Оператор new

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

var today = new Date();

 

2) с помощью объектного литерала {}. Объектный литерал (также называемый инициализатором объекта) представляет собой список разделенных запятыми пар «свойство/значение», заключенный в фигурные скобки. Внутри пар роль разделителя играет двоеточие.

var point = { x:5, y:11 };

 

В данном случае использование скобок {} подразумевает вызов конструктора класса Object.

 

var point = new Object();

point.x = 5;

point.y = 11;

 

Данные записи равнозначны.

 

Общим в обоих случаях является использование зарезирвированного слова var, наличие идентификатора объекта (today в первом случае и point во втором случае). Создание объекта состоит из вызова конструктора класса и инициализации свойств объекта.

 

 

В современных объектно-ориентированных языках программирования каждый объект является представителем определенного класса. Класс представляет собой объявленный программистом составной тип данных, имеющий в составе:

1. Свойства объекта, задающие его состояние;

2. Методы, которые определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.

Описать класс означает определить все необходимые свойства класса и определить все необходимые методы.

Например, чтобы описать класс «Студент», необходимо сказать, что класс Студент обладает такими свойствами как Имя, Фамилия, Учебное заведение, Год поступления, Форма обучения и т.д. и может выполнять такие действия (методы), как Продлить студенческий билет, Сдать экзамен, Получить стипендию, Закончить обучение и т.д.

Например, на языке программирования ActionScript 3.0 класс Студент будет выглядеть следующим образом:

 

//Пакет в котором находится класс

package {

 

public class Student {

 

//Свойства класса

private var name:String;

private var surname:String;

private var university:Sting;

private var admissionYear:int;

private var studyForm:String;

protected var course:int;

 

//Конструктор класса

public function Student() {

 

}

 

//Продлить студенческий билет

private function prolongStudentCard():void

{

 

}

 

//Сдать экзамен

private function passExam():void

{

 

}

 

//Получить стипендию

private function getScholarship ():void

{

 

}

 

//Закончить обучение

private function graduate ():void

{

 

}

 

}

 

}

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования.

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

В приведенном выше примере класса Студент используются 3 модификатора доступа «private»,«public» и «protected». Модификатор «private» означает, что данное свойство или метод могут использоваться только внутри данного класса. Модификатор «public» означает, что данное свойство или метод доступны из любого другого класса, а «protected» – что данное свойство (метод) доступно из данного класса и любого класса-потомка. В каждом языке программирования определены собственные модификаторы доступа. Распространненой практикой среди программистов является первоначальное определение создаваемых свойств и методов как закрытых, то есть с модификатором private. Далее по мере разработки программы определенные свойства и методы открываются по мере необходимости.

Наследование – Классы могут наследоваться друг от друга. Класс-потомок получает все свойства и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель)

Например, класс “Студент”, описывающий абстрактного студента, может служить основой для построения классов “Студент 1 курса”, “Студент 2 курса” и т.д., которые обладают всеми свойствами студента вообще и некоторыми дополнительными свойствами, характеризующими студента конкретного курса.

 

Говоря о наследовании, мы сказали, что класс-потомок может переопределять уже имеющиеся свойства и методы класса-родителя. Данное переопределение и называется полиморфизмом.

 

Полиморфизм – возможность переопределения некоторых методов или свойств для задания им другого поведения. Например, класс Треугольник является потомком абстрактного класса Фигура, у класса Фигура есть свойство name и метод draw(), которые переопределяются в классе-потомке. Свойство name теперь имеет значение “Треугольник”, а метод draw() рисует треугольник по 3 точкам.

 

В объектно-ориентированном программировании конструктор класса (от англ. Constructor)— специальный блок инструкций, вызываемый при создании объекта.

Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов. Конструкторы часто выделяются наличием одинакового имени с именем класса, в котором объявляется.

Главная задача конструктора заключается в инициализации вновь созданного объекта – установке всех его свойств, которые необходимо инициализировать до того, как объект сможет использоваться программой. Создадим конструктор класса Freshman (Первокурсник), который является потомком для класса Студент, описанного выше. Свойство course доступно для данного класса и мы должны задать ему значение 1,перед тем как объект класса Freshman будет использован в программе.

public class Freshman extends Student{

 

//Конструктор класса

public function Freshman () {

this.course = 1;

}

}

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

 

Дестру́ктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).

Например, в С++ деструктор представляет собой специальную функцию, которую программа вызывает автоматически каждый раз при уничтожении объекта. Деструктор имеет такое же имя, как и класс объекта, но его имя предваряется символом тильды (~).


Дата добавления: 2015-08-20; просмотров: 61 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Многомерные массивы| Семинар 4 курс 1 – конспект выполнила РАСА.Рисунки Расы нарезал и вставил Святорусъ.

mybiblioteka.su - 2015-2024 год. (0.014 сек.)