C#_ ООП и классы



Исходный модуль содержит код:

internal class Point { public double x,y; public Point(double x, double y) { this.x = x; this.y = y; } public static void Move(double d){ x+=d; y+=d;} } class Program { static void Main() { Point p = new Point(1,1); Point.Move(2); } }

Метод Main разрабатывался для перемещения точки по обеим координатам на 2.

Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:

  • тип Point не доступен из класса Program
  • значение полей x и y не определено
  • (Правильный ответ) метод Move не может обращаться к полям объекта
  • в классе Point не определен конструктор без параметров
  • метод Move должен вызываться как метод объекта, а не метод класса

Исходный модуль содержит определения:

struct Лампочка { public int мощность; public Лампочка(int мощность){this.мощность=мощность;} }class Прибор { public Лампочка[] лам; public Прибор(Лампочка[] лам) { this.лам = лам;} public int Мощность { get { int s=0; for (int i = 0; i < лам.Length; i++) s += лам[i].мощность; return s; } } }

В классе Program определен метод Main, в теле которого находится код:

Лампочка л1 = new Лампочка(50);Лампочка л2 = new Лампочка(100); Лампочка[] лам = new Лампочка[] { л1, л2 }; Прибор пр1=new Прибор(лам); л2 = л1; Прибор пр2=new Прибор(лам); System.Console.WriteLine(пр1.Мощность + пр2.Мощность);

Укажите результат вывода на консоль после выполнения метода Main():

  • (Правильный ответ) 300
  • 250
  • 400
  • 100
  • 200

Проанализируйте приведенный код.

delegate void MyEventHandler(ref int a); class MyEvent { public event MyEventHandler SomeEvent; public void OnSomeEvent(ref int d) { if (SomeEvent != null) SomeEvent(ref d); } }class EventTest{ static void Handler1(ref int b) { b = 2 * b; } static void Handler2(ref int c) { c = c + 12; Handler1(ref c);} public static void Main() { MyEvent evt = new MyEvent(); int a = int.Parse(System.Console.ReadLine()); if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1); else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2); evt.OnSomeEvent(ref a); System.Console.WriteLine(a); } }

Пользователь собирается после запуска программы ввести число -5. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • программа завершится аварийно
  • 7
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) 14
  • -5

Приведенному ниже коду доступно пространство имен System.

class ExceptA : ApplicationException { } class ExceptB : ExceptA { } public static void Main() { string a = Console.ReadLine(); string b = Console.ReadLine(); try { if (a == «»end»») throw new ExceptA(); else if (b == «»exit»») throw new ExceptB(); else throw new Exception(); } catch (ExceptB) { Console.Write(«» Исключение-1″»); } catch (ExceptA) { Console.Write(«» Исключение-2″»); } catch (Exception){ Console.Write(«» Исключение-3″»); } }

Пользователь собирается запустить программу и ввести cont и exit. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • Исключение-1 Исключение-3
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) Исключение-1
  • Исключение-3
  • Исключение-1 Исключение-2

Программа предназначена для присвоения переменной t класса B значения 8 :

class A{ static public B b = null; public A() { B b = new B(); } public class B { static public int r; public int t;} }class Test{ public static void Main() { A a = new A(); ___________ }}

Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:

  • B.t = 8;
  • (Правильный ответ) A.b.t = 4;
  • a.B.t = 8;
  • a.b.t = 8;
  • A.B.t = 8;

Проанализируйте приведенный код.

struct Auto { public string марка; public Auto(string m) { марка = m; }}class Водитель{ private string фамилия; private Auto марка; public Водитель(string фам, Auto м) { фамилия = фам; марка = м; } public override string ToString() { return string.Format(«»{0} имеет {1}»»,фамилия, марка.марка) ; } }class Program{ static void Main(string[] args) { Водитель[] водители = new Водитель[2]; Auto auto1 = new Auto(«»Мерседес»»); Auto auto2 = new Auto(«»Тойота»»); auto2 = auto1; водители[0] = new Водитель(«»Иванов»», auto1); водители[1] = new Водитель(«»Петров»», auto2); System.Console.WriteLine(водители[1]);} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • Иванов имеет Мерседес
  • Петров имеет Форд
  • (Правильный ответ) Петров имеет Мерседес
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • программа завершится аварийно

Исходный модуль содержит определение типов Газета, Журнал и Program:

struct Газета{ public int Страницы; }struct Журнал{ public int Страницы; public override string ToString() { return Страницы.ToString(); }}

В классе Program определен метод Main, в теле которого находится код:

Газета a; Журнал b;a.Страницы=20; b.Страницы =30;System.Console.Write(a.ToString() + «» «» + b.ToString());

Укажите результат вывода на консоль после выполнения метода Main():

