объектно-ориентированное программирование

advertisement
АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОБРАЗОВАТЕЛЬНАЯ ОРГАНИЗАЦИЯ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
« ИНДУСТРИАЛЬНЫЙ ИНСТИТУТ »
Кафедра информационных систем и программирования
ФОНД ОЦЕНОЧНЫХ СРЕДСТВ
ПО УЧЕБНОЙ ДИСЦИПЛИНЕ
«ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ»
Рассмотрены и утверждены на заседании
кафедры информационных систем и программирования
,
протокол №___от «_____» __________ 201_ г.
Зав. кафедрой___________/ М.В. Кузнецова /
УТВЕРЖДАЮ:
Заведующий кафедрой информационных систем и программирования
__________________ Д.В.Тюпин
(подпись, расшифровка подписи)
протокол №___от «_____» __________ 201_ г.
ПЕРЕЧЕНЬ ВОПРОСОВ, ВЫНОСИМЫХ НА ЭКЗАМЕН ПО ДИСЦИПЛИНЕ
«ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ»
1. Назначение COM-технологии. Какие преимущества дает использование COM? ОК-6,
ОК-8
2. Назовите основные проблемы программного обеспечения, которые способствовали
появлению ООП. ОК-8, ПК-3
3. Как можно обеспечить реальное ускорение процесса разработки программного
обеспечения? Какова цель создания библиотек функций и библиотек классов? ОК-6,
ПК-5
4. Основные принципы объектно-ориентированного программирования. ОК-8, ПК-3
5. Понятие объекта. Понятие класса. ОК-6, ПК-5
6. Что такое интерфейс объекта? Как объекты взаимодействуют друг с другом? Как
осуществляется доступ к свойствам и методам объектов? ОК-6, ПК-5
7. Описание класса в языке Object Pascal. Члены класса. ОК-8, ПК-3
8. Реализация методов в классе. Конструктор и деструктор. Параметр Sender. ОК-8, ПК-5,
9. Дайте определение класса. Объявление класса. ОК-6, ПК-6
10. Структура описания класса. Разделы класса. ПК-3, ПК-5
11. Что такое свойства класса? Назначение свойства класса. ОК-6, ОК-8, ПК-5
12. Что такое поле класса? Назначение поля класса. ПК-3, ПК-5
13. Для чего предназначены методы класса? Как определяется вид метода? ОК-6, ПК-3
14. Классификация типов данных в Object Pascal. Встроенные типы данных. ОК-6, ПК-5
15. Типы, определяемые пользователем. Объявление типов данных. ПК-3, ПК-5
16. Этапы разработки приложения в среде Delphi. Файлы проекта Delphi. ОК-6, ОК-8
17. Структура модуля. Разделы interface, implementation, initialization, finalization. ПК-3,
ПК-5
18. Компоненты Main Menu, Popup Menu. Основные свойства и события. ОК-8, ПК-3
19. Форма как главный компонент приложения. Основные свойства и события формы.
ПК- 3, ПК-5
20. Создание нового проекта. Сохранение проекта. Добавление и удаление форм и
модулей из проекта. Методы закрытия приложения. ОК-6, ПК-5
2
21. Виды ошибок. Исключительные ситуации. ОК-8, ПК-3
22. Глобальная и локальная обработка исключений. ПК-3, ПК-5
23. Организация взаимодействия форм. Особенности модальных форм. ОК-6, ПК-5
24. Организация взаимодействия форм. Особенности формы - заставки. ОК-8, ПК-5
25. Работа с файлами и каталогами с помощью компонентов FileListBox, DirectoryListBox,
DriveComboBox, FilterComboBox. ПК-3, ПК-5
26. Компоненты Edit, SpinEdit. Основные свойства и события. ОК-8, ПК-3
27. Компоненты Edit, MaskEdit. Основные свойства и события. ОК-6, ОК-8, ПК-3
28. Компоненты Radio Group, RadioButton, GroupBox. Основные свойства и события. ОК8, ПК-5
29. Компоненты CheckBox и RadioButton. Основные свойства и события. ОК-6, ПК-5
30. Компоненты Page Control, Tab Control. Основные свойства и события. ПК-3, ПК-5
31. Компоненты List Box, Combo Box. Основные свойства и события. ОК-6, ОК-8
32. Компоненты Edit, Label, Button. Основные свойства и события. ОК-8, ПК-5
33. Средства создания справочной помощи в приложении. ОК-3, ОК-8
34. Назначение COM-технологии. Какие преимущества дает использование COM? ОК-6,
ПК-5
35. Назовите основные проблемы программного обеспечения, которые способствовали
появлению ООП. ПК-3, ПК-5
36. Как можно обеспечить реальное ускорение процесса разработки программного
обеспечения? Какова цель создания библиотек функций и библиотек классов? ОК-6,
ОК-8, ПК-3
37. Основные принципы объектно-ориентированного программирования. ОК-8, ПК-3
38. Понятие объекта. Понятие класса. ПК-3, ПК-5
39. Что такое интерфейс объекта? Как объекты взаимодействуют друг с другом? Как
осуществляется доступ к свойствам и методам объектов? ОК-8, ПК-5
40. Описание класса в языке Object Pascal. Члены класса. ПК-3, ПК-5
41. Реализация методов в классе. Конструктор и деструктор. Параметр Sender. ОК-6, ПК-3
42. Дайте определение класса. Объявление класса. ОК-8, ПК-5
43. Структура описания класса. Разделы класса. ОК-6, ПК-3
44. Что такое свойства класса? Назначение свойства класса. ОК-8, ПК-3
45. Что такое поле класса? Назначение поля класса. ОК-8, ПК-3
46. Для чего предназначены методы класса? Как определяется вид метода? ОК-6, ПК-5
47. Классификация типов данных в Object Pascal. Встроенные типы данных. ОК-8, ПК-3
48. Типы, определяемые пользователем. Объявление типов данных. ПК-3, ПК-5
49. Этапы разработки приложения в среде Delphi. Файлы проекта Delphi. ОК-6, ОК-8
50. Структура модуля. Разделы interface, implementation, initialization, finalization. ОК-8,
ПК-3 ПК-5
51. Компоненты Main Menu, Popup Menu. Основные свойства и события. ОК-6, ОК-8
52. Форма как главный компонент приложения. Основные свойства и события формы.
ОК-6, ПК-3
53. Создание нового проекта. Сохранение проекта. Добавление и удаление форм и
модулей из проекта. Методы закрытия приложения. ПК-3, ПК-5
54. Виды ошибок. Исключительные ситуации. ОК-8, ПК-3, ПК-5
55. Глобальная и локальная обработка исключений. ОК-6, ПК-3
56. Организация взаимодействия форм. Особенности модальных форм. ОК-6, ОК-8
57. Организация взаимодействия форм. Особенности формы - заставки. ОК-8, ПК-5
58. Работа с файлами и каталогами с помощью компонентов FileListBox, DirectoryListBox,
DriveComboBox, FilterComboBox. ОК-6, ОК-8, ПК-3
59. Компоненты Edit, SpinEdit. Основные свойства и события. ОК-8, ПК-3
60. Компоненты Edit, MaskEdit. Основные свойства и события. ПК-3, ПК-5
3
61. Компоненты Radio Group, RadioButton, GroupBox. Основные свойства и события. ПК3, ПК-5
62. Компоненты CheckBox и RadioButton. Основные свойства и события. ОК-6, ОК-8
63. Компоненты Page Control, Tab Control. Основные свойства и события. ОК-8, ПК-5
64. Компоненты List Box, Combo Box. Основные свойства и события. ОК-8, ПК-3
65. Компоненты Edit, Label, Button. Основные свойства и события. ОК-6, ПК-3
66. Средства создания справочной помощи в приложении. ОК-8, ПК-3, ПК-5
Образцы тестовых заданий для самостоятельной работы
1. Объектно-ориентированное программирование характеризуется:



