slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Методика наставе рачунарства PowerPoint Presentation
Download Presentation
Методика наставе рачунарства

Loading in 2 Seconds...

play fullscreen
1 / 24

Методика наставе рачунарства - PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on

Методика наставе рачунарства. Владимир Филиповић vladaf@matf.bg.ac. rs. Сопствени пакети и унутрашње класе. Владимир Филиповић vladaf@matf.bg.ac. rs. Пакети. Програмери групишу сличне тј. повезане типове у пакете и на тај начин избегавају конфликте у именима и контролишу приступ .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Методика наставе рачунарства' - sunila


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Методика наставе рачунарства

Владимир Филиповић

vladaf@matf.bg.ac.rs

slide2

Сопствени пакети и унутрашње класе

Владимир Филиповић

vladaf@matf.bg.ac.rs

slide3
Пакети

Програмери групишу сличне тј. повезане типове у пакете и на тај начин избегавају конфликте у именима и контролишу приступ.

Пакет је група повезаних типова (класа, интерфејса, енумерисаних типова и типова нотације)за коју је обезбеђује заштита при приступу и управљање простором имена.

slide4
Пакети (2)
  • Разлози за паковање класа и интерфејса у пакете су :
  • Програмери који користе такве типове са лакоћом могу одредити да су ти типови повезани.
  • Програмери на основу имена пакета лакше могу пронаћи оне типове који им требају.
  • Имена типова у једном пакету неће бити у конфликту са именима типова у другим пакетима, зато што сваки нови пакет креира нови простор имена.
  • Програмер може допустити да типови унутар пакета имају неограничен приступ један другом, а да приступ буде ограничен за све типове који нису у том пакету.
slide5

Пакети (3)

Процес креирања сопствених пакета се може описати у три корака.

Први корак је избор имена пакета.

Препорука произвoђaчa: коришћење назива Интернет домена са елементима поређаним по обрнутом редоследу.

На пример, ако је назив домена: matf.bg.ac.rs, назив пакета би требало да почне са rs.ac.bg.matf.

На тај начин се постиже да назив пакета буде јединствен.

По конвенцији, називи пакета почињу малим словима.

slide6

Пакети (4)

Други корак је креирање структуре директоријума (фасцикли, фолдера).

Ако је назив пакета из једног дела (нема тачака у називу), назив директоријума поклапа се са називом пакета.

На пример, ако је назив пакета prviи директоријум ће се звати prvi.

Ако се назив пакета састоји из више делова (одвојених тачком), тада за сваки део треба формирати поддиректоријум.

На пример, за rs.ac.bg.matf, главни директоријум треба да се зове rs, његов поддиректоријумac, његов поддиректоријум bgи у њему треба да постоји директоријум matf. У поддиректоријум matfсмештају се датотеке пакета.

slide7

Пакети (5)

Трећи корак је додавање packageнаредбе(прва наредба Јава програма, на почетку датотеке, пре прве наредбе import) и упис ових датотека у одговарајући поддиректоријум.

На пример, ако је назив пакета rs.ac.bg.matf, на почетку сваке датотеке у том пакету мора писати:

package rs.ac.bg.matf;

slide8

Пакети (6)

Да би могло да се рукује са класама, мора се знати где се класе налазе у оквиру система. Место где се класе налазе одређује се преко команде оперативног система CLASSPATH. Овом командом се дефинише путања до директоријума у ком Јава окружење за извршавање тражи класе.

АкоCLASSPATHније дефинисан, подразумева се директоријумjava\libу конкретној инсталацији Јаве.

Комбиновањем путање дате у CLASSPATH-уи назива пакета, Јава Виртуелна Машина проналази класе са којима се оперише.

Код модерних интегрисаних развојних окружења, као што је Eclipse, подешавање путање за класе се врши избором одговарајуће опције у подешавању особина пројекта.

slide9

Угнеждене класе

Јава допушта да се дефинише класа унутар неке друге класе. Таква класа се назива угнеждена класа.

Постоје два начина креирања угнеждених класа:

class OuterClass {

...

static class StaticNestedClass {

...

}

class InnerClass {

...

}

}

Угнеждене класе које су статичке се називају статичке угнеждене класе, а угнеждене класе које нису статичке се називају унутрашње класе.

slide10

Угнеждене класе (2)

Постоји неколико разлога за коришћење угнеждених класа:

То је начин логичког груписања класа које се користе само на једном месту. Ако је нека класа од користи само једној класи, тада има смисла да се она уметне у класу којој користи, па да тако буду заједно.

Тиме се побољшава енкапулација (учаурење).Размотримо два класе Аи B, при чему Bзахтева приступ пољима класе Акоја би иначе могла бити приватна. Ако се класа Bсмести унутар класе А, поља класе А могу бити приватна а класа Bи даље може да им приступа.

Угнеждене класе доводе до читљивијег кода који се лакше одржава.Угнеждавање малих класa у велику доводи до тога да код неке операције буде смештен близу места коришћења.

slide11

Угнеждене класе (3)

Приступ елементима спољашње класе

slide12

Унутрашње класе

Исто као поља примерка и методи примерка, тако се и унутрашња класа придружује примерку класе која је обухвата, па и она има директан приступ до свих поља и метода објекта који је садржи.

Како је унутрашња класа придружена примерку тј. објекту, то она сама не може садржати статички члан.

Објекти примерци унутрашње класе постоје само у оквиру примерка спољашње класе.

slide13

Унутрашње класе (2)

Када се дефинише унутрашња класа, она је члан спољашње класе на исти начин као и остали чланови (поља и методе).

