C, PHP, VB, .NET

Дневникът на Филип Петров


Авторски архив

* Ограничено наследими (sealed) класове

Публикувано на 29 май 2023 в раздел ПИК3 Java.

Преди Java 17 в езика се следваше подход за наследяване, в който или всеки интерфейс/клас може да бъде разширяван (наследяван) от всеки с extends, или това е забранено чрез ключова дума final. С включването на новата ключова дума sealed се въвеждат ограничено наследими класове. Те дават разрешителен списък, с който се изреждат ограничено количество интерфейси/класове от същия пакет, които могат да имплементират/наследяват текущия. Прочети още…

.

 


* Игра на Пексесо в Java – упражнение за събития и обхождане на LinkedList

Публикувано на 17 май 2023 в раздел УКИ.

Ще създадем опростен вариант на играта Пексесо. На игралното поле са разположени четен брой карти с еднакви гърбове (при нашия вариант ще бъдат 20 на брой). Всяка една карта има точно една карта-двойник (двете имат една и съща картинка на лицевата страна). Играчът обръща две карти, след което:

  • ако картинките им не са еднакви, той ги връща обратно с гърба нагоре;
  • ако картинките им са еднакви, ги оставя с лицето нагоре.

Целта на играта е с максимално малко ходове да се обърнат всички карти с лицето нагоре. Прочети още…

.

 


* Упражнение за структура от данни Queue

Публикувано на 16 май 2023 в раздел УКИ.

Ще надградим проекта, в който се упражняваше структурата от данни стек, като реализираме по-разширен вариант на играта Война. При нея вместо картите да се премахват от тестетата на играчите, всяка спечелена ръка се връща най-отдолу в тестето на този, който е спечелил. Засега за опростяване на играта ще се отклоним от пълния ѝ вариант, като при равенство (когато получим карти с една и съща стойност) ще приемем, че битката печели чрез цвета във възходящ ред: спатия, каро, купа, пика (в истинската игра не е така). Ще печели играчът, който прибере всички карти. Ще използваме оригиналният дизайн със съвсем леки модификации – dealsValue вече ще започва да брои от 0 и ще се увеличава нагоре, като този брояч вече ще има смисъл на „колко на брой хода са направени от началото на играта“. Прочети още…

.

 


* Упражнение за структура от данни Stack

Публикувано на 16 май 2023 в раздел УКИ.

Ще демонстрирам работата със структура от данни стек (Stack) отново чрез пример с визуална програма. Това ще е опростен вариант на играта на карти, която е позната като „война“. Взима се стандартно тесте от 52 карти. Разбърква се добре и се раздава на две равни части. Когато играта започне, двамата играчи едновременно изтеглят и обръщат най-горната карта от своето тесте. Точка печели този, чиято карта е по-силна. Силата на картите не зависи от цветовете, а само от стойностите им, като във възходящ е следната: 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, А. Ако се паднат две карти с равна сила, никой не печели точка. Изтеглените карти не се връщат обратно в играта, а се отстраняват. Играта завършва тогава, когато се изчерпят и двете тестета. Печели играчът, който е натрупал повече точки (възможен е и равен резултат). Прочети още…

.

 


* Record в Java

Публикувано на 11 май 2023 в раздел ПИК3 Java.

В практиката често се работи с непроменими (immutable) обекти. Те се описват чрез класове, в които всички член променливи са private и final, и има само и единствено get методи. Така след като е създаден, обектът не може да се променя. Въпреки, че в зависимост от употребата може да се спестят някои елементи от шаблона, който ще покажа по-долу, едно цялостно решение би включило освен get методи до променливите, също метод hashCode(), метод equals() и метод toString(): Прочети още…

.

 


* Схема с преки или косвени връзки на Христаки Павлович, Емануил Васкидович и Неофит Рилски

Публикувано на 23 февруари 2023 в раздел История.

Преди време поблукувах схема, която я популяризираше проф. Иван Ганчев. Тя представя преки или косвени връзки на Христаки Павлович, Емануил Васкидович и Неофит Рилски с видни личности от 18 и 19 век. Може да намерите оригинала тук. Прочети още…

.

 


* Каменохвъргачки – катапулти и требушети

Публикувано на 18 февруари 2023 в раздел История.

Филмите често митологизират историята. Често сте виждали при битки как катапулти разрушават крепостни стени. Е, това е мит – просто не се е случвало. Прочети още…

.

 


* Играта Монопол

Публикувано на 04 февруари 2023 в раздел Общи работи.

Кой не е играл играта „Монопол“? Със сигурност поне сте я чували. А някои хора даже са се специализирали със стратегии – купуване и застрояване с приоритет на оранжевите и зелените (заради затвора), отчитайки математическата вероятност най-често да се хвърля 7, и т.н. Или дори нечестни стратегии – да застрояваш само с къщи и да не ги дострояваш до хотели, за да създадеш недостиг на къщи на пазара. И т.н. Прочети още…

.

 


* Домейн-ключ нормална форма

Публикувано на 05 декември 2022 в раздел Бази от Данни.

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

.

 


* Франо Селак – едновременно най-големия карък и най-големия късметлия в света

Публикувано на 06 ноември 2022 в раздел История.

Франо Селак е бил хърватски гражданин. Работил е като учител по музика. Той е едновременно най-големият карък и най-големият късметлия в света. Защо ли? Защото все му се случвали големи нещастия, но всеки път избягвал смъртта на косъм! Прочети още…

.