игра брюс 2048
Главная / Программирование / Объектно-ориентированный анализ и программирование / Тест 7

Объектно-ориентированный анализ и программирование - тест 7

Упражнение 1:
Номер 1
Из приведенных ниже высказываний укажите истинное высказывание:
В консольном приложении точкой входа в программу является метод, который может иметь любое имя, а его определение в исходном коде класса Program должно быть первым

Ответ:

 (1) который имеет имя Main и должен быть определен в классе Program 

 (2) который имеет имя Main и может быть определен в любом классе 

 (3) который имеет имя main и может быть определен в любом классе 

 (4) имя которого указывает пользователь при запуске приложения 


Номер 2
Из приведенных ниже высказываний укажите истинное высказывание:
Метод, определяющий точку входа в программу на языке C#  должен иметь имя main

Ответ:

 (1) WinMain 

 (2) MAIN 

 (3) Main 

 (4) ApplicationRun 


Номер 3
Из приведенных ниже высказываний укажите истинное высказывание: 
Исполняемый модуль в .NET Framework представлен

Ответ:

 (1) на промежуточном языке MSIL 

 (2) в виде команд процессора 

 (3) в виде команд операционной системы, установленной на компьютере 

 (4) в виде операторов языка Java 

 (5) в виде операторов языка C# 


Упражнение 2:
Номер 1
Укажите все истинные высказывания из приведенного перечня: “Сбор мусора” (Garbage Collection)  -   это

Ответ:

 (1) одно из устройств ЭВМ, на которой функционирует среда исполнения CLR 

 (2) одна из функций среды исполнения CLR 

 (3) удаление из файловой системы временных файлов, созданных при выполнении программы 

 (4) освобождение ранее выделенной для объекта области основной памяти в том случае, если выделенная область программой больше не используется 

 (5) принудительное освобождение ресурсов, ранее выделенных программе, при возникновении исключительной ситуации 


Номер 2
Укажите все истинные высказывания из приведенного перечня:
К функциям среды исполнения CLR относится

Ответ:

 (1) объединение всех исходных модулей на языке С# в один исходный модуль 

 (2) препроцессорная обработка текста на языке MSIL 

 (3) сборка мусора 

 (4) трансляция кода MSIL в коды на языке машинных команд процессора 

 (5) обработка исключений 


Номер 3
Укажите все истинные высказывания из приведенного перечня: Результатом трансляции исходной программы на языке C# может быть

Ответ:

 (1) исполняемый модуль на языке машинных команд процессора 

 (2) динамически компонуемая библиотека на языке машинных команд процессора  

 (3) динамически компонуемая библиотека на языке MSIL и метаданные 

 (4) исполняемый модуль на языке MSIL и метаданные 

 (5) программа на языке Visual Basic 


Упражнение 3:
Номер 1
Из приведенных ниже слов в качестве имен переменных в языке С# можно использовать

Ответ:

 (1) 111 

 (2) _12 

 (3) ценаТовара 

 (4) A?B 

 (5) B_C 


Номер 2
Из приведенных ниже слов в качестве имен методов в языке С# можно использовать

Ответ:

 (1) вычислить 

 (2) удалить 

 (3) double 

 (4) string 

 (5) string12 


Номер 3
Из приведенных ниже слов в качестве меток в языке С# можно использовать

Ответ:

 (1) 555 

 (2) 222 

 (3) METKA№2 

 (4) REP 

 (5) STOP 


Упражнение 4:
Номер 1
Литерал 25E1 определяет константу типа

Ответ:

 (1) float 

 (2) decimal 

 (3) double 

 (4) int 

 (5) string 


Номер 2
Литерал 8 определяет константу типа

Ответ:

 (1) char 

 (2) int 

 (3) string 

 (4) float 

 (5) double 


Номер 3
Литерал 9 определяет константу типа

Ответ:

 (1) char 

 (2) int 

 (3) string 

 (4) float 

 (5) decimal 


Упражнение 5:
Номер 1
В языке С# для хранения значения переменной типа char выделяется память объемом

Ответ:

 (1) 1 байт 

 (2) 2 байта 

 (3) 1 байт в тех случаях, когда значение переменной  

 (4) соответствует коду латинской буквы и 2 байта в остальных случаях 4 байта 

 (5) который спецификацией языка не определен и зависит от конкретной реализации транслятора 


