Чекор по чекор
Почетни чекори со Java
Објектно оријентирани концепти во Јава - Прв дел
Објектно оријентирани концепти во Јава - Втор дел
Објектно оријентирани концепти во Јава - Трет дел
Јава сервлети - Прв дел
Единствен Јава објект (singleton)
Најчести 10 грешки што ги прават Java програмерите
повеќе...
Што е тоа ...
... IDE
... Tomcat
... објект?
... класа?
... наследување?
... интерфејс?
... наследување? (прашања и одговори)
повеќе...
За загревање
Нов проект во Eclipse?
Примитивни податочни типови
Променливи
Оператори
Доделувачки, аритметички и Unary оператори
Оператори за еднаквост, релации и услови
Изрази, искази и блокови
повеќе...
Како да ...
... конвертирам java.sql.Timestamp во java.util.Date
... зададам формат на датум
... ковертирам „long“ во HEX и обратно
... прочитам датотека и променам стринг
... креирам ZIP датотека
... поврзам Apache и Tomcat користејќи mod_jk
... пратам недефиниран број на атрибути до некоја метода
повеќе...
Java преку примери
new Socket(String addr,int port)
new URL(String address)
new URL(String protocol, String host, int port, String file)
CommPort: getInputStream()
CommPortIdentifier: getPortIdentifiers()
Statement: executeQuery(String sql)
Statement: getMaxRows()
повеќе...
Грешка
Нов напис
Рубрика:
Наслов:
  
  

страна број:123
Објектно оријентирани концепти во Јава - Втор дел
„Пакетирање“ на класи

Во првиот дел најчесто ја користевме класата „Drvo“. „Drvo“ и не е многу оригинално име за класа, но истото перфектно одговара на класата. Проблемот е во тоа што истото име може да одговара и на друга класа исто така и веднаш ќе имаш конфликт при именувањето. Таков конфликт не е толку страшен кога работиш со свои класи, но кога во програмот ќе треба да вклучиш и класи кои ги напишал некој друг, хух, тогаш нередот ќе започне.

Замисли на пример дека ги имаш дизајнирано сите класи кои ќе ја обработат логиката за програм кој ќе ја следи продажбата на копчиња за облека. Во тој случај нормално ќе биде ако имаш класа наречена „Button“ (копче, ама на англиски), но нарачателот на програмот сака убав графички изглед на програмот. Почнуваш со изработка на графичкиот интерфејс и доаѓаш до моментот кога заклучуваш дека Јава-та има вградена класа која се вика „Button“ со која се креира корисничка контрола. Како инаку би го решил овој конфликт без да мораш се вратиш на твојот програм и да ја смениш секоја референца до твојата класа „Button“?

На помош пристигаат пакетите на класи (Class package). јава овозможува пакети на класи (во понатамошниот текст само пакети, како што е и во жаргонскиот говор) како начин на групирање на класите водејќи се спрема нивната цел, компанијата која ги направила или по било кој критериум сакаш (секако дека постојат конвенции и за тоа, но за тоа подоцна). Се додека класите се во различни пакети, иако истите имаат исто име ќе можеш да ги користиш и двете без никакви конфликти.

Вообичаено класите кои ги креираш се сместени во „вообичаениот пакет“, тоа е неименуван пакет каде што се сите класи кои немаат назначен пакет. За повеќето од твоите програми не е страшно ако класите се сместени во вообичаениот пакет бидејќи сите вградени класи на Јава и оние кои ќе ги пронајдеш на Интернет или оние класи од други производители на софтвер се сместени, односно групирани во пакети, што е причина плус да не се грижиш при именување на твоите класи бидејќи нема да дојде до конфликт со класите од другите пакети.

Секако дека и ти ќе сакаш да ги групираш твоите класи во пакети доколку ти е во план да ги искористиш истите и во идни проекти (каде што може да дојде до конфликт со имињата на класите), или доколку сакаш да ги дадеш на користење на други програмери (каде што нивните имиња на класи можат да створат конфликт со твоите). За да ги сместиш класите во пакети едноставно треба да го назначиш името на пакетот на почетокот на твојата класа. На пример класите кои се развиени од Java.com.mk се групирани во пакетот mk.com.java со додавање на следната линија во почеток на нашите Јава класи:

package mk.com.java;

Да не се изненадиш дека при компајлирање на програмот, класата која е групирана во пакет ќе биде сместена во директориум базиран според името на пакетот. На пример при компајлирање на класата Button.java која е групирана во пакетот mk.com.java ќе се креира датотека Button.class во поддиректориум со патека „mk/com/java/“ кој е сместен во основната патека на проектот. За да ја извршиш или да ја искористиш на друг начин класата од тој пакет треба да ја посочиш патеката во која е сместен „mk“ директориумот. Така да, за да ја извршиш класаста „mk.com.java.MojProgram“ треба да одиш во директориумот во кој е сместен директориумот „mk“ (кој го содржи директориумот „com“, а тој го содржи директориумот „java“ каде е сместена класата MojProgram.class) трена да искуцаш:

