Министерство образования и науки Российской Федерации

Владивостокский государственный университет экономики и сервиса

ПРОГРАММИРОВАНИЕ

НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ

МОДУЛЬ 2

Рабочая программа учебной дисциплины

по специальности

230201.65 Информационные системы и технологии

Владивосток

Издательство ВГУЭС

2014

ББК **.**

Рабочая программа по дисциплине «Программирование на языке высокого уровня, модуль 2» составлена в соответствии с требованиями ГОС ВПО.

Предназначена для студентов по специальности 230201.65 Информационные системы и технологии.

Составитель: , доцент, кафедра информационных систем и прикладной информатики

Утверждена на заседании кафедры ИСПИ от 01.01.2001 г., протокол № 9

Утверждена на заседании Учёного совета института ИИБС от 01.01.2001г., протокол № 7

© Издательство Владивостокского
государственного университета
экономики и сервиса, 2014

ВВЕДЕНИЕ

Умение писать программы, пользуясь наиболее популярными алгоритмическими языками, является основным показателем квалификации современного специалиста в области информационных технологий. Поэтому необходимость изучения языков программирования и соответствующих им приемов написания типовых программ очевидна для любых информационных специальностей высшей школы.

Язык программирования Java является основным языком программирования, применяемым в профессиональной среде для создания кросс-платформенных программ. Он позволяет реализовать объектно-ориентированный подход к программированию. Другой его особенностью является работа Java программ под управлением виртуальной машины.

НЕ нашли? Не то? Что вы ищете?

Объектно-ориентированный подход к программированию заключается в моделировании объектов реального мира, интерпретируемых как совокупность свойств и поведения. Примерами свойств для людей могут являться цвет глаз или место работы; для машин – мощность двигателя и количество дверей. В этом смысле свойства объектов равносильны данным в программах, они имеют определенное значение, например, красный для цвета глаз или 4 для количества дверей автомобиля. Поведение – это некоторое действие объекта в ответ на внешнее воздействие. Поведение сходно с функциями – функция вызывается, чтобы совершить какое-либо действие. В процедурных языках программирования данные и функции принципиально разделены, что затрудняет моделирование ими объектов реального мира. Основополагающей же идеей объектно-ориентированного подхода является объединение данных и функций, оперирующих этими данными, в одно целое, которое и называется объектом.

При разработке программы дисциплины «Программирование на языке высокого уровня, модель 2» учитывалось современное состояние развития языков программирования, соответствующих им интегрированных сред разработчика и технологии программирования.

ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ

1.1 Цели освоения учебной дисциплины

Целью изучения дисциплины «Программирование на языке высокого уровня, модуль 2» является теоретическая и практическая подготовка студентов в области разработки программного обеспечения с использованием современного языка программирования Java, используемого профессиональной средой, поддерживающего объектно-ориентированную модель программирования. Знания, полученные в результате освоения дисциплины, помогут при разработке программных компонентов современных информационных и расчетных программ, в проектировании и реализации компонентов информационных систем в такой степени, чтобы студенты могли самостоятельно выбирать средства реализации, находить необходимые программные и технологические решения для практически важных предметно-ориентированных задач. Основные задачи изучения дисциплины:

- приобретение студентами знаний о сущности объектно-ориентированного подхода в программировании;

- ознакомление с технологиями создания новых типов данных в языке Java;

- приобретение практических навыков по использованию средств переопределения операций, обработки исключений.

1.2 Перечень компетенций, приобретаемых

при изучении дисциплины

Дисциплина «Программирование на языке высокого уровня, модуль 1» относится к дисциплинам по выбору общепрофессионального цикла. Данная дисциплина базируется на компетенциях, полученных при изучении дисциплины «Информатика».

В результате изучения дисциплины «Программирование на языке высокого уровня, модуль 2» в течение одного семестра студент должен приобрести следующие компетенции:

- владеть программированием в средах современных информационных систем;

- уметь использовать информационные технологии для решения прикладных задач;

- владеть языками объектно-ориентированного программирования;

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