Номер 2
В приведенном перечне типов укажите все типы, соответствующие целым числам без знака

Ответ:

 (1) byte 

 (2) long 

 (3) float 

 (4) decimal 

 (5) uint 


Номер 3
В приведенном перечне типов укажите все типы, соответствующие вещественным числам

Ответ:

 (1) float 

 (2) byte 

 (3) string 

 (4) long 

 (5) double 


Упражнение 6:
Номер 1
С помощью операции  инкремента в C# можно

Ответ:

 (1) увеличить значение переменной типа int на 1 

 (2) увеличить значение переменной типа float на 1 

 (3) увеличить целочисленную константу на 1 

 (4) увеличить вещественную константу на 1 

 (5) добавить к строке символов один символ, представляющий собой пробел 


Номер 2
В результате объявления int A = 10%4 + 4%2;  переменная A получит значение

Ответ:

 (1)

 (2)

 (3) 2.5 

 (4)

 (5) 0.5 


Номер 3
В результате объявления string S = "SUM=" + 5; переменная S получит значение

Ответ:

 (1) "5" 

 (2) "+5" 

 (3) "SUM5" 

 (4) "SUM=5" 

 (5) "SUM+5" 


Упражнение 7:
Номер 1
В программе объявлены переменные int A=5, B=7; Какие значения получат эти переменные после выполения оператора B =  - - A;

Ответ:

 (1) A=4 B=5 

 (2) A=4 B=4 

 (3) A=5 B=5 

 (4) A=4 B=7 

 (5) A=5 B=6 


Номер 2
В результате объявления string S = "SUM=" + 5 + 10; переменная S получит значение

Ответ:

 (1) "SUM=510" 

 (2) "SUM=15" 

 (3) "SUM15" 

 (4) "SUM=+5+10" 

 (5) "510" 


Номер 3
В программе объявлены переменные char A='1', B='2', в которых храняться коды букв цифр. Какие значения получат эти переменные после выполения оператора A = B++;

Ответ:

 (1) A='2' B='3' 

 (2) A='1' B='1' 

 (3) A='2' B='2' 

 (4) A='3' B='3' 

 (5) A='1' B='2' 


Упражнение 8:
Номер 1
Укажите все значения из приведенного ниже списка, подстановка каждого из которых вместо знаков подчеркивания в объявление переменной bool A = 5<3 || 20>__; приведет к установке переменной A в значение true

Ответ:

 (1) 12 

 (2) 25 

 (3) 20 

 (4) 15 

 (5) 19 


Номер 2
Укажите все значения из приведенного ниже списка, подстановка каждого из которых вместо знаков подчеркивания в объявление переменной bool A = 8<5 && 10>__; приведет к установке переменной A в значение false

Ответ:

 (1) 12 

 (2) 25 

 (3)

 (4)

 (5) 17 


Номер 3
На консоль будет выведено сообщение ЗАЧЕТ(8) при использовании в программе операторов

Ответ:

 (1) Console.Write("ЗАЧЕТ(8)"); 

 (2) Console.Write("ЗАЧЕТ + (8)"); 

 (3) Console.Write("ЗАЧЕТ" + "(8)"); 

 (4) Console.Write("ЗАЧЕТ" + "(" + "8" + ")"); 

 (5) Console.Write("ЗАЧЕТ"+"8"); 


Упражнение 9:
Номер 1
Переменная объявлена как int A; Укажите все допустимые варианты присваивания значения для переменной A

Ответ:

 (1) A = 5; 

 (2) A = '5'; 

 (3) A = "5"; 

 (4) A = 5.0; 

 (5) A = 5 = = 5; 


Номер 2
Переменная объявлена как bool  A; Укажите все допустимые варианты присваивания значения для переменной A

Ответ:

 (1) A = 1; 

 (2) A = true; 

 (3) A = 1 > 2; 

 (4) A = !false; 

 (5) A = "5"=="5"; 


Номер 3
Переменная объявлена как double A = double.Parse(Console.ReadLine()); При каких вариантах ввода символов с клавиатуры переменная A получит значение 2.0

Ответ:

 (1) 2,1 

 (2) "2" 

 (3)

 (4) 2.0 

 (5) 2,0 