Унутрашња класа може имати модификаторе приступа као и остали чланови, па је приступ њој изван спољашње класе одређен приступним атрибутима на исти начин како то важи за поља и за методе.

Угњеждена класа би требало да има специфичну повезаност са спољашњом класом. Произвољно угњеждење једне класе у другу нема много смисла.

Класа највишег нивоа је класа која садржи угњеждену класу, али сама по себи није угњеждена

slide14

Пример унутрашње класе

У овом примеру се креира класа која садржи унутрашњу класу. Последом наредбом је креиран објекат типа Spoljasnja.

public class Spoljasnja

{

// Unutrasnja

public class Unutrasnja

{

// Detalji unutrasnje klase ...

}

// Ostali clanovi Spoljasnje klase

}

Spoljasnja sp = new Spoljasnja();

slide15

Пример унутрашње класе (2)

Последњом наредбом на претходном слајду није креиран објекат класе Unutrasnja.

Ако је потребно да се креира примерак унутрашње класе, то се постиже тако што се реферише на име унутрашње класе са именом спољашње класе као квалификатором.

Дакле, примерак класе Unutrasnjaсе креира следећом наредбом:

// definisanje objekta unutrasnje klase

Spoljasnja.Unutrasnja unut = sp.new Unutrasnja();

У горњем примеру је креиран објекат унутрашње класе који је придружен раније креираном објектуна који реферише променљива sp.

Другим речима, примерак класеUnutrasnjaје креиран у контексту објектаsp.

slide16

Пример унутрашње класе (3)

Унутар нестатичких метода класе Spoljasnja, можемо користити име класе Unutrasnjaбез квалификовања, пошто ће оно од стране преводиоца бити аутоматски квалификовано променљивом this.

Тако се унутар нестатичког метода класе Spoljasnjaможе креирати нови примерак класеUnutrasnjaса:

Unutrasnjaunut=newUnutrasnja();

што је еквивалнтно са:

this.Unutrasnjaunut=this.newUnutrasnja();

slide17

Локалне унутрашње класе

Класа се може дефинисати унутар метода, и то је тзв. локална унутрашња класа(енг. local innerclass).

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

Добар пример су ослушкивачи догађаја(енг. event listener).

Локална унутрашња класа може реферисати променљиве декларисане у методу у чијој дефиницији се појављује, али само ако су те променљиве финалне.

slide18

Локалне унутрашње класе (2)

Локалне класе имају следећи ниво приступа променљивима у објекту који их садржи :

  • Локална унутрашња класа може директно приступити члановима (пољима и методама) класе која је садржи.
  • Локална унутрашња класа не може приступити локалним променљивима метода обухватајућег опсега, осим у случају када се ради о финалним локалним променљивима.
  • Као и код унутрашњих класа, декларација типа унутар локалне унутрашње класе сакрива декларацију истоименог елемента у објекту који обухвата ову класу.
slide19

Локалне унутрашње класе (3)

За чланове локалних класа постоје следећа ограничења:

  • У локалној класи се не може дефинисати статички иницијализатор или интерфејс.
  • Локлана класа може имати статичке чланове само у случају да су то променљиве са константном вредношћу.
slide20

Анонимне класе

Анонимне класе омогућују програмеру да пише концизан код. Оне допуштају да се истовремено декларише класа и креира њен примерак, при чему та класа нема име.

Другим речима, оне су као локална класа, само што немају име. Анонимне класе се користе када се локална класа користи само једном.

Анонимне класе су изрази. Синтакса анонимне класе је израз, слично као позив конструктора, осим што се дефиниција класе налази унутар блока кода у оквиру израза.

slide21

Анонимне класе (2)

Израз за анонимну класу се састоји од следећих елемената:

  • Оператор new.
  • Име интерфејса који се имплементира или класе из које се наслеђује.
  • Мале заграде које садрже аргументе конструктора, као када се у нормалном случају креира примерак класе.Напомена: ако се ради о имплементацији интерфејса, тада нема контруктора, па иду само отворена и затворена мала заграда.
  • Блок који представља тело декларације класе. У том блоку је допуштено постојање декларација метода, али није допуштено постојање наредби.
slide22

Анонимне класе (3)

Анонимне класе имају исти ниво приступа локалним променљивима у објекту који их садржи као што је то случај код локалних класа:

  • Анонимна класа може директно приступити члановима (пољима и методама) класе која је садржи.
  • Анонимна класа не може приступити локланим променљивима метода објекта који је садржи, осим у случају када се ради о финалним локалним променљивима.
  • Као и код унутрашњих класа, декларација типа унутар анонимне класе сакрива декларацију истоименог елемента у обухватајућем опсегу.
slide23

Анонимне класе (4)

Што се тиче ограничења за чланове анонимне класе, ту је ситуација иста као код локалних класа:

  • У анонимној класи се не може дефинисати статички иницијализатор или интерфејс.
  • Анонимна класа може имати статичке чланове само у случају да су то променљиве са константном вредношћу.

У анонимној класи се могу декларисати следећи елементи:

  • поља,
  • додатни методи (чак иако не имплементирају метод наткласе),
  • иницјализатори примерка и
  • локалне класе.
slide24
Захвалница

Велики део материјала који је укључен у ову презентацију је преузет из презентације коју је раније (у време када је он држао курс Објектно орјентисано програмирање) направио проф. др Душан Тошић.

Хвала проф. Тошићу што се сагласио са укључивањем тог материјала у садашњу презентацији, као и на помоћи коју ми је пружио током конципцирања и реализације курса.

Надаље, један део материјала је преузет од колегинице Марије Милановић.

Хвала Марији Милановић на помоћи у реализацији ове презентације.