1.3 Основные виды занятий и особенности их проведения

Дисциплина «Программирование на языке высокого уровня, модуль 2» изучается студентами очной формы обучения специальности 230201.65 «Информационные системы и технологии» в седьмом семестре. Общее количество часов, которое отводится для изучения дисциплины — 85. Согласно учебному плану выделяется 17 часа лекций, 17 часа практических занятий и 51 часа для самостоятельной работы студента.

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

1.4 Виды контроля и отчетности по дисциплине

Для текущего контроля знаний осуществляется проверка отчетов по лабораторным работам и выборочный опрос студентов во время проведения лекционных занятий. Промежуточный контроль знаний студентов проводится в виде зачета, по результату работы студентов на практических и лекционных занятиях. Дисциплина включает три основных блока: два блока сдаются студентами на текущей аттестации и, третий блок на промежуточной атте-стации. Оценка по дисциплине выводится на основе следующих составляющих:

– первая текущая аттестация 40 баллов

– вторая текущая аттестация 40 баллов

промежуточная аттестация 20 баллов.

ИТОГО 100 баллов.

1.5. Техническое и программное обеспечение дисциплины

Для проведения лекционных и лабораторных занятий по дисциплине необходимо:

Программное обеспечение: MS Office, компиляторы языка программирования Java (NetBeans, Eclipse)

Техническое и лабораторное обеспечение – компьютерный класс, аудитория с презентационным оборудованием.

2. СТРУКТУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ

2.1 Темы лекций

Тема 1. Примитивные типы данных языка Java и операторы для работы с ними (2 часа)

Булевый (логический) тип, целые типы, переменные, константы. Операторы для работы с целочисленными величинами. Вещественные типы. Правила явного и автоматического преобразования типа при работе с числовыми величинами. Приоритет операторов.

Тема 2. Управляющие конструкции языка Java (2 часа)

Арифметические операции. Операции приведения типа. Операции инкремента и декремента. Условный оператор. Оператор выбора. Оператор перехода. Цикл с предусловием, цикл с постусловием, цикл повторений. Операторы прерывания циклов.

Тема 3. Объектно-ориентированное программирование в языке Java (2 часа)

Наследование и полиморфизм. Функции, модификаторы, передача примитивных типов в функции. Локальные и глобальные переменные. Передача ссылочных типов в функции. Наследование, переопределение методов. Статическое и динамическое связывание методов, полиморфизм. Конструкторы, блоки инициализации. Перегрузка методов.

Тема 4. Важнейшие объектные типы языка Java (2 часа)

Массивы. Коллекции, списки, итераторы. Работа со строками, строки как объекты. Типы-перечисления, Работа с датами и временем. Работа с графикой и графическим пользовательским интерфейсом. Обработка исключений. Работа с файлами и папками.

Тема 5. Интерфейсы и композиции (2 часа)

Проблема множественного наследования классов, интерфейсы. Отличия интерфейсов от классов. Проблемы наследования интерфейсов. Композиция как альтернатива множественному наследованию.

Тема 6. Многопоточное программирование и многоядерные системы (2 часа)

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

Тема 7. Вложенные классы (2 часа)

Виды вложенных классов. Статические вложенные классы и интерфейсы. Внутренние классы. Локальные классы. Анонимные классы и обработчики событий. Слушатели событий.

Тема 8. Программирование мобильных телефонов (2 часа)

Спецификация JavaMicroEdition. Конфигурации и профили. Мидлеты. Дизайнер пользовательского интерфейса мидлета. Код бизнес-логики мидлета.

2.2 Перечень тем лабораторных/практических занятий

Тема 1. Ввод и вывод в Java, основные операции языка (2 часа)

Разработка программы, реализующей консольный диалог с пользователем, арифметические операции с данными.

Тема 2. Циклы и условные операторы (2 часа)

Разработка программы, реализующей консольный диалог с пользователем, обработку данных в циклах, ветвление программы в зависимости от данных, веденных пользователем.

Тема 3. Функции и модули (2 часа)

