C, PHP, VB, .NET

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


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

* Капсулация на данни

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

Досега ние неосъзнато сме използвали капсулация на данни в процедурното програмиране. Представете си например функцията "indexOf()" на клас String. Не са много учениците, пък и специалистите, които са се интересували как точно е реализиран този метод. В общи линии ние се интересуваме какви са входните му параметри и връщаната от него стойност. Самият алгоритъм, който извършва работата остава скрит за вас. Още повече - алгоритъмът може след време да бъде променен (подобрен), но това няма да промени нашите програми и те ще продължат да функционират (вземете например алгоритмите за сортиране на масив - можете да използвате най-различни, които се различават само и единствено по скорост на изпълнение, но резултатът е един и същи). Именно такъв вид капсулация на данни има във всички методи, които сте писали. Прочети още...

.

 


* Полиморфизъм

Публикувано на 09 октомври 2009 в раздел ПИК3 Java.

Понятието "полиморфизъм" идва от биологията. То описва "съществуване на морфологично различни индивиди в границите на един вид" (wikipedia). Това например са пчелите и търтеите в пчелния кошер - те са от един вид, но имат съвсем различни функции. В обектно-ориентираното програмиране под "полиморфизъм" се разбира същото - различни обекти (индивиди) от един и същи вид (базов клас) извършват различни дейности. Тук се разбира, че индивидите наследяват характерните черти на вида, но променят някои от неговите функционалности. Ще казваме, че има полиморфизъм тогава, когато обекти от един и същи тип имат различна реализация на действия, свързани с този тип.

Досега се запознахме с  предефинирането на методи. При тях знаем, че можем да извикваме различни методи с едно и също име. Това се наричаше "предефиниране на метод": Прочети още...

.

 


* Абстрактни класове и интерфейси

Публикувано на 09 октомври 2009 в раздел ПИК3 Java.

Абстрактни са тези методи в клас, чиято реализация не е имплементирана. С други думи ние сме декларирали, че такъв метод трябва да има, но той все още не е описан как ще работи. Класове, които съдържат в себе си абстрактни методи наричаме "абстрактни класове".

В статията за класове и обекти дефинирахме "класовете" като "понятия". Когато говорим за "абстрактни класове", то би трябвало да разбираме "абстрактни понятия". По-доброто определение за такива класове обаче е "шаблони". В действителност когато декларираме методи, чиято реализация още не е изпълнена, ние даваме нещо като шаблон на наследниците на тези класове, който те просто трябва да "попълнят". Не е възможно да се правят инстанции на абстрактни класове (противоречи и с обикновената логика, защото какво би трябвало да означава "абстрактен реален обект"?). Прочети още...

.

 


* Хората и мухата

Публикувано на 09 октомври 2009 в раздел Математика.

Двама души стояли на разстояние 100 метра един от друг. В един момент тръгнали да вървят един срещу друг праволинейно с една и съща равномерна скорост - 3,6 км/ч. Една муха била кацнала на главата на единия човек и в момента на потеглянето отлетяла по посока на другия човек също праволинейно (странна муха) и равномерно със скорост 7,2 км/ч. Тя достигнала другия човек, стъпила на главата му и отново отлетяла наобратно със същата скорост към първия. Това се повтаряло дотогава, докогато хората стигнали един до друг и се разминали. Прочети още...

.

 


* Наследяване в Java

Публикувано на 08 октомври 2009 в раздел ПИК3 Java.

Както всеки обектно-ориентиран език за програмиране, така и Java позволява наследяване. Това е възможността един клас да наследи цялата функционалност на друг клас и да я разшири. Класът, който е наследяван се нарича "родителски клас", а класа който наследява се нарича "наследник". Освен да добавят нова функционалност, наследниците също могат да изменят съществуваща.

Нека вземем един примерен клас за деца с метод, в който децата играят играта "камък - ножица - хартия". В главната програма ще пуснем децата да изиграят 10 поредни игри: Прочети още...

.

 


* java.lang.Math

Публикувано на 07 октомври 2009 в раздел ПИК3 Java.

Нека разгледаме още един клас с доста статични методи, който се използва сравнително често. Това е класът Math - с него можем да достъпваме голямо количество математически функции. Ето по-голямата част от тях: Прочети още...

.

 


* Задача за 16-те точки

Публикувано на 04 октомври 2009 в раздел Математика.

Помните ли задачата за 9-те точки? Ето ви същата задача, но направена с 16 точки:

 
. . . .

. . . .

. . . .

. . . .
 

Свържете всички точки с шест прави отсечки без да си вдигате ръката и без да повтаряте. Предполагам, че този път няма да има проблем да се справите, но на тези, които не са решавали задачата с 9-те точки, препоръчвам да потърсят решението сами преди да гледат отговорите в предишната задача. Прочети още...

.

 


* Класове и пакети

Публикувано на 03 октомври 2009 в раздел ПИК3 Java.

Досега често използвахме понятието "обект", а на места се споменаваше понятието "клас". Всъщност в обектно ориентираното програмиране тези две понятия са неразделно свързани. Ще си позволя да направя следните обобщени дефиниции:

(Деф) Клас (class) наричаме набор от ограничения за достъп и описания на възможни действия, които могат да се извършват върху дефинирани променливи

(Деф) Обект наричаме практически представител на даден клас, в който са "попълнени" конкретни данни в дефинираните променливи и така вече е възможно да бъдат извършвани конкретните действия

По този начин можем да приемем, че "класовете са шаблони за обекти". Също използвано определение е, че "класовете описват обектите". Най-често срещаното е, че "класовете са типове за обектите". Последното прави аналогия с връзката "типове данни" и "променливи". Накрая трябва да знаем също, че в Java обектите се създават чрез оператор new и стоят в частта на паметта heap. Техните референции (променливи съдържащи указател към обектите) пък се записват в паметта stack.

Нека вече разгледаме първия пример. Във файл kidsplay.java сме записали: Прочети още...

.

 


* Запалени коли Хюндай пред блока

Публикувано на 30 септември 2009 в раздел Общи работи.

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

Точно си пишех с приятел в ICQ на компютъра, когато приятелката ми се събуди и каза:

- Отиди да видиш защо кучето лае, чух някакво силно тропане по стълбите!

Прочети още...

.

 


* Берра и Ицо

Публикувано на 30 септември 2009 в раздел Кучета.

Преди три дни се видяхме и братовчед ми Ицо в парка. Заедно разходихме Берра:

Ицо и Берра

Той по принцип се страхува от нея, но както виждате лека полека "ледът се разчупва": Прочети още...

.