  • (Правильный ответ) Газета 30
  • при запуске программы фиксируется ошибка: в структуре невозможно переопределить метод ToString()
  • Газета Журнал
  • 20 Журнал
  • 50

Программа предназначена для вычисления и вывода квадрата числа 3:

public delegate double F( double x);class A { public int F(int x) { return x * x; } }class B { public static double F(double x) { return x * x; } }class Program{ static void Main() { F f = new F( _____ ); System.Console.WriteLine(f(3)); }}

Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу, решающую эту задачу:

  • A.F
  • (Правильный ответ) B.F
  • new A().F
  • B.F()
  • new B().F

Исходный модуль содержит код:

class Room { private int nom1; public int nom2; public Room(int a, int b){ nom1 = a; nom2 = b; } public int Nom { get { return nom1 * 100 + nom2; } set { if (value<5555) {nom1 = value/100; nom2 = value%100; }} } } class Program { static void Main() { Room r = new Room(12,45); r.Nom = 4431; System.Console.Write(«»{0} «», r.Nom); } }

Укажите результат вывода на консоль после выполнения метода Main():

  • 1245
  • (Правильный ответ) 4431
  • 4445
  • 1231

Исходный модуль содержит определения:

interface IСмена { void Сменить(); }class Переключатель: IСмена{ bool s; public Переключатель(bool s){this.s = s;} public void Сменить() { s = !s; System.Console.Write(«» «» + s); }}class Счетчик : IСмена{ int s; public Счетчик(int s) { this.s = s; } public void Сменить() { s—; System.Console.Write(«» «» + s); }}

В этом же модуле определен класс Program c методом Main(), в котором содержится следующий код:

IСмена a = new Переключатель(true);IСмена b = new Счетчик(9),c;c = b; a.Сменить(); b.Сменить(); b = a; b.Сменить(); b = c; b.Сменить();

Укажите результат вывода на консоль после выполнения метода Main():

  • при запуске фиксируется синтаксическая ошибка, указывающая на несовместимость типов при объявлении переменных в методе Main()
  • False 8 7 6
  • 8 7 6 False
  • True 8 False 7
  • (Правильный ответ) False 8 True 7

Проанализируйте приведенный код.

struct Auto { public string марка; public Auto(string m) { марка = m; }}class Водитель{ private string фамилия; private Auto марка; public Водитель(string фам, Auto м) { фамилия = фам; марка = м; } public override string ToString() { return string.Format(«»{0}у нравится {1}»»,фамилия, марка.марка) ; } }class Program{ static void Main(string[] args) { Водитель[] водители = new Водитель[2]; Auto auto1 = new Auto(«»Мерседес»»); Auto auto2 = new Auto(«»Тойота»»); водители[0] = new Водитель(«»Иванов»», auto1); водители[1] = new Водитель(«»Петров»», auto2); auto2.марка = «»Форд»»; System.Console.WriteLine(водители[1]);} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • программа завершится аварийно
  • Петрову нравится Форд
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) Петрову нравится Тойота
  • Иванову нравится Мерседес

Исходный модуль содержит код:

class Сотрудник{ private int id; private float зарплата; public Сотрудник(int i, float z) { id = i; зарплата = z; } public float Зарплата(int номер) { return номер < id ? зарплата : -1; } public void Зарплата(int номер, ref float зарпл) { if (номер < id) { float зрпл = зарплата; зарплата = зарпл; зарпл = зрпл; } } }class Program{ static void Main() { Сотрудник Иванов = new Сотрудник(12, 40000.0f); float z = 45000.0f; Иванов.Зарплата(10, ref z); System.Console.Write(«»Зарплата Иванова = «» + z);} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) 40000
  • 45000
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • 20000
  • -1

Проанализируйте приведенный код.

delegate void MyEventHandler(ref int a); class MyEvent { public event MyEventHandler SomeEvent; public void OnSomeEvent(ref int d) { if (SomeEvent != null) SomeEvent(ref d); } }class EventTest{ static void Handler1(ref int b) { b = 2 * b; } static void Handler2(ref int c) { c = c + 12; Handler1(ref c);} public static void Main() { MyEvent evt = new MyEvent(); int a = int.Parse(System.Console.ReadLine()); if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1); else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2); evt.OnSomeEvent(ref a); System.Console.WriteLine(a); } }

