Формализуем понятие
Иначе говоря,
Практическая важность концепции
Прежде всего, реализация концепции
Как следствие, механизм
Таким образом, пользователь, получающий программное обеспечение как сервис, оказывается изолированным от особенностей среды реализации.
Рассмотрев определение понятия
Оказывается, что понятие
При этом при интерпретации концепции
В случае же интерпретации концепции
Поясним более подробно реализацию механизма
Рассмотрим в достаточно обобщенном виде схему взаимодействия объекта и данных.
Вначале представим схему такого рода для традиционного императивного языка программирования (например C и Pascal). При этом в нашем рассуждении под термином "объект" будем понимать произвольный объект языка программирования, безотносительно к концепции объектно-ориентированного программирования.
В этом случае
В этой связи принципиальным недостатком ранних
В отличие от предыдущей схемы, при объектно-ориентированном подходе к проектированию и реализации программного обеспечения взаимодействие объектов языка программирования и конкретизирующих его данных реализуется принципиально иным образом. По существу, объект и данные составляют единое и неделимое целое.
Прежде всего, определение (или описание
Кроме того, среда проектирования и реализации программного обеспечения (например, Microsoft
Таким образом, концепция
Заметим, что
В то же время в практике программирования степень
Применительно к языку программирования C#
и характеризуются доступностью из произвольного места программы, для которого определено ) объектами по умолчанию.
С другой стороны, типы, описанные в составе .
Наконец, элементы классов и структур, в частности, .
Проиллюстрируем обсуждение использования и ) следующим содержательным примером фрагмента программы на языке C#:
public class Stack{
private int[] val;
// private используется
// и по умолчанию
private int top;
// private используется
// и по умолчанию
public Stack(){
...
}
public void Push(int x){
...
}
public int Pop(){
...
}
}
Как видно из приведенного примера, фрагмент программы на языке C# содержит описание класса стека Stack, реализованного на основе массива целочисленных элементов ( val ). Голова стека представляет собой целочисленное значение ( top ). Над стеком определены операции Stack ), а также вставки ( Push ) и удаления ( Pop ) элемента.
Как явствует из примера, класс Stack и все манипулирующие его объектами Stack, Push и Pop ) являются ), тогда как ), т.е. только из описания данного класса.
Заметим, что в приведенном выше примере фрагмента программы с описанием
Оказывается, что язык программирования C# располагает механизмами реализации дополнительных (или расширенных) по сравнению с базовыми
Рассмотрим более подробно особенности основных типов расширенных
К числу расширенных .
Кроме того, для описания доступности языкового объекта лишь из сборки с его описанием используется зарезервированное слово .
Наконец, для описания доступности языкового объекта непосредственно из класса с описанием данного объекта, его .
Проиллюстрируем обсуждение использования и ) следующим содержательным примером фрагмента программы на языке C#:
class Stack {
protected int[] values =
new int[32];
protected int top = -1;
public void Push(int x) {
...
}
public int Pop() {
...
}
}
class BetterStack : Stack {
public bool Contains(int x) {
foreach (int y in values)
if(x==y)
return true;
return false;
}
}
class Client {
Stack s = new Stack();
...
s.values[0];
...
// ошибка при компиляции!
}
Как видно из приведенного примера, фрагмент программы на языке C# содержит описание класса стека Stack (для хранения 32 целочисленных элементов и значением -1 в вершине), а также реализованного на его основе усовершенствованного класса стека BetterStack, дополнительно реализующего повторяющиеся элементы стека. В отличие от предыдущего примера, все Stack доступны как из данного класса, так и из классов, производных от него, поскольку описаны посредством ключевого слова .
После обсуждения использования (степеней)
). В случае структуры
Простейшей иллюстрацией описания C с целочисленным value:
class C {
int value = 0;
}
В случае
Простейшей иллюстрацией описания size, представляющей собой целочисленное значение двойной длины ( long ):
const long size = ((long)int.MaxValue+1)/4;
Заметим, что фрагмент
...(long) ...
в правой части присваивания представляет собой
Особым случаем реализации концепции .
Основные
Проиллюстрируем основные
readonly DateTime date;
Доступ к
... value ... size ... date ...
Доступ к c как конкретизации класса C ) реализуется с указанием
c = new C(); ... c.value ... c.size ... c.date ...
Рассмотрим подробнее особенности реализации механизмов доступа к
Прежде всего, необходимо отметить следующее фундаментальное положение, характеризующее
Проиллюстрируем это высказывание следующим фрагментом программы на языке C#:
class Rectangle {
static Color defaultColor;
//однократно для класса
static readonly int scale;
//однократно для класса
//статические константы
//недопустимо использовать
int x, y, width,height;
//однократно для объекта
...
}
Как видно из приведенного примера, при описании класса Rectangle со Color и scale и динамическими x, y, width и height,
Доступ к
... defaultColor ... scale ...
... Rectangle.defaultColor ...
Rectangle.scale ...
Продолжим иллюстрацию механизмов реализации концепции
class C {
int sum = 0, n = 0;
public void Add (int x){
// процедура
sum = sum + x; n++;
}
public float Mean() {
// функция
// (возвращает значение)
return (float)sum / n;
}
}
Приведенный пример представляет собой описание класса C, содержащего целочисленные sum и n, а также Add и Mean для суммирования и вычисления среднего значения, реализованные в форме процедуры и функции, соответственно.
Заметим, что Add и Mean класса C описаны как sum и n, в силу умолчаний, принятых в языке программирования C#, являются доступными локально ( ).
Заметим попутно, что функция (в терминологии языка C#) отличается от процедуры тем, что обязательно возвращает значение. Для определения процедуры, не возвращающей значения, в C# используется зарезервированное слово void.
Проиллюстрируем сказанное об
Предположим, что в предыдущем примере, описывающем C, содержащий целочисленные sum и n, а также Add и Mean, необходимо организовать доступ к элементам класса изнутри, а также из других классов.
Очевидно, что в силу C такое задание принципиально осуществимо.
При реализации доступа к элементам класса C изнутри данного класса достаточно указать
this.Add(3);
float x = Mean();
В то же время, при реализации механизма доступа к элементам класса C из других классов (внешних по отношению к данному) необходимо указывать
C c = new C();
c.Add(3);
float x = c.Mean();
Манипулирование
Например, в случае, если класс, содержащий статические
class Rectangle {
static Color defaultColor;
public static void ResetColor(){
defaultColor = Color.white;
}
}
доступ к
ResetColor();
а доступ к
Rectangle.ResetColor();
По результатам исследования концепции
Прежде всего, реализация концепции
Кроме того, механизм
Именно в силу последнего обстоятельства становится принципиально возможной реализация гибкого управления уровнем абстракции как для данных, так и для метаданных.
Наконец, концепция
Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [ 23, 34, 53, 63, 75].
Формализуем понятие
Иначе говоря,
Практическая важность концепции
Прежде всего, реализация концепции
Как следствие, механизм
Таким образом, пользователь, получающий программное обеспечение как сервис, оказывается изолированным от особенностей среды реализации.
Рассмотрев определение понятия
Оказывается, что понятие
При этом при интерпретации концепции
В случае же интерпретации концепции
Поясним более подробно реализацию механизма
Рассмотрим в достаточно обобщенном виде схему взаимодействия объекта и данных.
Вначале представим схему такого рода для традиционного императивного языка программирования (например C и Pascal). При этом в нашем рассуждении под термином "объект" будем понимать произвольный объект языка программирования, безотносительно к концепции объектно-ориентированного программирования.
В этом случае
В этой связи принципиальным недостатком ранних
В отличие от предыдущей схемы, при объектно-ориентированном подходе к проектированию и реализации программного обеспечения взаимодействие объектов языка программирования и конкретизирующих его данных реализуется принципиально иным образом. По существу, объект и данные составляют единое и неделимое целое.
Прежде всего, определение (или описание
Кроме того, среда проектирования и реализации программного обеспечения (например, Microsoft
Таким образом, концепция
Заметим, что
В то же время в практике программирования степень
Применительно к языку программирования C#
и характеризуются доступностью из произвольного места программы, для которого определено ) объектами по умолчанию.
С другой стороны, типы, описанные в составе .
Наконец, элементы классов и структур, в частности, .
Проиллюстрируем обсуждение использования и ) следующим содержательным примером фрагмента программы на языке C#:
public class Stack{
private int[] val;
// private используется
// и по умолчанию
private int top;
// private используется
// и по умолчанию
public Stack(){
...
}
public void Push(int x){
...
}
public int Pop(){
...
}
}
Как видно из приведенного примера, фрагмент программы на языке C# содержит описание класса стека Stack, реализованного на основе массива целочисленных элементов ( val ). Голова стека представляет собой целочисленное значение ( top ). Над стеком определены операции Stack ), а также вставки ( Push ) и удаления ( Pop ) элемента.
Как явствует из примера, класс Stack и все манипулирующие его объектами Stack, Push и Pop ) являются ), тогда как ), т.е. только из описания данного класса.
Заметим, что в приведенном выше примере фрагмента программы с описанием
Оказывается, что язык программирования C# располагает механизмами реализации дополнительных (или расширенных) по сравнению с базовыми
Рассмотрим более подробно особенности основных типов расширенных
К числу расширенных .
Кроме того, для описания доступности языкового объекта лишь из сборки с его описанием используется зарезервированное слово .
Наконец, для описания доступности языкового объекта непосредственно из класса с описанием данного объекта, его .
Проиллюстрируем обсуждение использования и ) следующим содержательным примером фрагмента программы на языке C#:
class Stack {
protected int[] values =
new int[32];
protected int top = -1;
public void Push(int x) {
...
}
public int Pop() {
...
}
}
class BetterStack : Stack {
public bool Contains(int x) {
foreach (int y in values)
if(x==y)
return true;
return false;
}
}
class Client {
Stack s = new Stack();
...
s.values[0];
...
// ошибка при компиляции!
}
Как видно из приведенного примера, фрагмент программы на языке C# содержит описание класса стека Stack (для хранения 32 целочисленных элементов и значением -1 в вершине), а также реализованного на его основе усовершенствованного класса стека BetterStack, дополнительно реализующего повторяющиеся элементы стека. В отличие от предыдущего примера, все Stack доступны как из данного класса, так и из классов, производных от него, поскольку описаны посредством ключевого слова .
После обсуждения использования (степеней)
). В случае структуры
Простейшей иллюстрацией описания C с целочисленным value:
class C {
int value = 0;
}
В случае
Простейшей иллюстрацией описания size, представляющей собой целочисленное значение двойной длины ( long ):
const long size = ((long)int.MaxValue+1)/4;
Заметим, что фрагмент
...(long) ...
в правой части присваивания представляет собой
Особым случаем реализации концепции .
Основные
Проиллюстрируем основные
readonly DateTime date;
Доступ к
... value ... size ... date ...
Доступ к c как конкретизации класса C ) реализуется с указанием
c = new C(); ... c.value ... c.size ... c.date ...
Рассмотрим подробнее особенности реализации механизмов доступа к
Прежде всего, необходимо отметить следующее фундаментальное положение, характеризующее
Проиллюстрируем это высказывание следующим фрагментом программы на языке C#:
class Rectangle {
static Color defaultColor;
//однократно для класса
static readonly int scale;
//однократно для класса
//статические константы
//недопустимо использовать
int x, y, width,height;
//однократно для объекта
...
}
Как видно из приведенного примера, при описании класса Rectangle со Color и scale и динамическими x, y, width и height,
Доступ к
... defaultColor ... scale ...
... Rectangle.defaultColor ...
Rectangle.scale ...
Продолжим иллюстрацию механизмов реализации концепции
class C {
int sum = 0, n = 0;
public void Add (int x){
// процедура
sum = sum + x; n++;
}
public float Mean() {
// функция
// (возвращает значение)
return (float)sum / n;
}
}
Приведенный пример представляет собой описание класса C, содержащего целочисленные sum и n, а также Add и Mean для суммирования и вычисления среднего значения, реализованные в форме процедуры и функции, соответственно.
Заметим, что Add и Mean класса C описаны как sum и n, в силу умолчаний, принятых в языке программирования C#, являются доступными локально ( ).
Заметим попутно, что функция (в терминологии языка C#) отличается от процедуры тем, что обязательно возвращает значение. Для определения процедуры, не возвращающей значения, в C# используется зарезервированное слово void.
Проиллюстрируем сказанное об
Предположим, что в предыдущем примере, описывающем C, содержащий целочисленные sum и n, а также Add и Mean, необходимо организовать доступ к элементам класса изнутри, а также из других классов.
Очевидно, что в силу C такое задание принципиально осуществимо.
При реализации доступа к элементам класса C изнутри данного класса достаточно указать
this.Add(3);
float x = Mean();
В то же время, при реализации механизма доступа к элементам класса C из других классов (внешних по отношению к данному) необходимо указывать
C c = new C();
c.Add(3);
float x = c.Mean();
Манипулирование
Например, в случае, если класс, содержащий статические
class Rectangle {
static Color defaultColor;
public static void ResetColor(){
defaultColor = Color.white;
}
}
доступ к
ResetColor();
а доступ к
Rectangle.ResetColor();
По результатам исследования концепции
Прежде всего, реализация концепции
Кроме того, механизм
Именно в силу последнего обстоятельства становится принципиально возможной реализация гибкого управления уровнем абстракции как для данных, так и для метаданных.
Наконец, концепция
Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [ 23, 34, 53, 63, 75].
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.