Разработка программы, реализующей консольный диалог с пользователем, состоящей из нескольких модулей и функций.

Тема 4. Чтение и запись файлов (2 часа)

Разработка программы, реализующей консольный диалог с пользователем, операции открытия файла на чтение и запись, операции чтения данных из файла, записи данных в файл.

Тема 6. Простое визуальное приложение (2 часа)

Разработка программы, реализующей визуальный диалог с пользователем, реакцию на события мыши и клавиатуры.

Тема 7. Стандартные компоненты оконного интерфейса (2 часа)

Разработка программы, реализующей визуальный диалог с пользователем, скроллинг, одиночный и множественный выбор.

Тема 8. Работа с графическим инструментарием (2 часа)

Разработка программы, реализующей визуальный диалог с пользователем, отрисовку и копирование изображений.

3. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ КУРСА

3.1. Перечень и тематика самостоятельных работ студентов по дисциплине

. Написать приложение с графическим интерфейсом, в котором вычисляется выражение 1+х и присваивается переменной float f, а также вычисляется выражение 1+у и присваивается переменной double d. Величины x типа float и y типа double вводятся пользователем с помощью пунктов ввода. Вывести в метку jLabel1 разность f-1 и в метку jLabel2 разность d-1. Вывести в метку jLabel3 отношение (f-1)/x + 2, а в метку jLabel4 отношение (d-1)/y + 2. Провести вычисления для x и y, меняющихся в пределах от 1Е-3 до 1Е-18. Объяснить результаты.

2. Написать приложение с графическим пользовательским интерфейсом, в котором при нажатии кнопки иллюстрируется действие операторов цикла for, while, do…while в зависимости от того, какая из кнопок JRadioButton нажата. С помощью этих циклов должна вычисляться площадь под кривой, задаваемой функцией y=ax^2+bx+c при х, меняющемся от х1 до х2, где величины a, b, c, x1, x2 должен вводить пользователь в соответствующих пунктах ввода.

3. Разработать библиотеку классов для иерархии фигур. Реализация должна быть с заглушками при реализации методов show и hide. Вместо отображения на экране эти методы должны выводить в консольное окно вывода имя класса фигуры и слово show или hide, а также координаты фигуры

4. Разработать класс, представляющий собой визуальный компонент «Часы» в виде циферблата со стрелками. Определить для него необходимые методы и поля, чтобы имелась возможность задавать размеры и цвет часов.

5. Разработать класс, представляющий собой визуальный компонент «Часы» в виде текстовой строки 05:25:36. Определить для него необходимые методы и поля, чтобы имелась возможность задавать размеры и цвет часов.

6. Разработать класс, представляющий собой визуальный компонент для размещения на экране сменяющихся изображений. Определить для него необходимые методы и поля, чтобы имелась возможность задавать размеры, число изображений, загружать изображения из файлов, определять частоту их изменения и, возможно, стиль изменения.

7. Разработать класс, представляющий собой визуальный компонент типа «бьющееся сердце» в виде пульсирующего сердечка. Определить для него необходимые методы и поля, чтобы имелась возможность задавать размеры, цвет и частоту биения сердечка.

3.2. Методические рекомендации по организации СРС

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

3.3. Рекомендации по работе с литературой

В процессе изучения дисциплины «Программирование на языке высокого уровня, модуль 2», для того чтобы представлять основные понятия, сущность и сферу применения языка программирования Java необходимо воспользоваться учебником В. Монахова «Язык программирования Java и среда NetBeans».

Остальная рекомендуемая литература поможет студентам выполнять задания самостоятельной работы.

3.4. Контрольные вопросы для самостоятельной оценки качества освоения дисциплины

1. Как называется защита данных класса от несанкционированного доступа другими функциями?

2. Как называется возможность выполнения оператором или функцией различных действий в зависимости от типа операндов?

3. Операция, выполняющая заданные действия не только над встроенным, но и над пользовательским типом данных называется:

а) полиморфической;

б) инкапсулированной;

в) классифицированной;

г) перегруженной.

