Анотация
Дисциплината се основава на познанията на студентите, получени по дисциплините: Програмиране и използване на компютри І и ІІ част, Синтез и анализ на алгоритми и Обектно ориентирано програмиране І част. На базата на основните понятия и принципи на обектно-ориентираното програмиране (ООП) студентите се запознават с основите на програмния език Java2 и получават практически навици по програмиране на този език.
Лекциите включват запознаване с основните различия между езиците С++ и Java2. Разглеждат се езиковите елементи, типовете данни и имплементационните различия по основни понятия като: класове, обекти, наследяване, полиморфизъм и др. След усвояване на особеностите в типовете данни, променливи, масиви, оператори за различните видове операции, оператори за управление на хода на програмата и др., се разглеждат структурата и принципите на дефиниране на класовете, включително спецификаторите за достъп. Отделя се внимание на такива понятия като: пакети, абстрактни класове, интерфейси и вътрешни класове, както и на принципите на тяхната реализация. По-нататък в курса се разглеждат такива важни елементи на езика като: изключенията, паралелните разклонения, входно-изходната система и контейнерите и итераторите. Обяснява се събитийният модел на Java и как той се използва при реализацията на аплетите. Лабораторните упражнения и курсовата работа имат за цел получаване на практически навици при програмиране на Java2.
Съдържание
Тема 1. Въведение в дисциплината. Същност на виртуалната машина (JVM). Разлики при изпълнението на кода между C++ и Java. Спецификатор static. Главна програма на приложение. Аргументи на командния ред.
Тема 2. Основни елементи на езика. Прости и референтни типове данни. Променливи. Видимост на променливите. Спецификатор final. Инициализация на променливите.Низове. Масиви. Структури и обединения. Базови оператори. Оператори за управление на хода на програмата. Разлики спрямо C++.
Тема 3. Класове и обекти. Членове на класовете - полета и методи. Конструктори. Ключовите думи super и this. Взаимодействие между обектите. Наследяване. Йерархия на класовете. Клас Object. Предекларация на методи. Обекти и референции. Обектите като параметри. Полиморфизъм. Разлики спрямо C++.
Тема 4. Пакети - създаване и ползване. Връзка между пакети и именни пространства на C++. Разлики спрямо C++.
Тема 5. Абстрактни класове и интерфейси. Множествено наследяване. Вграждане на класове. Разлики спрямо C++. Контролна работа.
Тема 6. Параметризирани типове. Изключения. Стандартни изключения. Дефиниране и ползване на собствени изключения.
Тема 7. Контейнери и итератори. Контейнери от тип Collection. Контейнери от тип Map.
Тема 8. Взаимодействие на езика с бази от данни.
Тема 9. Интерфейс Swing. Създаване на приложения с интерфейса.
Тема 10.Многозадачност. Нишки, реагиращи на събития. Приоритетност, синхронизация и жизнен цикъл на нишките. Демони.