Категория ‘ПИК3 Java’
* Switch изрази
Публикувано на 19 декември 2019 в раздел ПИК3 Java.
В Java 12, а по-късно подобрено в Java 13, се появиха тестови „Switch изрази“, които се очаква да станат официална част от версия 14. Досега Switch беше само оператор. Вече може да бъде използван и като израз, който връща стойност. Например ако имаме следното решение за превръщане на число в текстовият низ за ден от седмицата: Прочети още…
* Текстови блокове
Публикувано на 19 декември 2019 в раздел ПИК3 Java.
Един чест и досаден проблем за разработчиците на Java винаги е бил четимостта на кода. Един от няколкото основни фактора за лошо визуализиран код винаги са били многоредовите низове. Например ако искаме да подобрим четимостта на следната SQL заявка: Прочети още…
* Автоматично определяне на тип в Java
Публикувано на 18 октомври 2018 в раздел ПИК3 Java.
С идването на Java 10 се въведе едно вероятно дълго чакано нововъведение. Става въпрос за „local type inference“, което аз си позволявам да преведа като „автоматично определяне на тип за локални променливи“. Надявам се да намеря по-къс термин за това определение.
Една тенденция при развитието на повечето езици за програмиране винаги е била да се опростява синтаксиса така, че програмистите да пишат по-изчистен и лесночетим код. Java от самото си начало и до ден днешен не е била сред водещите езици по този критерий – едно от честите оплаквания на програмистите са сложните езикови конструкции.
Преди години с Java 7 се направи първата крачка към съкращаване на кода чрез автоматично типизиране при генерични типове. Нека погледнем следния код, с който дефинираме речник, в който на всяка дума отговаря списък от други думи: Прочети още…
* Форматиране на низове – примерна задача
Публикувано на 26 януари 2017 в раздел ПИК3 Java.
В долната задача демонстрирам употребата на String.format(). Дадена е следната задача: по подадено число N, да се отпечата чрез стандартния изход матрица с размерност NxN със звезди по диагоналите и празни интервали за останалите елементи.
Обикновено хората започват да търсят решение чрез вложени цикли, например: Прочети още…
* Упражнение 15, 2015
Публикувано на 08 януари 2016 в раздел ПИК3 Java.
Това е решението на примерната задача за изпит, която е дадена на javac.bg. Имаме библиотека за документ (docslib), сървърно приложение (Upr15Server) и две клиентски приложения: Upr15Student, което изпраща документи и Upr15Secretary, което обработва документи. Прочети още…
* Задача за подготовка за изпит: конзолна игра на Пексесо
Публикувано на 07 януари 2016 в раздел ПИК3 Java.
Трябва да се създаде сървър за игра на “Пексесо” (blocks). Играта ще се играе от трима души с четен брой от двойки картинки (карти). Картинките се разполагат на масата закрити с лицето надолу, а играчите един след друг се редуват да ги обръщат две по две. Ако даден играч с един ход обърне две еднакви картинки, той ги прибира и печели точка. В противен случай (ако картинките са различни), той ги връща обратно с лицето надолу където са били. Печели играчът, който събере най-много точки в края на играта. Във варианта, който се изисква вие да реализирате, няма да се показват картинки, а ще се използва матрица с числа. Например: Прочети още…
* Упражнение 13, 2015
Публикувано на 18 декември 2015 в раздел ПИК3 Java.
Задачата беше да се направи клиент-сървър приложение за обмен на файлове. Когато клиент се свърже, той първо си подава потребителското име. След това подава една от следните две команди:
- send <име на файл>
- get <име на файл>
При команда send клиента изпраща файла на сървъра и затваря връзката. Сървърът трябва да запише файла с име <username>-<име на файл>. При команда get сървъра намира файл с име <username>-<име на файл>, изпраща го на клиента и затваря връзката. Прочети още…
* Работа с дата и час
Публикувано на 09 декември 2015 в раздел ПИК3 Java.
В общи линии още от своето създаване Java винаги е търпяла критики към своята библиотека за работа с дата и час. Стандартните класове java.util.Date и java.util.Calendar имат редица проблеми:
- Сбъркан дизайн: например Date не е дата, а е всъщност timestamp, месеците започват от 0. Дори да свикнете с това, дните пък си започват от 1. И т.н.;
- Много трудна работа с часови зони;
- Не можете да имате стандартни неща като дати без години, часове без отчитане на секунди и т.н.;
- Няма вградена синхронизация за работа в многонишкова среда.
През годините паралелно с JDK се е развивала една библиотека наречена Joda, която решава тези проблеми. В крайна сметка с Java 8 се въвежда пакета java.time, който е с работно име JSR 310 и е базиран на библиотеката Joda, но има известни разлики с нея. В тази статия ще разгледаме именно JSR 310, защото от тук нататък това ще е стандартната библиотека за работа с дата и час в Java.
Четирите най-основни класа за работа с java.time са: Прочети още…
* Упражнение 11, 2015
Публикувано на 05 декември 2015 в раздел ПИК3 Java.
В това упражнение доработваме програмата от миналото упражнение като я правим клиент-сървър приложение. Ще направим клиент, който ще се свързва със сървъра и ще му изпраща пациент (Patient). Сървърът ще излекува пациента по съответния ред и ще върне обратно на клиента Report. Сървърът ще е направен така, че да може да обслужва много клиенти, но не едновременно, а един по един.
По сървъра редакциите са основно върху main метода на класа на създаденото преди това приложение. Това, което трябва да направите, е: Прочети още…
* Сериализация на обекти
Публикувано на 05 декември 2015 в раздел ПИК3 Java.
Java ни предлага механизъм, наречен сериализация на обекти. При него даден обект се представя като бинарна поредица съдържаща описание на класа на обекта и неговите конкретни данни (член-променливи). Така получената бинарна поредица може да бъде изпращана чрез ObjectOutputStream – например да бъде записана във файл, да бъде изпратена по мрежата до друг компютър и т.н. Четенето на обекта се осъществява чрез прозцес наречен „десериализация“ – при него обекта се възстановява в паметта в оригиналния си вид. Извършва се чрез ObjectInputStream. Най-важното за процеса на сериализация-десериализация е, че те са платформено независими, т.е. няма проблем да е сериализиран на един компютър и да бъде десериализиран на друг, който е със съвсем различни характеристики (дори и различна Java виртуална машина). Прочети още…