Наличием одной линейной программы
Разделением программы на модули
все данные об объекте, его связи с другими объектами объединяются в одну
структурную переменную
2. Метод это:




Функция, получая в качестве обязательного параметра указатель на объект
Структура, хранящая указатели this, parrent, supper
Структурная переменная, содержащая всю информацию о некотором физическом
предмете или реализуемом в программе понятии
Определенный программистом абстрактный тип данных
3. Объект это:




Функция, получая в качестве обязательного параметра указатель на объект
Структура, хранящая указатели this, parrent, supper
Структурная переменная, содержащая всю информацию о некотором физическом
предмете или реализуемом в программе понятии
Определенный программистом абстрактный тип данных
4. Класс это:



Структурная переменная, содержащая всю информацию о некотором физическом
предмете или реализуемом в программе понятии
Определенный программистом абстрактный тип данных
Переменная, описанная абстрактным типом данных
5. Когда данные являются не глобальными, доступными всей программе, а
локальными доступными только малой части программы:



При инкапсуляции
При полиморфизме
При объявлении метода
6. Когда функция определяется независимо в каждом производном классе и имеет в
этих классах общее имя:
4



При инкапсуляции
При полиморфизме
При наследовании и инкапсуляции
7. Для выполнения операции присвоение одного объекта другому:




Достаточно чтобы в класе этих обхектов был специальный конструктов конструктор копирования
Классы этих объектов нужно описать одинакомым образом
Достаточно чтобы в класе этих объектов были конструкторы и деконструкторы
Необходимо описать оба объекта одним именем класса и иметь в классе
конструктор копирования
8. В каких случаях надо иметь в классе конструктор копирования




Когда нужно передать элементы класса
Для выполнения операции присвоение одного элемента другому
Для создания дружественной функции
Для уничтожения объекта из памяти
8. В чем состоит задача конструктора копирования:




Четко определить порядок создания копии объекта
Размножать объект в указанном колличестве копий
Копировать свойства других объектов
С17.
9. Являеться ли конструктор Array(int n=0) ошибкой. Сам синтаксиз. Просто да или
нет. оздать this указатель
10. Какое ключевое слово должно быть использовано чтобы указать что объект не
явля-ется модифицируемым и любая попытка изменения этого типа является
ошибкой:




readonly
const
static
undeclare
11. Как называются элементы класса которые относяться ко всем экземплярам
объектов класса




Статические
Динамические
Константные
Защищенные
12. В каких случаях следует вводить статические элементы массива:



