NEW
Font size
WorksheetsАбстракни класове и ДЗИ
Total questions: 15
Worksheet time: 11mins
Даден е следния програмен фрагмент:
class Engine { private int power; public Engine(int power) { this.power = power; } }
class Vehicle { private Engine engine; public Vehicle(Engine engine) { this.engine = engine; } }
class Car extends Vehicle { public Car(Engine engine) { super(engine); } }
Car "има" (has a) Vehicle и Vehicle "има" (has a) Engine
Car "е" (is a) Vehicle и Vehicle "е" (is a) Engine
Car "е" (is a) Vehicle и Vehicle "има" (has a) Engine
Car "има" (has a) Engine и Vehicle "има" (has a) Engine
Дадена е UML диаграма на система за онлайн книжарница, където:
Product е базов клас за всички продукти
PhysicalBook и EBook са видове продукти
ShoppingCart е количка за пазаруване, която може да съдържа различни продукти
Кое от следните твърдения правилно описва използването на принципите на наследяване и композиция/агрегация в системата?
ShoppingCart наследява Product, а PhysicalBook и EBook са композиция на количката за пазаруване ShoppingCart
PhysicalBook и EBook са наследници на Product, а ShoppingCart използва агрегация, за да съхранява списък от продукти
ShoppingCart е наследник на Product, който може да съдържа само един вид продукт (или само PhysicalBook, или само EBook)
PhysicalBook наследява EBook, а ShoppingCart създава нови продукти чрез наследяване
Кой от изброените модификатори за достъп позволява най-широк достъп до съответния член на класа?
protected
private
без (default)
public
Кое от следните твърдения за компонента TextBox ( за C#) / TextField (за Java) е вярно?
Свойството Text (за C#)/ методът getText() (за Java) връща въведения текст като масив от символи
При настройка ReadOnly = true (за C#)/ setEditable(false) (за Java) потребителят не може да вижда текста
Свойството Text (за C#)/ методът getText() (за Java) връща въведения текст като символен низ
TextBox (за C#) / TextField (за Java) се използва само за визуализиране на текст, но не и за въвеждане
Посочете вярното твърдение за статичен метод на клас:
В дефиницията на статичен метод на клас може да се използват както статични, така и нестатични членове на класа
В дефиницията на статичен метод на клас не може да се използват нестатични членове на класа
Статичен метод на клас може да се дефинира само в статичен клас
Статичните методи на клас са винаги частни и не може да се достъпват от други класове
За дадения програмен фрагмент, кое от твърденията е вярно?
String text = "exam"; for (int i = 0; i <= text.length(); i++){ System.out.print(text.charAt(i)); }
Програмата няма да се компилира, защото Length (за C#) / length() (за Java) се използва неправилно
Програмата няма да се компилира, защото достъпът до символ в низ е некоректен
Програмата ще работи правилно и ще изведе "exam"
Програмата ще генерира грешка при изпълнение
Какво ще се изведе на стандартния изход след извикването на метода printNumbers(3)?
public static void printNumbers(int n)
{ if (n > 0)
{ printNumbers(n - 1);
System.out.print(" " + n);
}
}
3 2 1
1 2 3
3 1 2
1 3 2
Какво ще се изведе на стандартния изход след изпълнение на следния програмен фрагмент:
String text = "Barbie without Ken";
text.replace("without", "meets");
System.out.println(text);
text = text.replace("without", "meets");
System.out.println(text);
Barbie without Ken Barbie without Ken
Barbie meets Ken Barbie meets Ken
Barbie without Ken Barbie meets Ken
Barbie meets Ken Barbie without Ken
Каква е основната разлика между линейно и двоично търсене?
Линейното търсене изисква сортиран масив, а двоичното не
Двоичното търсене работи само с числа, а линейното – с всякакви данни
Линейното търсене проверява последователно елементите, докато двоичното разделя структурата на части
Линейното търсене винаги е по-бързо от двоичното
Какво НЕ може да съдържа един абстрактен клас в Java?
Нормални (неабстрактни) методи
Конструктори
Статични методи
Абстрактни статични методи
Какво ще се случи при компилация?
abstract class Report {
public abstract void generate();
}
class PdfReport extends Report {
}
Кодът ще се компилира успешно
Грешка при компилация – PdfReport трябва да имплементира generate() или да е абстрактен
Грешка при изпълнение
Нищо – generate() ще бъде наследен автоматично
Какво ще се случи при компилация?
abstract class Report {
public abstract void generate();
}
class PdfReport extends Report {
}
Кодът ще се компилира успешно
Грешка при компилация – PdfReport трябва да имплементира generate() или да е абстрактен
Грешка при изпълнение
Нищо – generate() ще бъде наследен автоматично
Кое от следните е валиден начин да се създаде обект, базиран на абстрактен клас?
abstract class Task {
abstract void execute();
}
Task t = new Task();
Task t = null;
Task t = new Task() { void execute() { System.out.println("Run"); } };
Не може да имаме променлива от тип Task
Имате клас:
abstract class Shape {
public abstract double area();
public String info()
{ return "Generic shape"; }
}
Какво е вярно?
Shape не може да има метод с готова имплементация (info())
Абстрактният метод area() може да бъде private
Клас Circle може да наследи Shape и да не override-не area()
Всеки наследник на Shape трябва да override-не area()
Разгледайте:
abstract class Vehicle {
public abstract int maxSpeed();
}
class Bike extends Vehicle {
public int maxSpeed() { return 25; }
}
class Car extends Vehicle {
public int maxSpeed() { return 130; }
}
Какво е вярно за кода:
Vehicle v = new Car();
System.out.println(v.maxSpeed());
Ще се отпечата 0, защото типът на променливата е Vehicle
Ще се отпечата 130
Ще има грешка при компилация – абстрактни класове не могат да са тип на променлива
Ще има грешка при изпълнение