Пользователь собирается после запуска программы ввести цифру 0. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) 0
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • программа завершится аварийно
  • 24
  • 12

Программа предназначена для присвоения переменной r класса B значения 4 :

class A{ public B b = null; public A() { B b = new B(); } public class B { static public int r; public int t;} }class Test{ public static void Main() { A a = new A(); ___________ }}

Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:

  • B.r = 4;
  • a.B.r = 4;
  • A.b.r = 4;
  • (Правильный ответ) A.B.r = 4;
  • a.b.r = 4;

В классе Test определен приведенный ниже код:

public delegate int CallBackMethod(int a1, int a2); public static void Main() { int s = 0; s = CallMethod(new CallBackMethod(CBMethod)); System.Console.WriteLine(s); } public static int CallMethod(CallBackMethod cbMethod) { return cbMethod(11, 22); } public static int CBMethod(int a1, int a2) { return a1 + a2; }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • программа завершится аварийно
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) 33
  • Test.CallMethod
  • 0;

Приведенному ниже коду доступно пространство имен System.

class ExceptA : ApplicationException { } class ExceptB : ExceptA { } public static void Main() { string a = Console.ReadLine(); string b = Console.ReadLine(); try { if (a == «»end»») throw new ExceptA(); else if (b == «»exit»») throw new ExceptB(); else throw new Exception(); } catch (ExceptB) { Console.Write(«» Исключение-1″»); } catch (ExceptA) { Console.Write(«» Исключение-2″»); } catch (Exception){ Console.Write(«» Исключение-3″»); } }

Пользователь собирается после запуска программы ввести end и cont. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • Исключение-2 Исключение-3
  • Исключение-3
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) Исключение-2
  • Исключение-1 Исключение-2

Сборка Assembly2.cs, приведенная ниже:

class Test3{ static void Main() { ClassUser user = new ClassUser(); int count = user.count; System.Console.Write(«»count=»» + count); }}

ссылается на подключенную сборку Assembly1.cs, которая имеет следующий код:

internal class ClassUser{ public int count = 10; }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • count=0
  • программа не выполнится, так как сборка Assembly2.cs создает объект user, в то время как класс ClassUser не принадлежит сборке Assembly2.cs
  • count=10
  • (Правильный ответ) будет выдано сообщение об ошибке компиляции, так как класс ClassUser недоступен в соответствии с его модификатором доступа

Исходный модуль содержит код классов ЧЕЛОВЕК,СОТРУДНИК и Program:

class ЧЕЛОВЕК { string фамилия; public ЧЕЛОВЕК(string фамилия) {this.фамилия = фамилия;} public string ФАМ { get {return фамилия; } } } class СОТРУДНИК:ЧЕЛОВЕК { string должность; public СОТРУДНИК(string фамилия, string должность):base(фамилия) { this.должность = должность; } public string ДОЛ() { return должность; } }

В классе Program определен метод Main, в теле которого находится код:

СОТРУДНИК P = new СОТРУДНИК(«»Петров»»,»»Кассир»»); System.Console.Write(«»{0} {1}»», ______________ );

Требуется вывести фамилию и должность сотрудника. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:

  • P.ФАМ(), P.ДОЛ
  • P.фамилия, P.ДОЛ()
  • P.ФАМ, ((ЧЕЛОВЕК)P).ДОЛ()
  • (Правильный ответ) P.ФАМ, P.ДОЛ()

Проанализируйте приведенный код.

abstract class Rectangle{ public double x=10, y=20; public Rectangle(double x, double y) { this.x = x; this.y = y; } abstract public int Zoom(int d); public double Zoom(double d) { x += d; y += d; return x * y; }}class Параллепипед : Rectangle{ public double z; public Параллепипед(double x, double y, double z) : base (x, y) { this.z = z; }}class Program { static void Main() { Параллепипед парал = new Параллепипед(6, 8, 10); парал.Zoom(-5); System.Console.Write(«»{0} {1} {2}»», парал.x, парал.y, парал.z);} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) будет обнаружена синтаксическая ошибка, связанная с тем, что класс Параллепипед не переопределяет абстрактный метод Zoom
  • 1 3 10
  • 1 3 5
  • 5 15 10
  • программа завершится аварийно

