Категория ‘Java’

* Задачи от изпит 10.12.2009г.

Публикувано на 13 декември 2009 от Филип Петров. Записано в Java.


Задача 1. Напишете интерфейс “Геометрична Фигура” (Figure), в който се дефинират действията “сравнение на текущата фигура с друга подадена като параметър” (метод equals, който трябва да връща стойност от тип boolean) и “отпечатване на информацията за фигурата на екрана в конзолата” (print). Прочети още…

.



* Примерна задача 4

Публикувано на 06 декември 2009 от Филип Петров. Записано в Java.


Задача 1: Създайте клас „Картина”, в който се описва името на картината, нейният автор, цена, година на създаване и уникален номер. Дефинирайте конструктори по подразбиране (данните се четат от клавиатурата) и чрез подадени параметри. Направете необходимите get и set методи. Напишете метод, който отпечатва информацията за картината в подходящ вид в конзолата.

Задача 2: Прочети още…

.



* Примерна задача 3

Публикувано на 28 ноември 2009 от Филип Петров. Записано в Java.


Задача 1: Създайте клас „работник на хонорар“, в който са дефинирани лично, фамилно име, заплащане (левове за час) и личен номер (id) от тип int. Направете конструктори по подразбиране (въвежда се информацията от клавиатурата) и чрез подадени параметри. Създайте необходимите get и set методи. Напишете метод, който отпечатва информация за работника на екрана в подходящ вид. Напишете метод, който по подаден параметър „брой изработени часове“ връща парите, които работникът трябва да получи. Прочети още…

.



* Примерна задача 2

Публикувано на 06 ноември 2009 от Филип Петров. Записано в Java.


1. Да се създаде клас „точка“ с член променливи „координати по осите x и y“. Създайте необходимите конструктори и get методи. Защитете координатите така, че да не могат да бъдат променяни след като бъдат инициализирани. Създайте метод отпечатващ координатите на точката. Създайте статичен метод, който сравнява координатите на две точки и показва дали те съвпадат: Прочети още…

.



* Примерна задача 1

Публикувано на 31 октомври 2009 от Филип Петров. Записано в Java.


1. Дефинирайте клас, описващ дати от календара.

а) Дефинирайте конструктор по подразбиране и такъв с параметри за задаване на дата.

б) Дефинирайте за него подходящите get и set методи.

в) Направете необходимите проверки за валидност на данните (ако не са валидни да се генерира изключение): Прочети още…

.



* Списъци, динамични масиви, стекове и опашки

Публикувано на 26 октомври 2009 от Филип Петров. Записано в Java.


1. Масиви: Когато се заговори за понятието „списък“ всеки начинаещ програмист моментално се досеща за най-често използваната в учебните примери структура – масив. Масивите представляват наредени елементи от един и същи тип данни (може да бъде както примитивен тип, така и данни от определен клас). Те са с константна дължина (т.е. точно определен брой елементи). Това е колкото полезно (няма опасност от „утечки на памет“), толкова и неудобно (трябва да се пазим от проблема с „препълване“, често се заделя повече памет отколкото е необходима, и др.). Можем да обобщим проблемите свързани с използването на масив в три точки: Прочети още…

.



* Изключения дефинирани от потребителя

Публикувано на 21 октомври 2009 от Филип Петров. Записано в Java.


Вече се запознахме подробно как се хвърлят изключения в Java. Веднага остава въпроса „можем ли ние сами да си дефинираме изключения“. Отговорът е положителен.

Всичко, което трябва да направите при дефиниране на изключение е да създадете клас, който наследява клас Exception: Прочети още…

.



* Wait, notify и notifyAll

Публикувано на 19 октомври 2009 от Филип Петров. Записано в Java.


Вече се запознахме с методът sleep() за нишки в Java, както и възможността да прекъснем „спането“ на нишката чрез метод interrupt().  Използването на метод sleep() всъщност прехвърля текущата нишка в „Not Runnable“ статус за определен период от време и по този начин дава процесорно време на другите нишки. Важно е да се спомене, че ако методът, който е извикал sleep(), е синхронизиран (synchronized), то никой не може да достъпи обектите в него по време на неговия „sleep“ период! Извикването на „interrupt()“ за тази нишка ще прекъсне sleep() преждевременно.

Когато имаме обект (говорим за който и да е обект създаден с оператор new), то разполагаме с нестатичен метод Object.wait(). Този метод на пръв поглед предизвиква същия ефект както Thread.sleep() – прехвърля текущата нишка (тази, която е извикала метода) в „Not Runnable“ статус за определено време. Такъв обект се нарича „заключващ обект“ за нишката. Първата разлика е, че Object.wait() може да бъде извикан само в синхронизиран метод. Втората разлика е, че Object.wait() може да приспи нишката за неопределено време, докато Thread.sleep() е с фиксирано. Освен това ако имаме Thread T, то T.sleep() ще „приспи“ нишката T, докато T.wait() ще приспи текущата нишка (тази, която е извикала метод T.wait()), докато някой друг не извика T.notify(). Прочети още…

.



* Синхронизация на нишки

Публикувано на 17 октомври 2009 от Филип Петров. Записано в Java.


Когато имаме многонишково приложение, то ние много често работим и със споделени ресурси. Нека демонстрираме с един пример – имаме масив с наредени числа. Имаме две нишки – такава, която променя числата с произволни и такава, която сортира числата по големина: Прочети още…

.



* Нишки

Публикувано на 16 октомври 2009 от Филип Петров. Записано в Java.


Понятието „нишки“ можете да разгледате като „разклонение на една програма на подпрограми, които работят едновременно“. Представете си например един HTTP сървър. Работата, която извършва е да прехвърля данните поискани от даден клиент. Когато обаче има повече от един клиент едновременно, то ако нямаме „многонишковост“ те трябва да се изчакват един друг на „опашка“. Ако имаме един клиент, който изтегля огромно количество информация, то всички останали би трябвало да го изчакват, а това определено не е уместно. Пускането на нишка за всеки един клиент означава, че ние ще обслужваме всички с равно количество процесорно време, независимо кой се е свързал с HTTP сървъра първи, кой втори и кой последен. Прочети още…

.