Упражнение 10:
Номер 1
Оператор break используется

Ответ:

 (1) для перехода к следующему шагу цикла 

 (2) в качестве пустого оператора 

 (3) для выхода из метода 

 (4) для прекращения выполнения цикла 

 (5) ля выхода из case-ветви в операторе switch 


Номер 2
Оператор continue используется

Ответ:

 (1) в качестве пустого оператора 

 (2) для перехода к следующему шагу цикла 

 (3) для выхода из цикла 

 (4) для продолжения перебора case-ветвей в операторе switch 

 (5) для возврата из метода и продолжения программы с точки его вызова 


Номер 3
В программе объявлена переменная int S=0; Какое значение получит переменная S после выполнения оператора for(int I=1; I<=4; I=I+2) S=S+I;

Ответ:

 (1) 10 

 (2)

 (3)

 (4)

 (5)


Упражнение 11:
Номер 1
В программе объявлены переменные int S = 0, I=5; Какое значение получит переменная S после выполнения оператора do { S = S + I; I++; } while (I < 5);

Ответ:

 (1)

 (2)

 (3) 11 

 (4)

 (5)


Номер 2
В программе объявлены переменные int S = 5, I=10; Какое значение получит переменная S после выполнения оператора while(I<10) { S = I; I++; }

Ответ:

 (1)

 (2)

 (3) 10 

 (4) 11 

 (5)


Номер 3
После выполнения оператора for(int I=1; I!=2; I++,Console.Write(I+" ")); на консоль будет выведено

Ответ:

 (1)

 (2)

 (3) 1 2 

 (4) 1 3 

 (5)


Упражнение 12:
Номер 1
После выполнения оператора for(int I = 3; I <=4; Console.Write(I+" "), I++);  на консоль будет выведено

Ответ:

 (1)

 (2)

 (3) 3 4 

 (4)

 (5)


Номер 2
В программе объявлены переменные int I,K=0; Какое значение получит переменная K после выполнения оператора for(I=1;I<=5;I++) if(I%2==0) K++;

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 3
В программе объявлены переменные int I,K=0; Какое значение получит переменная K после выполнения оператора for(I=1;I<5;I++) if(I%2!=0) K+=I;

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Упражнение 13:
Номер 1
В программе объявлены переменные int I,K=0; Какое значение получит переменная K после выполнения оператора for(I=2; I<8;I+=3) K+=I;

Ответ:

 (1)

 (2)

 (3) 15 

 (4)

 (5)


Номер 2
В программе объявлены переменные double X=2,Y=1; Какое значение получит переменная Y после выполнения операторов if(X<3)Y=5; if(X<5) Y=7;

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 3
В программе объявлены переменные  int X=4,Y=2; Какое значение получит переменная Y после выполнения оператора if(X<3) Y=7; else Y=9;

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Упражнение 14:
Номер 1
В программе объявлены переменные  int S; int[] A=new int[]{5,6,7}; Какое значение получит переменная S после выполнения оператора S=A[1]+A[A.Length-1];

Ответ:

 (1) 12 

 (2) 13 

 (3) 11 

 (4) 18 

 (5)


Номер 2
В программе объявлена переменная char[,] A = new char[2,3]; Какое значение получит выражение A.Length

Ответ:

 (1)

 (2)

 (3) 12 

 (4)

 (5)


Номер 3
В программе объявлена переменная List<int> A=new List<int>(); Какое значение получит выражение A.Count после выполнения операторов  A.Add(1); A.Add(3);

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Упражнение 15:
Номер 1
.В программе объявлены переменные ArrayList A = new ArrayList(); int[] B = new int[] {2,3,4 };  Какое значение получит выражение A.Count после выполнения оператора  A.Add(B);

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


Номер 2
В программе объявлены переменные int[]A=new int[]{3,5,7}; int[]B; int C;  Какое значение получит переменная C после выполнения операторов B=A; Array.Reverse(B); C=A[0]+A[1]; 

Ответ:

 (1) 12 

 (2)

 (3)

 (4)

 (5)


Номер 3
В программе объявлены переменные char[] A = new char[] {'X','Y','Z'}; char[]B;  string C = ""; Какое значение получит переменная C после выполнения операторов B = A;  Array.Reverse(A);  C = C+B[0]+B[2];