Приведенному ниже коду доступны пространства имен System и System.Collections.

public static void Main() { ArrayList al = new ArrayList(); al.Add(«»Иванов»»); al.Add(«»Петров»»); al.Add(3.1415f); al.Add(«»Ларин»»); foreach (string str in al) Console.Write(str + «» «»); }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • Иванов Петров Ларин
  • программа завершится аварийно в момент добавления в коллекцию числа вместо фамилии
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) программа завершится аварийно в цикле foreach
  • Иванов Петров 3,1415 Ларин

Проанализируйте приведенный ниже код.

class a{ static void Main() { int a = 0; try { a = Devide(a); } catch (System.SystemException) { System.Console.Write(«» Ошибка в данных! «»); goto M; } finally { System.Console.Write(«» Программа завершена!»»); } M: System.Console.WriteLine(«» a=»» + a); } static int Devide(int b) { if (b == 0) throw new System.FormatException(); else b = 100 / b; return b;} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) Ошибка в данных! Программа завершена! a=0
  • a=0
  • программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что из блока catch не допускается выход с помощью оператора goto
  • Ошибка в данных!
  • Ошибка в данных! Программа завершена!

Исходный модуль содержит код:

internal class Rectangle{ public double width, hight; public void Zoom(double d) { width += d; hight += d; } public int Rectangle(double width, double hight) { this.width = width; this.hight = hight; return width * hight;}}class Program{ static void Main() { Rectangle p = new Rectangle(10, 20); p.Zoom(-5); System.Console.Write(«»{0} {1}»», p.width, p.hight);} }

Метод Main разрабатывался для изменения размера прямоугольника.

Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:

  • тип значения, возвращаемого методом Rectangle, должен быть double
  • (Правильный ответ) конструктор не может возвращать значение
  • конструктор не может следовать за методами класса
  • метод Zoom должен вызываться как метод класса, а не метод объекта
  • статический метод Main не может обращаться к полям объекта

Исходный модуль содержит классы A, B и Program:

class A{ public virtual string F1(){ return «»1″»; } public virtual string F2(){ return «»2″»; } }class B:A{ public new string F1() { return «»3″»; } public override string F2() { return «»4″»; } }

В классе Program определен метод Main, в теле которого находится код:

B p = new B();System.Console.Write(p.F1()+ p.F2());

Укажите результат вывода на консоль после выполнения метода Main():

  • 23
  • 13
  • 12
  • (Правильный ответ) 34
  • 14

Исходный модуль содержит указание используемых пространств имен System, System.Collections и определения классов:

System.Collections и определения классов:class A {public virtual void Show(){Console.Write(«»SOS! «»);}}class B:A {public new void Show(){Console.Write(«»ВСЕМ! «»);} }class C:A {public override void Show(){Console.Write(«»УРА! «»); } }

В классе Program определен метод Main, в теле которого находится код:

ArrayList a = new ArrayList();a.Add(new A()); a.Add(new B()); a.Add(new C());for (int i=0; i<a.Count; i++) if(a[i] is A) ((A)a[i]).Show();

Укажите результат вывода после запуска программы на компиляцию и выполнение:

  • (Правильный ответ) SOS! SOS! УРА!
  • SOS! ВСЕМ! УРА!
  • SOS! ВЕМ! SOS!
  • генерируется исключение, так как невозможно преобразовать типы ссылок
  • SOS! SOS! SOS!

Исходный модуль содержит определение типов Газета, Журнал и Program:

{ public int Страницы; public override string ToString() { return Страницы.ToString(); } }struct Журнал{ public int Страницы; }

В классе Program определен метод Main, в теле которого находится код:

Газета a; Журнал b;a.Страницы=20; b.Страницы =30;System.Console.Write(a.ToString() + «» «» + b.ToString());

Укажите результат вывода на консоль после выполнения метода Main():

  • (Правильный ответ) 20 Журнал
  • Газета 30
  • 20 30
  • 50
  • при запуске программы фиксируется ошибка: в структуре невозможно переопределить метод ToString()

Исходный модуль содержит код:

class Студент{ string фамилия; public string Фамилия { get { return фамилия; } } public Студент(string ф) { фамилия = ф; }}class Магистр : Студент{ int курс; public int Курс { get { return курс; } } public Магистр(string фам, int к) : base(фам) { this.курс = к; }} class Test { static void Main() { Студент Иванов = new Магистр(«»Петров»»,4); System.Console.Write(«»{0} {1}»», _______________ ); }}