Когда требуется контроль колличества общих методов класса
Когда требуется доступ к элементам массива из объектов дружественного класса
Когда требуется одновременный доступ ко всем объектам класса
5

Когда требуется определить изменяемые элементы класса
13. Каков будет результат выполнения программы

public class Test {

public Test() {

}

public static void main(String[] args) {

Test test = new Test();

int i = 5;

while(i = 5){

System.out.println(i++);

}

}

}
Варианты ответов
1.
2.
3.
4.
а) Компилятор выдаст сообщение об ошибке в строке 8
б) На консоль будут последовательно выведены значения 01234
в) На консоль будут последовательно выведены значения 43210
г) Программа откомпилируется, но на консоль ничего выведено не будет
14 . Приведенная ниже программа должна вывести на консоль Hello World! Выберите
строки, которые нужно модифицировать в программе, что бы получить правильный
результат.
1. public class Test {
2. public Test() {
3. }
4. public static void main(String[] args) {
5. Test test = new Test();
6. String [] arr = {"H","e","l","l","o","
","w","o","r","l","d","!"};
7. String result = "";
8. int i= 0;
9. for(;;;){
10. result += arr[i++];
11. }
6
12. System.out.println(result);
13. }
14. }
Варианты ответов
а) Заменить строку 9 на for ( i = 0; i < arr. length ;){
б) Заменить строку 9 на for(int int i = 0; i < arr.length;){
в) Заменить строку 9 на for(i = 0; i < arr.length;i++){
г) Заменить строку 9 на for(i = 1; i <= arr.length;i++){
1.
2.
3.
4.
15. Какая строка будет выдана на консоль после выполнения фрагмента кода
приведенного ниже.
1. public class Test {
2. public Test () {
3. }
4. public static void main ( String [] args ) {
5. int i, j ;
6. lab : for ( i = 0; i < 6; i++){
7. for (j = 3; j > 1; j--){
8. if(i == j){
9. System.out.println(" " + j);
10. break lab;
11. }
12. }
13. }
14. }
15. }
Варианты ответов
а) 2345
б) 234
в) 3
г) 2
1.
2.
3.
4.
16.
Какой результат следует ожидать при компиляции и запуске приведенного кода:
String str=new String("Java");
int i=1;
7
char j=3;
System.out.println(str.substring(i,j));
Варианты ответов
1.
2.
3.
4.
а) Выведено: Ja
б) Выведено: av
в) Выведено: ava
г) Ошибка: не существует метода substring(int,char).
16. Какой метод следует использовать, чтобы обнаружить позицию буквы v в строке
str= "Java"?
Варианты ответов
1.
2.
3.
4.
а) mid (2, str )
б) str.charAt (2)
в) str.indexOf ('v')
г) indexOf (str,'v')
17. Что будет выведено в результате компиляции и запуска следующего кода:
String str =" ava ";
char ch ='J';
ch += str ;
System. out. println ( ch );
Варианты ответов
1.
2.
3.
4.
5.
а) Java
б) ava
в) avaJ
г) J
д) Ошибка во время компиляции.
18. Что будет результатом компиляции и выполнения следующего кода?
StringBuffer s= new StringBuffer("You Java");
s.insert(2, "like ");
System.out.print(s);
Варианты ответов
1. а) Yolike u Java
2. б) You like Java
3. в) Ylike ou Java
8
4. г) You Java like
5. д) Ошибка компиляции: метод insert() не объявлен для класса String-Buffer
19. Что будет выведено при попытке компиляции и запуска этой программы:
public class Quest6 {
public static void main(String[] args){
int a[] = new int[]{1,2,3,};
System.out.print(a[1]);
}}
Варианты ответов
1.
2.
3.
4.
5.
а) Ошибка компиляции: не определен размер массива
б) Ошибка времени выполнения
в) Выведено 1
г) Выведено 2
д) Ошибка компиляции: неправильная инициализация
20. Что будет выведено при попытке компиляции и запуска программы?
public class Quest8{
static int j=2;
public static void result(int i){
i *= 10;
j += 2;
}
public static void main(String[] args){
char i = ’1’;
result(i);
System.out.println(i+" "+j);
}}
Варианты ответов
1.
2.
3.
4.
5.
а) 1 2
б) 10 2
в) Ошибка: параметр метода result() не сочетается с передаваемой переменной
г) 10 4
д) 1 4
21. Что будет выведено при компиляции и запуске кода?
9
public class Quest {
{System.out.print("1");}
static{System.out.print("2");}
Quest(){System.out.print("3");}
public static void main(String[] args) {
System.out.print("4");
}}
Варианты ответов
1.
2.
3.
4.
5.
6.
а) 34
б) 24
в) 14
г) 4
д) 1234
е) 234
22. Какие из следующих утверждений истинные?
Варианты ответов
1. а) Частные методы не могут быть перегружены
2. б) Переопределенный метод не может включать исключения не обрабатываемые в
базовом классе
3. в) Методы, объявленные как final, не могут быть переопределены
4. г) Статические методы не могут быть переопределены
23.
Что произойдет в результате компиляции и запуска кода?
class Base {}
class A extends Base {}
public class Quest{
public static void main(String[] args){
Base b = new Base();
A ob = (A) b;
}}
Варианты ответов
1. а) Ошибка во время выполнения
2. б) Ничего: компиляция и выполнение без ошибок
3. в) Ошибка во время компиляции
10
24. Что произойдет в результате компиляции и запуска кода?
abstract class QuestBase {
abstract void show();
static int i;
}
public class Quest2 extends QuestBase {
public static void main(String[] args){
boolean[] a = new boolean[3];
for(i = 0; i < a.length; i++)
System.out.print(“ ” + a[i]);
}}
Варианты ответов
1.
2.
3.
4.
5.
а) Ошибка времени компиляции: Quest2 должен быть объявлен как abstract
б) Ошибка времени выполнения: IndexOutOfBounds
в) будет выведено: true true true
г) будет выведено: false false false
д) Ошибка: массив a использован прежде, чем проинициализирован
25. Какие из объявлений корректны, если:
class Outer {
class Inner {
}}
Варианты ответов
1.
2.
3.
4.
5.
6.
7.
а) new Outer.Inner ()
б) Outer.new Inner ()
в) new Outer.new Inner ()
г) new Outer().new Inner()
д) Outer.Inner()
е) Outer().Inner()
ж) Ни одно из приведенных.
26. Что будет выведено в результате компиляции и выполнения следующего кода:
abstract class Abstract {
abstract Abstract meth ();
}
11
class Owner {
Abstract meth () {
class Inner extends Abstract {
Abstract meth() {
System.out.print("Inner ");
return new Inner();
}
}
return new Inner();
}}
public abstract class Quest4 {
public static void main(String a[]) {
Owner ob = new Owner();
Abstract abs = ob.meth();
abs.meth();
}}
Варианты ответов
1.
2.
3.
4.
5.
6.
27.
а) Inner
б) Inner Inner
в) Inner Inner Inner
г) Compile time error
д) Runtime error
е) Ошибка компиляции из-за двойного объявления meth() в классе Owner
Что будет выведено в результате компиляции и выполнения этого кода?
import java.awt.*;
public class Quest2 extends Frame{
Quest2(){
Button yes = new Button("YES");
Button no = new Button("NO");
add(yes);
add(no);
setSize(100, 100);
setVisible(true);
}
public static void main(String[] args){
12
Quest2 q = new Quest();
}}
Варианты ответов
1.
2.
3.
4.
а) Две кнопки рядом, занимающие весь фрейм, YES слева и NO справа
б) Одна кнопка YES, занимающая целый фрейм
в) Одна кнопка NO, занимающая целый фрейм
г) Две кнопки наверху фрейма, YES и NO
28. Какой менеджер компоновок размещает компоненты в таблице с ячейками равного
размера?
Варианты ответов
1.
2.
3.
4.
а) FlowLayout
б) GridLayout
в) BorderLayout
г) CardLayout
29. Какое выравнивание устанавливается по умолчанию для менеджера размещений
FlowLayout?
Варианты ответов
1.
2.
3.
4.
5.
а) Указывается явно
б) FlowLayout.RIGHT
в) FlowLayout.LEFT
г) FlowLayout.CENTER
д) FlowLayout. LEADING
Правильный ответ в).
30. Сколько кнопок будет выведено в апплет:
import java.applet.*;
import java.awt.*;
public class Quest4 extends Applet{
Button b = new Button("Yes");
public void init(){
add(b);
add(b);
add(b);
add(new Button("No"));
add(new Button("No"));
13
add(new Button("No"));
}}
Варианты ответов
1.
2.
3.
4.
а) 1 кнопка с надписью ''Yes'' и 1 кнопка с надписью ''No''
б) 1 кнопка с надписью ''Yes'' и 3 кнопки с надписью ''No''
в) 3 кнопки с надписью ''Yes'' и 1 кнопка с надписью ''No''
г) 3 кнопки с надписью ''Yes'' и 3 кнопки с надписью ''No''
31. Объект JСheckBox объявлен следующим образом:
JCheckBox ob = new JCheckBox();
Какая из следующих команд зарегистрирует его в блоке прослушивания событий?
Варианты ответов
1.
2.
3.
4.
5.
а) addItemListener(this)
б) addItemListener()
в) ни одна из приведенных
г) ob. addItemListener ()
д) ob. addItemListener ( this )
Правильный ответ д). Метод всегда вызывается объектом, который необходимо
зарегистрировать. В качестве параметра должен передаваться объект приложения или
апплета, в котором размещается данный компонент, если он реализует соответствующий
интерфейс.
32. Что будет выведено в результате компиляции и выполнения следующего кода?
import java.awt.*;
class Quest5 extends Thread implements Runnable{
public static void main(String[] args) {
Component btn = new Button(" Кнопка 1");
System.out.println(((Button) btn).getLabel());
}}
Варианты ответов
а) Кнопка 1
б) Ошибка компиляции: Quest5 должен наследоваться от Applet
в) Ошибка компиляции: не определен метод run() интерфейса
г) Ошибка компиляции: ссылка на Component не может быть инициализирована
объектом Button
5. д) Ошибка времени выполнения
1.
2.
3.
4.
14
6. е) Ничего не будет выведено
33. Какой код читает параметр count в переменную i в этом фрагменте кода?
< applet code=MyApplet.class width=200 height=200>
< param name=count value=5>
< /applet>
Варианты ответов
1.
2.
3.
4.
5.
а) int i = getIntParameter(''count'')
б) int i = getParameter(''count'')
в) int i = new Integer(getIntParameter(''count'')).intValue()
г) int i = new Integer(getParameter(''count''))
д) int i = new Integer(getParameter(''count'')).intValue()
34. В пользовательском методе show() был изменен цвет фона (background) апплета.
Какой метод должен быть вызван, чтобы это было визуализировано?
Варианты ответов
1.
2.
3.
4.
5.
а) draw ()
б) start ()
в) repaint()
г) setColor()
д) setbgcolor()
35. Выбрать необходимое условие принадлежности класса к апплетам?
Варианты ответов
1. а) Наследник класса Applet и у него должен отсутствовать метод main()
2. б) Наследник класса Applet или его подкласса
3. в) Наследник класса Applet и в нем необходимо переопределить унаследованный от
класса Applet метод paint()
4. г) Наследник класса Applet и в нем необходимо переопределить унаследованный от
класса Applet метод init()
5. д) Наследник класса Applet и все его методы должны быть объявлены со
спецификатором public
36. Что будет выведено в результате компиляции и запуска такого кода:
import java.awt.*;
import java.awt.event.*;
public class Quest3 extends Frame implements WindowListener{
public Quest3(){
15
setSize(300,300);
setVisible(true);
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public static void main(String args[]){
Quest3 q = new Quest3 ();
}}
Варианты ответов
1.
2.
3.
4.
а) Ошибка компиляции
б) Компиляция и запуск с выводом пустого фрейма
в) Компиляция без запуска
г) Ошибка времени выполнения
37. Что будет выведено в результате компиляции и запуска приведенного кода?
class Quest implements Runnable{
int i=0;
public int run(){
System.out.println("i="+ ++i);
return i;
}}
public class Quest1 {
public static void main(String[] args) {
Quest ob = new Quest();
ob.run();
}}
Варианты ответов
1. а) Ошибка компиляции: неправильно определен метод run()
2. б) Ошибка времени выполнения: поток запускается методом start()
3. в) Ошибка компиляции: Объект ob нужно создавать, используя конструктор класса
Thread
4. г) i=1
5. д) i=0
38. . Что будет выведено в результате компиляции и запуска приведенного кода?
16
class Quest5 extends Thread {
Quest5 () { }
Quest5 (Runnable r) { super(r); }
public void run() {
System.out.print("YES ");
}
public static void main(String[] args) {
Runnable r = new Quest5(); //1
Quest5 t = new Quest5(r); //2
t.run();
}}
Варианты ответов
1.
2.
3.
4.
а) YES YES
б) Ошибка компиляции в строке //1
в) Ошибка компиляции в строке //2
г) YES
39. Что произойдет при попытке компиляции и запуска программы?
import java.util.*;
class Quest4 {
public static void main (String args[]) {
Object ob = new HashSet();
System.out.print((ob instanceof Set)+",");
System.out.print(ob instanceof SortedSet);
}}
Варианты ответов
1.
2.
3.
4.
5.
а) true, false
б) true, true
в) false, true
г) false, false
д) ничего из вышеперечисленного
40. Корректен ли следующий код? Если нет, то какие исправления можно предложить?
byte b[]={1, 2, 3};
Object o=b;
17
o=new String[]{“”, “a”, “b”};
String s[]=o;
41. Корректно ли следующее обращение к переменной x?
public class Test {
static void perform() {
...
}
private Test x;
public static void main(String s[]) {
x.perform(); // корректно ли это выражение?
}
}
42. Можно ли при переопределении некоторого абстрактного метода perform()
использовать выражение super.perform()?
43. Как реализованы в классе Object методы equals(), toString(), hashCode() ?