Ответ:

 (1) "ZX" 

 (2) "XZ" 

 (3) "XY" 

 (4) "YX" 

 (5) "Z+X" 


Упражнение 16:
Номер 1
Из перечисленного ниже в сигнатуру перегруженного метода входит
модификатор public

Ответ:

 (1) имена параметров 

 (2) имя метода 

 (3) тип возвращаемого значения 

 (4) типы параметров 


Номер 2
Из перечисленного ниже в сигнатуру перегруженного метода входит

Ответ:

 (1) количество параметров 

 (2) модификаторы параметров 

 (3) модификатор static 

 (4) модификатор protected 

 (5) количество локальных переменных, объявленных в теле метода 


Номер 3
Заголовок метода имеет вид void MP(int A, ref int B, out int C, out int D,  int E). Для приема данных методом MP из вызывающего метода можно использовать параметры

Ответ:

 (1) A 

 (2) B 

 (3) C 

 (4) D 

 (5) E 


Упражнение 17:
Номер 1
Заголовок метода имеет вид void MS(int A, ref int B, out int C,  int D,  int E). Для возврата  данных методом MS в вызывающий метод  можно использовать параметры

Ответ:

 (1) A 

 (2) B 

 (3) C 

 (4) D 

 (5) E 


Номер 2
Метод определен как static void P(int A) {Console.Write(A);} В вызывающем методе объявлены локальные переменные int A=5, B=9;  Метод P и вызывающий метод определены в одном классе. Корректными вызовами метода P являются

Ответ:

 (1) P(A); 

 (2) P(B); 

 (3) P(ref A); 

 (4) P(88); 

 (5) P(A+B); 


Номер 3
Метод определен как static void P(int A) {Console.Write(A);} В вызывающем методе  объявлены локальные переменные int A, B=9; Непосредственно за объявлениями переменных выполняется вызов метода P.  Метод P и вызывающий метод определены в одном классе. Корректными вызовами метода P являются

Ответ:

 (1) P(A); 

 (2) P(B); 

 (3) P(5.0); 

 (4) P(7+8); 

 (5) P(A+B); 


Упражнение 18:
Номер 1
Локальная переменная – это переменная,

Ответ:

 (1) объявление которой имеет модификатор static 

 (2) которая имеет тип void независимо от места объявления 

 (3) которая имеет тип object независимо от места объявления 

 (4) которая объявлена в теле метода 

 (5) которая объявлена в заголовке метода 


Номер 2
Запрещено размещать определение метода

Ответ:

 (1) в классе, содержащем точку входа в программу 

 (2) в классе, не содержащем точки входа в программу 

 (3) в абстрактном классе 

 (4) вне класса 

 (5) внутри определения другого метода 


Номер 3
При отсутствии модификаторов в заголовке метода метод будет рассматриваться как 
общедоступный

Ответ:

 (1) закрытый 

 (2) защищенный 

 (3) статический 

 (4) метод объекта (объектный метод) 


Упражнение 19:
Номер 1
В классе ТОВАР для объявления поля используется оператор static double ЦЕНА;  Это означает, что