Требуется вывести фамилию и номер курса студента в виде: Петров 4. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:

  • (Правильный ответ) Иванов.Фамилия, ((Магистр) Иванов).Курс
  • Петров.Фамилия, ((Магистр)Петров).Курс
  • Петров.Фамилия, (Магистр)Петров.Курс
  • Иванов.Фамилия, ((Студент)Петров).Курс
  • Петров.Фамилия, Петров.Курс

Проанализируйте приведенный код.

interface Интерфейс1 { string Метод(); }interface Интерфейс2 { string Свойство { get;} }class Класс1 : Интерфейс1{ public string Метод() { return «»Класс1: есть Интерфейс1 «»; } }class Класс2 : Класс1, Интерфейс2{ public string Метод() { return «»Класс2: есть Интерфейс1 «»; } public string Свойство { get { return «»Класс2: есть Интерфейс2 «»; } }}class Test{ static string GetValue(object ob) { string str = «»Найден интерфейс «»; if (ob is Интерфейс1) str = ((Интерфейс1)ob).Метод(); if (ob is Интерфейс2) { str += ((Интерфейс2)ob).Свойство; } return str; } public static void Main() { Интерфейс1 объект1 = new Класс2(); System.Console.WriteLine(GetValue(объект1));} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) Класс1: есть Интерфейс1 Класс2: есть Интерфейс2
  • Класс2: есть Интерфейс2.
  • Найден интерфейс
  • программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что посредством интерфейсной ссылки объект1 типа Интерфейс1 нельзя вызвать Свойство, определенное в Интерфейс2
  • Класс2: есть Интерфейс1. Класс2: есть Интерфейс2.

Проанализируйте приведенный код.

delegate void MyEventHandler(ref int a); class MyEvent { public event MyEventHandler SomeEvent; public void OnSomeEvent(ref int d) { if (SomeEvent != null) SomeEvent(ref d); } }class EventTest{ static void Handler1(ref int b) { b = 2 * b; } static void Handler2(ref int c) { c = c + 12; } public static void Main() { MyEvent evt = new MyEvent(); int a = int.Parse(System.Console.ReadLine()); if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1); else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2); evt.OnSomeEvent(ref a); System.Console.WriteLine(a); } }

Пользователь собирается после запуска программы ввести цифру 5. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • 22
  • программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
  • (Правильный ответ) 10
  • 15
  • программа завершится аварийно

Исходный модуль содержит код:

class ЧЕЛОВЕК { class ПАСПОРТ {} class ДОЛЖНОСТЬ {} } class Program { static void Main() { ______ P; } }

В методе Main требуется объявить ссылку P на тип ДОЛЖНОСТЬ. Среди приведенных ниже вариантов ответов укажите истинный вариант:

  • вместо знаков подчеркивания укажите ЧЕЛОВЕК
  • вместо знаков подчеркивания укажите ДОЛЖНОСТЬ
  • вместо знаков подчеркивания укажите ЧЕЛОВЕК.ПАСПОРТ.ДОЛЖНОСТЬ
  • вместо знаков подчеркивания укажите ЧЕЛОВЕК.ДОЛЖНОСТЬ
  • (Правильный ответ) объявить требуемую ссылку в методе Main невозможно

Проанализируйте приведенный код.

interface Интерфейс1 { string Метод(); }interface Интерфейс2 { string Свойство {get;} }class Класс1 : Интерфейс1{ public string Метод() { return «»Есть Интерфейс1. «»; } }class Класс2 : Интерфейс1, Интерфейс2{ public string Метод() { return «»Есть Интерфейс1. «»; } public string Свойство { get { return «»Есть Интерфейс2. «»; } }}class Test{ static string GetValue(object ob) { string str = «»Найден интерфейс «»; Интерфейс1 I1 = ob as Интерфейс1; if (I1 != null) str = I1.Метод(); Интерфейс2 I2 = ob as Интерфейс2; if (I2 != null) { str += I2.Свойство; } return str; } public static void Main() { Класс2 объект2 = new Класс2(); System.Console.WriteLine( GetValue(объект2));} }

Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:

  • (Правильный ответ) Есть Интерфейс1. Есть Интерфейс2.
  • <s
Узнать сколько стоит решение этого задания
(ответ в течение 5 мин.)
X