Объекты
До настоящего момента мы употребляли слово "объекты" в обычном неформальном смысле слова, как нечто, с чем мы имеем дело. А имели мы дело до настоящего момента
с числами, словами, битами и функциями. Теперь мы хотим перейти к формальному определению объекта и, чтобы не путать формальное понятие объекта с неформальным,
термин "объект" в формальном смысле слова мы будем писать курсивом. Но прежде, чем перейти к формальному определению, рассмотрим несколько примеров.
1.
Перейдите в редактор и напечатайте:
pp = {x: 5, y: 3};
show(pp.x);
show(pp.y);
Здесь pp - объект, pp.x и pp.y его элементы (элементы объекта часто ещё называют свойствами объекта).
2. Вот другой пример:
ppp = {a: 5, b: {aa: 33, bb, 44}};
show(ppp.a);
show(ppp.b.aa);
show(ppp.b.bb);
В этом примере один из элементов объекта ppp сам является непримитивным объектом ppp.b и у него есть свои элементы ppp.b.aa и ppp.b.bb.
Определение (в четыре этапа).
1. Числа, слова и биты являются объектами.
2. Функции, в которых аргументы и возвращаемое значение являются объектами, являются объектами.
3. Обозначениями называются пары (имя: значения), в которых имя - слово, а значение - объект.
4. Конечное множество обозначений, является объектом.
Чтобы создать объект, нужно напечатать команду:
obj = {name1: value1, name2: value2, ...}
здесь obj - имя вновь создаваемого объекта, name1, name2, ... - некоторые слова, value1, value2, ... - ранее созданные объекты. После того, как объект obj создан, объекты value1, value2, и т.д. получают новые имена: obj.name1 становится именем объекта value1, obj.name2 становится именем объекта value2, и т.д.
Коротко резюмируя, можно сказать, что любое конечное множество объектов можно назвать новым объектом и дать ему имя. Простейшим объектом является пара вещественных чисел: pp = {x: 5, y: 3} Число 5 получает имя pp.x, а число 3 получает имя pp.y. Сам же объект pp по существу является точкой на плоскости, имеющей кординаты pp.x и pp.y.
Как Вы видите из определения, элементом объекта может быть функция. Например, пусть
fun=function(x){
return(3*x);
}
- функция, которая просто умножает аргумент на число 3. Пусть
pp = {a: 3, b: fun};
Мы создали объект, в котором первый элемент равен числу 3, а второй элемент равен функции fun. Если после этих определений в редакторе мы напечатаем команды:
show(pp.a);
show(pp.b(5));
то увидим в консоли следующее:
pp.a = 3
pp.b(5) = 15
Перейдём к упражнениям. Создайте небольшую программу, в которой ключевое место - это функция, возвращающая непримитивный объект. Более подробно, начните программу так:
starttest;
fun=function(x){
а закончите так:
x=3.5;
show(fun(x).a);
show(fun(x).b);
Функция fun должна возвращать пару чисел: fun(x).a = 2*x и fun(x).b = 3*x. Действуйте!
1.
Перейдите в редактор и напечатайте:
pp = {x: 5, y: 3};
show(pp.x);
show(pp.y);
Здесь pp - объект, pp.x и pp.y его элементы (элементы объекта часто ещё называют свойствами объекта).
2. Вот другой пример:
ppp = {a: 5, b: {aa: 33, bb, 44}};
show(ppp.a);
show(ppp.b.aa);
show(ppp.b.bb);
В этом примере один из элементов объекта ppp сам является непримитивным объектом ppp.b и у него есть свои элементы ppp.b.aa и ppp.b.bb.
Определение (в четыре этапа).
1. Числа, слова и биты являются объектами.
2. Функции, в которых аргументы и возвращаемое значение являются объектами, являются объектами.
3. Обозначениями называются пары (имя: значения), в которых имя - слово, а значение - объект.
4. Конечное множество обозначений, является объектом.
Чтобы создать объект, нужно напечатать команду:
obj = {name1: value1, name2: value2, ...}
здесь obj - имя вновь создаваемого объекта, name1, name2, ... - некоторые слова, value1, value2, ... - ранее созданные объекты. После того, как объект obj создан, объекты value1, value2, и т.д. получают новые имена: obj.name1 становится именем объекта value1, obj.name2 становится именем объекта value2, и т.д.
Коротко резюмируя, можно сказать, что любое конечное множество объектов можно назвать новым объектом и дать ему имя. Простейшим объектом является пара вещественных чисел: pp = {x: 5, y: 3} Число 5 получает имя pp.x, а число 3 получает имя pp.y. Сам же объект pp по существу является точкой на плоскости, имеющей кординаты pp.x и pp.y.
Как Вы видите из определения, элементом объекта может быть функция. Например, пусть
fun=function(x){
return(3*x);
}
- функция, которая просто умножает аргумент на число 3. Пусть
pp = {a: 3, b: fun};
Мы создали объект, в котором первый элемент равен числу 3, а второй элемент равен функции fun. Если после этих определений в редакторе мы напечатаем команды:
show(pp.a);
show(pp.b(5));
то увидим в консоли следующее:
pp.a = 3
pp.b(5) = 15
Перейдём к упражнениям. Создайте небольшую программу, в которой ключевое место - это функция, возвращающая непримитивный объект. Более подробно, начните программу так:
starttest;
fun=function(x){
а закончите так:
x=3.5;
show(fun(x).a);
show(fun(x).b);
Функция fun должна возвращать пару чисел: fun(x).a = 2*x и fun(x).b = 3*x. Действуйте!