Ответ:

 (1) поле ЦЕНА будет полем объекта типа ТОВАР 

 (2) поле ЦЕНА будет полем класса ТОВАР 

 (3) объявление ошибочно (модификатор static в объявлении поля недопустим) 

 (4) объявление ошибочно (статическое поле обязательно должно иметь тип int

 (5) объявление ошибочно (объявление поля обязательно должно иметь инициализатор) 


Номер 2
В классе КАЛЬКУЛЯТОР для объявления поля используется оператор double PI;  Для создания объекта использован оператор КАЛЬКУЛЯТОР K = new КАЛЬКУЛЯТОР();  Это означает, что поле PI после создания объекта получит

Ответ:

 (1) минимальное значение типа double 

 (2) максимальное значение типа double 

 (3) нулевое значение 

 (4) неопределенное значение 

 (5) значение 3.14 


Номер 3
В классе ШАР для объявления поля используется оператор uint R=5; Для создания объекта использован оператор ШАР S = new ШАР();  Это означает, что поле R после создания объекта получит

Ответ:

 (1) неопределенное значение 

 (2) нулевое значение 

 (3) минимальное значение типа uint 

 (4) максимальное значение типа uint 

 (5) значение 5 


Упражнение 20:
Номер 1
Из определения class SETB{int X; public SETB(int B){X=B;}} следует, что метод SETB представляет собой

Ответ:

 (1) свойство, доступное только для записи 

 (2) свойство, доступное только для чтения 

 (3) свойство, доступное для записи и чтения 

 (4) конструктор 

 (5) деструктор 


Номер 2
Из определения class ТОЧКА{int X,Y; public ТОЧКА(int A){X=A; Y=A;}} следует, что правильной операцией создания объекта будет

Ответ:

 (1) new ТОЧКА(); 

 (2) new ТОЧКА(int.Parse("25")); 

 (3) new ТОЧКА(2,3); 

 (4) new ТОЧКА(5.5); 

 (5) new ТОЧКА[4]; 


Номер 3
Определен class ТОЧКА{int X=5; public int МЕСТО{ get{return X;}}} В методе Main создан объект ТОЧКА точка=new ТОЧКА(); и объявлена переменная int A;  Допутимой операцией с объектом в методе Main является

Ответ:

 (1) A = точка.МЕСТО; 

 (2) A = точка.МЕСТО(); 

 (3) точка.МЕСТО = 40; 

 (4) точка.МЕСТО(40); 

 (5) точка.МЕСТО++; 


Упражнение 21:
Номер 1
Классы ПОЕЗД и АВТОМОБИЛЬ определены как наследники класса ТРАНСПОРТ.  В классе ПОЕЗД объявлено поле protected int НОМЕР;  Поле НОМЕР доступно

Ответ:

 (1) в классе ПОЕЗД 

 (2) в классе ТРАНСПОРТ 

 (3) в классах, которые являются наследниками класса ПОЕЗД 

 (4) в классе АВТОМОБИЛЬ 

 (5) в классах, которые являются наследниками класса АВТОМОБИЛЬ 


Номер 2
Определены классы ТРАНСПОРТ, ПЕРЕВОЗКА, ПОЕЗД. Класс ПОЕЗД определен как наследник класса ТРАНСПОРТ.  В классе ТРАНСПОРТ объявлено поле protected double ГРУЗОПОДЬЕМНОСТЬ;  Поле ГРУЗОПОДЬЕМНОСТЬ  доступно

Ответ:

 (1) в классе ПЕРЕВОЗКА 

 (2) в классах, которые являются наследниками класса ПЕРЕВОЗКА 

 (3) в классе ТРАНСПОРТ 

 (4) в классе ПОЕЗД 

 (5) в классах, которые являются наследниками класса ПОЕЗД 


Номер 3
Определены классы ТРАНСПОРТ, ПЕРЕВОЗКА, ПОЕЗД, АВТОМОБИЛЬ. Классы ПОЕЗД и АВТОМОБИЛЬ определены как наследники класса ТРАНСПОРТ. В классе ТРАНСПОРТ объявлено поле public string ГРУЗ;  Поле ГРУЗ доступно

Ответ:

 (1) в классе ПОЕЗД 

 (2) в классе АВТОМОБИЛЬ 

 (3) в классе ПЕРЕВОЗКА 

 (4) в классах, которые являются наследниками класса ПЕРЕВОЗКА 

 (5) в классе Object 


Упражнение 22:
Номер 1
Класс СТУДЕНТ определен как наследник класса ЧЕЛОВЕК, а класс ВЫПУСКНИК – как наследник класса СТУДЕНТ. Создан объект ЧЕЛОВЕК P = new ВЫПУСКНИК(); Результатом вывода на консоль Console.Write(P.GetType().Name);  будет

Ответ:

 (1) Object 

 (2) ЧЕЛОВЕК_СТУДЕНТ_ВЫПУСКНИК 

 (3) ЧЕЛОВЕК 

 (4) СТУДЕНТ 

 (5) ВЫПУСКНИК 


Номер 2
Класс СТУДЕНТ определен как наследник класса ЧЕЛОВЕК. В методе Main создан объект СТУДЕНТ P = new СТУДЕНТ(); и объявлена переменная   string S; После выполнения оператора  if (P is ЧЕЛОВЕК) S = "ЧЕЛОВЕК"; else S="СТУДЕНТ";  переменная S получит значение

Ответ:

 (1) "СТУДЕНТ" 

 (2) "ЧЕЛОВЕК" 

 (3) "СТУДЕНТ_ЧЕЛОВЕК" 

 (4) "ЧЕЛОВЕК_СТУДЕНТ" 

 (5) Пустая строка 


Номер 3
Определен class ПРОДУКТ{public virtual string F(){return "Фрукт";}}  Класс ВИД является наследником класса ПРОДУКТ. В классе ВИД метод F переопределен как public new string F(){return "Яблоко";} В методе Main созданы объекты ПРОДУКТ  P1 = new ВИД();  ПРОДУКТ  P2 = new ВИД();  В результате выполнения оператора  string S=P1.F() + P2.F(); переменная S получит значение:

Ответ:

 (1) "ФруктФрукт" 

 (2) "ЯблокоЯблоко" 

 (3) "ФруктЯблоко" 

 (4) "ЯблокоФрукт" 

 (5) "Фрукт" 


Упражнение 23:
Номер 1
Определен class ПРОДУКТ{public virtual string F(){return "Овощ";}}  Класс ВИД является наследником класса ПРОДУКТ. В классе ВИД метод F переопределен как public new string F(){return "Свекла";} В методе Main созданы объекты ПРОДУКТ  P1 = new ВИД();  ВИД  P2 = new ВИД();  В результате выполнения оператора  string S= P1.F() + P2.F(); переменная S получит значение:

Ответ:

 (1) "ОвощОвощ" 

 (2) "СвеклаСвекла" 

 (3) "ОвощСвекла" 

 (4) "СвеклаОвощ" 

 (5) пустая строка 


Номер 2
Определен class ПРОДУКТ{public virtual string F(){return "Хлеб";}}  Класс ВИД является наследником класса ПРОДУКТ. В классе ВИД метод F переопределен как public override string F(){return "Батон";} В методе Main созданы объекты ПРОДУКТ  P1 = new ВИД();  ВИД  P2 = new ВИД();  В результате выполнения оператора  string S=P2.F() + P1.F(); переменная S получит значение:

Ответ:

 (1) "ХлебХлеб" 

 (2) "БатонХлеб" 

 (3) "ХлебБатон" 

 (4) "Батон" 

 (5) "БатонБатон" 


Номер 3
Класс, в заголовке которого не указаны модификаторы,

Ответ:

 (1) может быть предком (базовым классом) для нескольких классов – прямых наследников (производных классов) 

 (2) может иметь только один класс в качестве прямого предка 

 (3) определяет все поля класса как общедоступные 

 (4) определяет все методы класса как общедоступные 

 (5) может иметь несколько классов в качестве прямых предков 


Упражнение 24:
Номер 1
Исходный модуль содержит определение классов A и B:
class A   {   public  virtual string P() {return "ПЕТРОВ"; }   }
Класс B определен как наследник класса A. В классе B метод P()

Ответ:

 (1) может быть быть переопределен с модификатором new 

 (2) может быть переопределен с модификатором override 

 (3) может не переопределяться 

 (4) должен быть перегружен 

 (5) должен быть определен как абстрактный метод  


Номер 2
Класс должен быть определен как абстрактный класс если

Ответ:

 (1) хотя бы один из методов класса определен как абстрактный метод 

 (2) хотя бы один из методов класса определен как виртуальный метод 

 (3) все методы класса определены как виртуальные методы 

 (4) хотя бы одно из полей класса определено как поле только для чтения 

 (5) требуется запретить наследование от этого класса 


Номер 3
Из приведенных ниже высказываний укажите все истинные высказывания, относящиеся к абстрактным классам:

Ответ:

 (1) объект абстрактного класса создать невозможно 

 (2) абстрактный класс может быть использован в качестве базового класса 

 (3) класс – прямой потомок абстрактного класса, должен переопределить все абстрактные методы предка 

 (4) класс – прямой потомок абстрактного класса, должен быть в обязательном порядке определен как абстрактный класс 

 (5) определение абстрактного класса может содержать определение полей 




Главная / Программирование / Объектно-ориентированный анализ и программирование / Тест 7