4. Напишите оператор, который получает с клавиатуры числовое значение и присваивает его переменной temp.

5. Перечисление объединяет

а) данные различных типов;

б) логически связанные переменные;

в) именованные целые числа;

г) константные значения.

6. Напишите оператор, описывающий перечисление с именем players и набором значений B1, B2, SS, B3, RF, CF, LF, P, C.

7. Считая, что перечисление players задано так. Как в предыдущем вопросе, определите переменные joe и tom типа players и присвойте им значения LF и P соответственно.

8. Первые три константы перечисляемого типа обычно представляются числами __, __, и __.

9. Напишите оператор, в котором объявляется перечисляемый тип speeds с константами obsolete, single и album. Присвойте этим константам целые значения 78, 45, 33.

10. В определении класса члены класса с ключевым словом private доступны:

а) любой функции программы;

б) в случае, если известен пароль;

в) методам этого класса;

г) только открытым членам класса.

11. Напишите определение класса studentgroup, включающего одно закрытое поле типа int с именем number и одним открытым методом с прототипом void add().

12. Истинно ли следующее утверждение: поля класса должны быть закрытыми.

13. Что такое конструктор?

14. Как задается имя конструктора?

15. Может ли класс иметь более одного конструктора?

16. Методу класса всегда доступны данные

а) объекта, членом которого он является;

б) класса, членом которого он является;

в) любого объекта класса, членом которого он является.

17. Пусть определены три объекта класса. Сколько копий полей клас­са содержится в памяти? Сколько копий методов класса?

18. Что такое деструктор

19. Что такое указатель this?

20. Для чего применяется перегрузка операций?

21. Чем отличается действие операции ++ в префиксной форме от её действия в постфиксной форме?

22. Истинно ли следующее утверждение: компилятор не выдаст сообщение об ошибке, если вы перегрузите операцию * для выполнения деления?

23. Если объект objA принадлежит классу A, объект objB принадлежит классу B, и требуется записать objA = objB, поместив при этом функцию преобразования в класс A, то какую разновидность процедуры преобразования типа можно использовать?

24. Существуют ли операции, которые нельзя перегружать?

25. В чем состоит назначение наследования?

26. Когда программисту-разработчику целесообразно прибегнуть к наследованию?

27. Напишите первую строку описания класса Child, который является public-производным от класса Parent.

28. Верно ли утверждение: создание производного класса требует коренных изменений в базовом классе?

29. Пусть базовый класс содержит метод basefunc(), а производный класс не имеет такого метода. Может ли объект производного класса иметь доступ к методу basefunc().

30. Истинно ли следующее утверждение: если конструктор производного класса не определен, то объекты этого класса будут использовать конструкторы базового класса?

31. Пусть существует класс Derv, производный от класса Base. Напишите объявление конструктора производного класса, принимающего один аргумент и передающего его в конструктор базового класса.

32. Истинно ли следующее утверждение: невозможно сделать объект одного класса членом другого класса?

33. Напишите описание для чистой виртуальной функции aragorn(), не возвращающей значений и не имеющей аргументов.

4. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

4.1 Основная литература

Лафоре, Р. Стуруктуры данных и алгоритмы Java / Р. Лафоре. –
2-е изд. – СПб.: Питер, 2011.

Монахов, В. Язык программирования Java и среда NetBeans / В. Монахов. – 3-е изд. – СПб.: Бхв-Петербург, 2012.

Хабибуллин, И. Java 7 / И. Хабибуллин. – СПб.: Бхв-Петербург, 2012.

Шилдт, Г. Java Полное руководство / Г. Шилдт. – 8-е изд. – СПб.: Вильямс, 2012.

Эккель, Б. Философия Java / Б. Эккель. – 4-е изд.– СПб.: Питер, 2009.

.

4.2 Дополнительная литература

Блох, Д. Эффективное программирование / Д. Блох. – М.: Издательство Лори, 2002.

Фаулер, М. Рефакторинг: улучшение существующего кода / М. Фаулер. – СПб.: Символ-Плюс, 2003.