C:\MojProgram> java mk.com.java.MojProgram

Јава-та автоматски ќе ја побара класата во директориумот „C:\MojProgram\mk\com\java\“.

При креирње на графичкиот интерфејс ќе дознаеш дека вградената класа Button всушност е сместена во пакетот „java.awt“, кој исто така содржи и други класи за креирање на основен кориснички интерфејс во Јава (чисто за задоволување на радозналоста, AWT е кратенка од „Abstract Windowing Toolkit“). Така да целосното име на Button класата е „java.awt.Button“. За да ја искористиш оваа класа во твојот програм, а да не настане конфликт со твојата класа Button треба да го искористиш целосното име на класата:

//Kreiranje na Java Button
java.awt.Button button = new java.awt.Button();

Всушност самиот компајлер за Јава ќе „бара“ да го користиш целосното име на било која класа која не е сместена во истиот пакето со моменталната класа.

Но што ако твојот програм не содржи класа која се вика Button за да има конфликт со некоја класата која е вградена во Јава (или искористена во друг пакет)? Доколку цело време ја куцаш целосната патека на секоја класа ќе ти „отпаднат прсти од куцање“. За да си ги „заштедиш прсите“ можеш да ја импортираш класата во моменталниот пакет со додавање на следнава линија во почетокот на твојата „.java“ датотека (под линијата „package“, доколку ја има):

import java.awt.Button;

Откако е импортирана класата истата можеме да ја користиме со нејзиното скратено име (Button) исто како да е дел од пакетот во кој се наоѓа класата која ја креираме.

Да сапоменам и друга одлична опција која ни овозможува импортирање на целосни пакети во моменталниот пакет. Тоа е од одлична помош кога се користат повеќе класи од некој пакет. На пример кога треба да се направи пристоен кориснички интерфејс сигурно ќе користиш еден куп класи од java.awt пакетот и замисли да мора да ја листаш секоја класа со посебниот клучен зборт „import“, хух напорно. За да ти се олесни импортот на класите дизајнирана и имплементирана е опцијата со која можеш да ги импортираш сите класи од еден пакет само со една „import“ линија:

import java.awt.*;

Со ѕвездичката на крајот од линијата потенцираме дека сакаме сите класи од пакетот java.awt да ни бидат достапни за користење.

За да можеш да импортираш класа, или да ја користиш преку нејзиното целосно име истата мора да биде декларирана како „public“. Вообичаено класите се достапни за користење само од истиот пакет на кој тие припаѓаат. Очигледно е дека тоа и баш не е некое посакувано ограничување ако планираш да ги дистрибуираш твоите класи за да можат да бидат користени во други проекти или дури и ти да ги користиш во друг твој проект, поради таа причина, односно за да може да се пристапи до класите и од други пакети истите мора да бидат маркирани како „public“. На пример класата „Drvo“ декларирана како „public“ би изгледала вака:

package mk.com.java;

public class Drvo {
    ...
    ...
}


Истото важи и за класата „Jabolknica“:

package mk.com.java;

public class Jabolknica extends Drvo {
    ...
    ...
}
страна број: 1 2 3 4 << претходна страна : : следна страна >> 
 
Коментирај
автор: Анонимус
Анонимните коментари ќе бидат објавувани веднаш после нивната проверка.
За да вашиот коментар биде веднаш валиден претходно пријавете се или креирајте свој профил


напишал: Анонимус (02.03.2009 13:12:10)
Idajava za vakov portal vi e super. I moze da se nauci osnovata na java programiranjeto. Od mene edinstvena zabeleska e sto ne postoi forum. Mislam deka bi bilo super da se razmenuvaat znaenja pomegu korisnicite.
напишал: igor (03.04.2009 15:28:18)
Благодарам, што се однесува до форумот, го има ... http://forum.java.com.mk

поздрав
напишал: Анонимус (29.06.2011 14:25:44)
>> Енкапсулација во слободен превод би значело дека внатрешната поставеност (репрезентација) на објектот е одвоена од интерфејсот кој се презенетира кон другите објекти во твојот програм

Одделувањето на интерфејсот од имплементацијата се нарекува implementation hiding (криење на имплементацијата). За таа цел се користат спецификаторите за пристап, private, public, protected (ако не се искористи ниеден од нив, тогаш се работи за package-access). Додека пакувањето на податоците и методите во рамките на класата, во комбинација со implementation hiding, се нарекува енкапсулација (затварање, зачаурување на класата). Резулатот е податочен тип, класа со свои карактеристики и однесувања.
пребарување
најди
 
Форум
 
JugMK
GetJava Download Button
http://www.eclipse.org
 
 
 
 
Copyrights © 2006 - 2017 by Java.com.mk
Права и правила за користење на java.com.mk
Контакт адреса:
contact AT java.com.mk
Powered by Supernova v.0.70 beta
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc.
Сите други трговски марки се сопственост на нивните сопственици.