equals() – возвращает true, если ссылки на объекты совпадают;
toString() – возвращает строку, которая составляется следующим образом: название
класса, символ ‘@’, значение, возвращаемое вызовом метода;
hashCode(), представленное в шестнадцатеричном виде;
hashCode() – имеет native реализацию, возвращающую адрес, по которому хранится
объект.
44. Какие действия необходимо предпринять для установления TCP-соединения между
двумя Java-приложениями?
Правильный ответ: во-первых, на стороне сервера надо создать экземпляр класса Server
Socket с указанием порта, и затем вызвать у этого объекта метод accept(). При входе в этот
метод поток исполнения приостанавливает свою работу в ожидании подключения
клиента. Клиенту необходимо создать экземпляр класса Socket с указанием IP-адреса и
порта сервера. После успешного выполнения конструктора на стороне сервера метод
accept() вернет экземпляр класса Socket для взаимодействия двух приложений.
45. Какие объекты могут быть клонированы?
Контрольная работа
по дисциплине «Объектно-ориентированное программирование»
Вариант 1
18
1. Назовите и опишите основные принципы объектно-ориентированного
программирования.
2. Опишите понятие объекта по следующему плану:
-
реальные системы как системы взаимодействия объектов
-
состояние объекта
-
интерфейс объекта
-
время жизни объекта
-
композиция объектов
3. Напишите программный код обработчика события ONKeyPress редактора Edit1 для
установления разрешения ввода любых символов кроме десятичных цифр.
4. Напишите программный код вывода в Edit значения даты, выбранной в компоненте
DateTimePicker.
5. Выберите правильный ответ.
Раздел класса public содержит:
а) опубликованные описания, которые являются общедоступными и
отображаемыми при конструировании приложений
б) общедоступные описания, которые видимы в любом месте программы, где
доступен сам класс
в) защищенные описания, которые доступны внутри модуля, в котором они
находятся
г) защищенные описания, которые доступны внутри модуля, в котором они
находятся, а также доступны для порожденных классов за пределами названного
модуля
6. Выберите правильный ответ.
Поле класса - это:
a) специальные типы данных, используемые для описания объектов
b) особый тип записи, объединяющий в себе задание структуры данных и
выполняемых над ними операций
c) данные, содержащиеся в классе
d) средства реализации механизма доступа к полям класса
e) подпрограмма, являющаяся элементом класса
7. Выберите правильный ответ.
При попытке закрытия формы возникает событие:
ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize,
ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop,
ONKeyDown, ONKeyPress, ONStartDock, ONExit
8. Выберите правильный ответ.
Вид и поведение рамки формы определяет свойство:
BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview,
Visible
Вариант 2.
1. Назовите основные проблемы программного обеспечения, которые способствовали
появлению объектно-ориентированного программирования.
2. Опишите понятие класса по следующему плану:
19
-
определение класса
-
наследование классов
-
полиморфизм
-
использование наследования и полиморфизма
-
отношения между классами
-
метаклассы и метаданные
3. Назовите функции вызова внешних приложений. Напишите программный код вызова
приложения FUNC.EXE.
4. Напишите программный код присвоения элементам списка ListBox новых значений.
5. Выберите правильный ответ.
Элементы, объявленные в разделе implementation модуля:
а) видимы и доступны внутри данного модуля, но не доступны из внешних
модулей
б) видимы и доступны внутри данного модуля и из внешних модулей
в) видимы и доступны только внутри данного модуля
г) видимы и доступны для объектов любых классов и для других модулей
6. Выберите правильный ответ.
Свойства класса - это:
a) специальные типы данных, используемые для описания объектов
b) особый тип записи, объединяющий в себе задание структуры данных и
выполняемых над ними операций
c) данные, содержащиеся в классе
d) средства реализации механизма доступа к полям класса
e) подпрограмма, являющаяся элементом класса
7. Выберите правильный ответ.
При изменении размеров формы возникает событие:
ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize,
ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop,
ONKeyDown, ONKeyPress, ONStartDock, ONExit
8. Выберите правильный ответ.
Стиль формы определяет свойство:
BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview,
Visible
Вариант 3.
1. Дайте понятие интерфейса: правила организации, методы и средства
программирования. Как объекты взаимодействуют друг с другом? Как осуществляется
доступ к свойствам и методам объектов?
2. Опишите процесс объектно-ориентированного проектирования по следующему плану:
-
понятие проектирования по образцам
-
активные данные
-
системы образцов
-
поддержка процессов жизненного цикла программ с помощью методов
моделирования
20
-
организационные образцы
-
организация тестирования в объектно-ориентированных системах
3. Какая форма называется модальной? Напишите программный код для анализа
результата работы модальной формы.
4. Напишите программный код записи информации из компонента Memo в текстовый
файл.
5. Выберите правильный ответ.
Раздел класса private содержит:
a) опубликованные описания, которые являются общедоступными и
отображаемыми при конструировании приложений
b) общедоступные описания, которые видимы в любом месте программы, где
доступен сам класс
c) защищенные описания, которые доступны внутри модуля, в котором они
находятся
d) защищенные описания, которые доступны внутри модуля, в котором они
находятся, а также доступны для порожденных классов за пределами названного
модуля
6. Выберите правильный ответ.
Методы класса - это:
f) специальные типы данных, используемые для описания объектов
g) особый тип записи, объединяющий в себе задание структуры данных и
выполняемых над ними операций
h) данные, содержащиеся в классе
i) средства реализации механизма доступа к полям класса
j) подпрограмма, являющаяся элементом класса
7. Выберите правильный ответ.
При создании формы возникает событие:
ONHide, ONCreate, ONDeactivate, ONClose, ONShow, ONActivate, ONResize,
ONCloseQuery, ONDestroy, ONPaint, ONClick, ONException, ONDragDrop,
ONKeyDown, ONKeyPress, ONStartDock, ONExit
8. Выберите правильный ответ.
Размещение и размер формы при отображении определяет свойство:
BorderIcons, BorderStyle, Position, FormStyle, WindowState, BorderWidth, KeyPreview,
Visible
6.3Методические указания по выполнению самостоятельной работы
В повышении уровня подготовки студента важную роль играет самостоятельная
работа, содержание которой соответствует рабочей программе дисциплины.
Самостоятельная работа студента должна сформировать устойчивые навыки
самообразования, помочь в повышении уровня подготовки студентов по разделам
дисциплины.
Цели самостоятельной работы
• Получение устойчивых навыков самообразования.
• Систематизация и закрепление полученных теоретических знаний и
практических умений.
• Пополнение, совершенствование и углубление профессиональных знаний.
• Овладение профессиональными умениями и навыками.
Задачи самостоятельной работы
21
• Овладение принципами самоорганизации познавательной деятельности на основе
целенаправленного и поэтапного изучения учебного материала.
• Развитие и совершенствование профессиональных практических навыков.
Контроль за качеством самостоятельной работы студентов проводится в процессе
защиты лабораторных работ, выступлении с докладами и сообщениями на заданную тему,
проверки выполнения домашних заданий и индивидуальных практических заданий.
Контрольные вопросы и задания для самоподготовки.
1. Принципы структурного программирования.
2. Принцип метода заглушек при разработке программ.
3. Принцип модульного построения программ.
4. Проблемы программного обеспечения при структурном программировании.
5. Основные достоинства объектно-ориентрованного программирования (ООП).
6. Основные достижения современных технологий, обеспечивающие развитие ООП.
7. Понятие объектно-ориентированного подхода. Способ описания систем.
8. Понятие объекта. Характеристика объекта.
9. Понятие объекта. Интерфейс объекта.
10. Как осуществляется программный доступ к свойствам и методам объектов? Приведите
примеры.
11. Основные принципы объектно-ориентированного программирования.
12. Понятие класса. Свойства класса.
13. Принципы наследования и полиморфизма.
14. Принципы наследования и инкапсуляции.
15. Что означает метод inherited? Что означает запись inherited create(name)?
16. Какие методы используются для создания или удаления объектов? Напишите
объявление конструктора.
17. Из каких разделов состоит описание класса? Объясните, чем отличается объявление
процедуры в разделе private от объявления в разделе public описания класса.
18. Как осуществляется доступ к объектам, включенным в определение класса из
процедур, описанных вне класса? Приведите пример.
19. Назовите основные разделы модуля. От чего зависит способ доступа к объектам,
переменным и функциям?
20. Что такое области видимости переменных и функций? От чего зависит способ доступа
к объектам, переменным и функциям?
21. Какие существуют способы передачи параметров?
22. Что означает передача параметра по значению? Напишите функцию вычисления
суммы двух чисел, используя передачу параметров по значению и вызов функции.
23. Что означает передача параметра по ссылке? Напишите функцию вычисления суммы
двух чисел, используя передачу параметров по ссылке и вызов функции.
24. Назовите однострочные компоненты редактирования и их основные отличительные
свойства.
25. Чем отличаются компоненты Edit и MaskEdit? Назовите их отличительные свойства.
26. В каком событии компонента Edit можно осуществить проверку нажатой клавиши?
Напишите обработчик этого события для разрешения ввода только десятичных цифр.
27. Назовите многострочный компонент редактирования и его основные свойства.
28. Напишите программный код чтения информации из текстового файла в компонент
Memo.
29. Напишите программный код записи информации из компонента Memo в текстовый
файл.
30. Назовите компоненты-списки, их основные свойства и отличия.
22
31. Какие компоненты используются для работы с переключателями? Чем отличается
флажок от зависимого переключателя?
32. Каким компонентом представлен независимый переключатель (флажок)? Что
означают свойства Checked, AllowGrayed и State флажка?
33. Какими компонентом представлен зависимый переключатель? Что означает свойство
Checked переключателя?
34. Какие компоненты используются для объединения переключателей в группу?
35. Что собой представляет компонент RadioGroup? С помощью какого свойства
осуществляется управление числом и названиями переключателей?
36. Как осуществляется программный доступ к свойствам и методам объекта? Что
означает запись Label1.Caption?
37. Что такое класс? Как он объявляется? Основные принципы объектноориентированного программирования
38. Чем отличается процедура от функции? Как они объявляются? Назовите способы
передачи параметров.
39. Назовите компоненты для работы с текстом. Чем отличается компонент Edit от
MaskEdit? Какой тип имеет свойство Edit1.Text?
40. Чем отличаются компоненты CheckBox и RadioButton? Какие существуют
группирующие компоненты для переключателей?
41. Какую роль выполняет компонент Panel? Назовите компоненты объединения. Чем
отличается компонент GroupBox от компонента RadioGroup?
42. Какие события наступают при создании формы, при закрытии и уничтожении формы?
43. Напишите доступ к свойству Caption формы
44. Что такое принцип наследования?
45. Разделы модуля и их назначение
46. Методы вызова форм. Что такое модальная форма?
47. Какой компонент позволяет создать многостраничную панель? Назовите основные
свойства компонента
48. Какое назначение имеют компоненты StatusBar, ToolBar?
49. Как создать меню на форме?
50. Как создать форму-заставку приложения?
51. Нарисуйте схему установления связей между компонентами для работы с файлами и
каталогами.
Самостоятельная работа №1
Разработка приложения «Калькулятор».
Разработать объектно - ориентированное приложение «Калькулятор».
Выполнение:
Форма может иметь следующий вид:
23
Программный код основных событий:
Объявление переменных:
var
Form1: TForm1;
x: real;
pl:(plus,minus,umn,del);
Программный код для цифровых клавиш:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.text+'1’;
end;
Программный код для кнопки «+»:
procedure TForm1.Button11Click(Sender: TObject);
begin
if Edit1.Text= ' ' then showmessage('введите числа')
else
begin
pl:=plus;
x:=strtofloat(Edit1.Text);
edit1.Text:='';
end;
end;
Программный код для для кнопки «=»:
procedure TForm1.Button16Click(Sender: TObject);
begin
if Edit1.Text=' ' then showmessage('введите числа')
else
begin
case pl of
plus:edit1.Text:=floattostr(x+strtofloat(Edit1.text));
minus:edit1.Text:=floattostr(x-strtofloat(Edit1.text));
umn:edit1.Text:=floattostr(x*strtofloat(Edit1.text));
del: if (edit1.text='0') then showmessage('деление на нуль запрещено')
24
else
edit1.Text:=floattostr(x/(strtofloat(Edit1.text)));
end;
end;
end;
Самостоятельная работа №2
Разработка приложения «Цифровые часы».
Разработать приложение «Цифровые часы».
Постановка задачи: Приложение похоже на часы, входящие в состав Windows.
Приложение состоит из одной формы, на которой размещены следующие объекты: Label1,
Timer1,
MainMenu1.
Label1
– метка или надпись, свойства:
Caption
– определяет текст надписи
Font
– определяет размер, цвет и шрифт текста
Left, Top
– определяют позицию размещения Label1 на форме
Timer1
– используется для отсчета времени, основное свойство Interval (1000 = 1
сек), событие onTimer генерируется один раз в заданный интервал
времени..
MainMenu1 – меню формы, каждый пункт которого представляет собой объект,
основное событие пункта onClick. Обработчик данного события
выполняет действия, которые должны произойти в случае выбора пункта
меню.
Таймер (Timer1) используется для отсчета времени с интервалом 1 сек. В обработчике
события onTimer текущее значение времени отображается в надписи Label1.
Меню состоит из трех пунктов:

Заголовок (mnuCaption);

Исходный размер (mnuSize0);

Закрыть (mnuClose).
Пункты «Заголовок» и «Исходный размер» предназначены для изменения внешнего вида
формы. Например, пункт «Заголовок» определяет отображение заголовка и меню формы
(включает/выключает). Когда пункт «Заголовок» отмечен галочкой, форма отображает
заголовок и меню. Если выбрать пункт «Заголовок», галочка исчезнет, заголовок и меню
станут невидимыми, изменится граница окна. В этом случае окно нельзя перемещать и
изменять его размеры. Для восстановления прежнего вида формы нужно дважды
щелкнуть на ней или на надписи Label1.
Выполнение:
1. В инспекторе объектов для формы определить следующие свойства:
FormStyle := fsStayOnTop;
Position := poScreeCenter;
BorderStyle := bsSizeable;
BorderIcons := [biSystemMenu];
Constraints.MinWidth := 100;
Constraints.MinHeight := 65;
25
2. Расположить объекты Label1, Timer1, MainMenu1 на форме (Рис. 1).
Рис. 1. Расположение объектов
3. Создать меню (Рис. 2), не забыв переопределить свойство Name в инспекторе
объектов в соответствии с постановкой задачи, например,
Name := mnuCaption;
Рис. 2. Создание меню
4. Создать обработчик события onTimer
Label1.Caption := TimeToStr(Time);
1. Создать обработчик события onCreate для формы
mnuCaption.Checked := True;
Form1.ClientWidth := 200;
Form1.ClientHeight := 100;
Timer1Timer(Sender);
2. Создать обработчик закрытия формы (событие onСloseQuery для формы)
if MessageDlg('Вы хотите закрыть форму?',
mtConfirmation, [mbYes,mbNo], 0) = mrYes then
CanClose := True
else
CanClose := False;
3. Создать обработчик события выбора пункта меню «Заголовок» (событие onClick
для mnuCaption)
if mnuCaption.Checked then
begin
Form1.BorderStyle := bsNone;
Form1.Menu := nil;
end
else
begin
Form1.BorderStyle := bsSizeable;
Form1.Menu := MainMenu1;
end;
mnuCaption.Checked := not mnuCaption.Checked;
4. Создать обработчик события изменения размера формы (событие onResize для
формы)
if (Form1.ClientHeight/Form1.ClientWidth)<(Label1.Height/Label1.Width) then
Label1.Font.Height:= Form1.ClientHeight-2
26
else
Label1.Font.Height:=
Round((Form1.ClientWidth-10)*(Label1.Height/Label1.Width));
Label1.Left:=(Form1.ClientWidth-Label1.Width) div 2;
Label1.Top:=(Form1.ClientHeight-Label1.Height) div 2;
5. Создать обработчик события выбора пункта меню «Исходный размер» (событие
onClick для mnuSize0)
Form1.ClientWidth:=200;
Form1.ClientHeight:=100;
FormResize(Sender);
6. Создать обработчик двойного щелчка (событие onDblClick для Label1)
mnuCaptionClick(Sender);
7. В инспекторе объектов присвоить событию onDblClick формы событие onDblClick
для Label1 (Label1DblClick).
8. Создать обработчик события выбора пункта меню «Закрыть» (событие onClick для
mnuClose)
Close;
27
Download