Објектно-оријентисано...

Preview:

Citation preview

-РЕЧНИК ПОЈМОВА

-ПОДСЕТНИК

АУТОР: СЕБАСТИАН НОВАК

ШКОЛА РАЈАК ТРОМЕСЕЧНИ КУРС ЈАВЕ ОСНОВЕ ПРОГРАМИРАЊА

ww

w.ra

jak

.rs

ОСНОВЕ ПРОГРАМИРАЊА (1)

Програм

Текстуална форма алгоритма, представљена

рачунару

Променљива

Именовани део меморије рачунара који чува

податке у себи

Синтакса

Правила за писање програма на неком

програмском језику – граматика и правопис

Семантика

Значење иза реченица – наредби написаних на

програмском језику

ww

w.ra

jak

.rs

ОСНОВЕ ПРОГРАМИРАЊА (2)

Програм се покреће и извршава линију по линију кода, редом како је написан

Да би програм могао да буде покренут мора у себи имати операцију main public static void main (Strng[ ] args){

Све у Јави се налази унутар класа 1 .java фајл = 1 класа

Програм почиње извршавање од прве линије операције main public static void main (Strng[ ] args){

Класа која у себи има main се назива Главном класом програма, јер она дефинише како он ради

ww

w.ra

jak

.rs

КОМЕНТАРИ

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

Врсте:

Линијски – у једном реду

Вишелинијски – у више редова

// ovaj deo kod sluzi za nesto vazno

/*

detaljno objasnjenje

O nekom vecem delu koda

i nekim instrukcijama kako se on koristi

*/

ww

w.ra

jak

.rs

ПРОМЕНЉИВЕ (1)

Променљиве су именовани простор меморије,

који смо ми заузели за наш програм

Омогућавају нам да ми уносимо податке у

програм у нама природном језику ( 1, 2, 3,4) а

да се рачунару то представи у виду јединица и

нула - испод хаубе.

Да би направили променљиву, морамо јој

навести тип и дати јој име

ТИП ИМЕ

ww

w.ra

jak

.rs

ПРОМЕНЉИВЕ (2)

Типови променљивих:

Целобројни – int

Реални – double

Логички – boolean , чува у себи тачно или нетачно

Знаковни – char , чува у себи једно словo - знак

У променљиву целобројног типа могу да се стављају само цели бројеви!

Тип податка мора одговарати типу променљиве!

Примери декларације неких променљивих:

int x;

int x,y,z,e,d,r,g,h;

double r,w,qq,pp, tR_, t1, t2, t___t1;

boolean logicka1 = true;

boolean logicka2 = false;

ww

w.ra

jak

.rs

ОПЕРАТОРИ

Над променљивама можемо да радимо неке

операције – уз помоћ оператора

Оператори – врше операције

Имамо аритметичке, релационе и логичке

Аритметички: + , - , *, /, =

Релациони: == , !=, >, >=, <, <=

Логички: &&, ||, !

ww

w.ra

jak

.rs

АРИТМЕТИЧКИ ОПЕРАТОРИ (1)

= оператор за доделу вредности

Са леве стране се пише променљива у коју

стављамо неку вредност

Са десне стране се пише вредност која се ставља у

променљиву

+ оператор за сабирање, сабирци се пишу лево

и десно од оператора

int x = 2 + 2;

double y = 2.5 + 3.5;

double x1 = y + 10.5;

ww

w.ra

jak

.rs

АРИТМЕТИЧКИ ОПЕРАТОРИ (2)

Оператор - , умањеник (онај од кога се одузима) се пише са леве стране оператора, умањилац (вредност која се одузима од умањеника) се пише са десне стране

int x = 4 – 2;

int y = 10 – x;

double z = 99.5 – 0.49;

Оператор *, чионици се пишу са леве и десне стране:

int x = 9 * 9;

int y = 4 * 3;

double p = 99.01 * 0.343432;

ww

w.ra

jak

.rs

АРИТМЕТИЧКИ ОПЕРАТОРИ (3)

Оператор / , дељеник (онај кога делимо) се

пипе са леве стране, делиоц (вредност са којом

делимо дељеника) са десне:

int x = 8 / 4;

int y = 10/3;

double x = 10/3;

double y = 33.0344 / 4233.4;

ww

w.ra

jak

.rs

СКРАЋЕНИ ОБЛИЦИ ОПЕРАРАЦИЈА

Због оваквих ситуација су уведене скраћени

облици:

jakoDugackoImePromenljive = jakoDugackoImePromenljive + 1;

jakoDugackoImePromenljive++; // uvecava za 1

jakoDugackoImePromenljive--; // umanjuje za 1

jakoDugackoImePromenljive+=4; // uvecava za 4

jakoDugackoImePromenljive -=1; // umanjuje za 1

jakoDugakoImePromenljive *= 4; //mnozi sa 4

jakoDugackoImePromenljive /=2; //deli sa 4

ww

w.ra

jak

.rs

ПРИОРИТЕТИ АРИТМЕТИЧКИХ

ОПЕРАЦИЈА

Приоритети рачунских операције, аритметике

су исти као и у математици

Сложеније изразе пишемо употребом

оператора заграда ( ) које дефинишу

приоритет – исти као у математици, оно у

загради ће се израчунати пре онога ван ван

заграде

int x = 9 * ( ( 99 + 2 ) - 100/10 );

int y = x*8 + (4 – x*10) + ( 99 – 9);

ww

w.ra

jak

.rs

РЕЛАЦИОНИ ОПЕРАТОРИ (1)

Користе се за постављање логичких услова

Пореде вредност са леве стране и вредност са

десне неком од операција поређења

Резултат ових операција је true или false

ww

w.ra

jak

.rs

РЕЛАЦИОНИ ОПЕРАТОРИ (2)

Оператор за проверу једнакости, ==

Проверава да ли је десна страна једнака са левом

boolean rez = 10 == 2; // rezultat ce biti false

boolean rez2 = 1 == 1 ; // rezultat ce biti true

Оператор за проверу неједнакости, !=

Проверава да ли је десна страна различита од

леве

boolean rez = 10 != 2; // rezultat ce biti true

boolean rez2 = 1 != 1 ; // rezultat ce biti false

ww

w.ra

jak

.rs

РЕЛАЦИОНИ ОПЕРАТОРИ (3)

Оператор >, проверава да ли је вредност са

десне стране већа од вредности са леве стране

boolean b = 10 > 2; // rezultat ce biti true

boolean b1 = 1 > 1; // rezultat ce biti false

boolean b2 = 1 > 2; // rezultat ce biti false

Оператор >=, проверава да ли је вредност са

десне стране већа или једнака вредности са

леве стране

boolean b = 10 >= 2; // rezultat ce biti true

boolean b1 = 1 >= 1; // rezultat ce biti true

boolean b2 = 1 >= 2; // rezultat ce biti false

ww

w.ra

jak

.rs

РЕЛАЦИОНИ ОПЕРАТОРИ (4)

Оператор <, проверава да ли је вредност са

десне стране мања од вредности са леве стране

boolean b = 10 < 2; // rezultat ce biti false

boolean b1 = 1 < 1; // rezultat ce biti false

boolean b2 = 1 < 2; // rezultat ce biti true

Оператор <=, проверава да ли је вредност са

десне стране мања или једнака вредности са

леве стране

boolean b = 10 <= 2; // rezultat ce biti false

boolean b1 = 1 <= 1; // rezultat ce biti true

boolean b2 = 1 <= 2; // rezultat ce biti true

ww

w.ra

jak

.rs

ЛОГИЧКИ ОПЕРАТОРИ (1)

Врше логичке операције над логичким

вредностима или променљивама

Оператор за негацију логичке вредности, !

Претвара тачно у нетачно, нетачно у тачно

boolean b1 = !true; // rezultat ce biti false

boolean b2 = !false; // rezultat ce biti true

boolean t = true;

boolean b3 = !t; // rezultat ce biti false

ww

w.ra

jak

.rs

ЛОГИЧКИ ОПЕРАТОРИ (2)

Оператор за вршење операције ЛОГИЧКОГ И,

&&, резултат је true, само ако су обе

стране true, у свим осталим случајевима је

false

boolean t1 = true;

boolean t2 = true;

boolean n1 = false;

boolean n2 = false;

boolean b = t1 && t1; // rezultat ce biti true

boolean b1 = t1 && n1l // rezultat ce biti false

boolean b1 = 9 > 4 && 3 > 2; // rezultat ce biti true

boolean b2 = 4 < 9 && 2 ==2; // rezultat ce biti false

ww

w.ra

jak

.rs

ЛОГИЧКИ ОПЕРАТОРИ (3)

Логичко И користимо када желимо да направимо

сложени услов, који се састоји од више једноставних

услова

Биће тачан само ако су сви једноставни у њему тачни

Који год да је нетачан од једноставних, цео сложен је

нетачан

Пример, услов да студент положи испит:

predispitneUradjene && brojBodova>=55 && imaPotpis &&

ispitPrijavljen && semesterOveren

Биће једино тачано ако су сви појединачни услови тачни

Који год да је нетачан чини цео израз нетачним јер се ради о

логичком И

ww

w.ra

jak

.rs

ЛОГИЧКИ ОПЕРАТОРИ (4)

Логичко ИЛИ користимо, ||, када желимо да

направимо сложени услов, који се састоји од

више једноставних услова

Цео сложен услов ће бити тачан ако је бар један од

једноставних тачан

Једино ће бити нетачан ако су сви нетачни

Означава се са симболом ||

boolean t = true;

boolean n = false;

boolean b = true || false ; // rezultat true

boolean b1 = t || n; // rezultat true

ww

w.ra

jak

.rs

ЛОГИЧКИ ОПЕРАТОРИ (5)

Пример, услов да студент падне на испиту:

!predispitneUradjene || brojBodova<55 || !imaPotpis ||

!ispitPrijavljen || !semesterOveren

Који год од ових услова да буде тачан, студент је пао

испит.

Једино ће положити испит ако ниједан од ових услова се

не оствари.

ww

w.ra

jak

.rs

ИСПИС ПОДАТАКА НА КОНЗОЛУ

Користимо готову функцију по имену println

Која се налази у групи функција за излаз

А функције за излаз се налазе у групи системских

функција

Користимо оператор . за приступ деловима кода

Како користимо println?

System.out.println(“NEKI TEKST ZA ISPIS”);

System.out.println(4);

int x=9;

System.println.out(x);

System.out.println(“X je:” + x); // ispisace se: X je: 9

ww

w.ra

jak

.rs

УНОС ВРЕДНОСТИ ПРОМЕНЉИВЕ ПРЕКО

ТАСТАТУРЕ

Можемо уносити преко тастатуре податке које

користи наш програм

За то имамо Scanner

Како га користимо:

Scanner nekoIme = new Scanner(System.in);

int x = nekoIme.nextInt();

double y = nekoIme.nextDouble();

ww

w.ra

jak

.rs

КОНТРОЛА ТОКА

Можемо као и на дијаграмима да одлучимо

куда ће ићи наш програм

ww

w.ra

jak

.rs

IF

if (USLOV){

// ako je tacan uslov

// uradi nesto

}

// ako nije tacno samo

// preskoci

// i nastavi dalje dole

int x = 4;

if ( x ==4){

System.out.println(“X je 4!”);

}

ww

w.ra

jak

.rs

IF - ELSE

if (uslov){

// ako je tacan uradi nesto

} else {

// nije tacan uslov

// uradi nesto

}

int brBodova = 55;

if(brBodova>=55){

System.out.println(“Polozio!”);

} else {

System.out.println(“Pao!”);

}

T T

ww

w.ra

jak

.rs

IF – ELSE IF – … - ELSE IF – ELSE

НИЗ УСЛОВА, РЕДОМ СЕ ПРОВЕРАВАЈУ

ИЗВРШАВА СЕ ПРВИ КОЈИ БУДЕ ТАЧАН , ОСТАЛИ СЕ НЕ ПРОВЕРАВАЈУ

ДАЉЕ

ww

w.ra

jak

.rs

IF – ELSE IF – ELSE IF .. ELSE

if(uslov1){

} else if (uslov2){

} else if (uslov 3){

} …

} else {

}

if(x==1){

System.out.println(“X je 1!”);

} else if (x==2){

System.out.println(“X je 2!”);

} else if (x==3){

System.out.println(“X je 3!”);

} else {

System.out.println(“X nije ni 1, ni 2, ni 3!”);

}

ww

w.ra

jak

.rs

SWITCH CASE CASE CASE DEFAULT

Користимо када сигурно знамо које све вредности може имати нека

променљива, да не пишемо предугачке if-else if-ове

ww

w.ra

jak

.rs

SWITCH CASE CASE CASE DEFAULT

switch (neka_promenljiva){

case vrednost1:

nekeNaredbe;

break;

case vrednost2:

nekeNaredbe;

break;

default:

nekeNaredbe;

break;

}

int x = 4;

switch (x)

ww

w.ra

jak

.rs

ОЛАКШАВАЊЕ РАДА СА SWITCH –CASE

КОНСТАНТЕ

Често switch-case-ови могу да буду обимни и тада постаје компликација сналажење међу case-овима, да се нађе која је вредност за шта

Употреба константи – имена за неке вредности

final int IME_ZA_CASE; // obicno se pisu velikim slovima

// jednom se zada vrednost i ne moze se vise promeniti

// neophodno napisati final i tip podatka, pa i ime

switch(x){

case IME_ZA_CASE_KOJE_IMA_SMISLA:

// neke naredbe

break;

ww

w.ra

jak

.rs

ПЕТЉЕ

Предстваљају механизам за понављање

одређене групе операција докле год је неки

услов тачан

ww

w.ra

jak

.rs

WHILE ПЕТЉА

while(uslov){

// radnje za ponavljanje

// dokle god je tacan uslov

}

x = 4;

while (x>0){

x = x – 1;

}

ww

w.ra

jak

.rs

DO-WHILE ПЕТЉА

Прво се нешто одради, па се затим провери

услов да ли то треба урадити поново

do {

// radi nesto

} while(uslov);

// ako je tacan uslov, ponovi radnju

// ako nije tacan, kraj petlje

// idi dalje dole

int x = 9;

do {

System.out.println(“X je :” + x);

} while(x !=9);

// ipak se izvrsilo

// ali samo jednom

ww

w.ra

jak

.rs

БРОЈАЧКА ПЕТЉА - FOR

Често неке радње морамо да поновимо одређен

број пута. Бројимо сваки пут када урадимо

нешто и проверимо да ли смо урадили то

довољан број пута.

Мисао која води рачуна о броју понављања се

зове бројач

У јави имамо for петљу, која:

Поставља бројач на почетну вредност (нпр 0)

Дефинише услов за проверу, колико се пута мора

поновити

Дефинише корак бројања

ww

w.ra

jak

.rs

FOR ПЕТЉА

for (намештање бројача ; услов ; корак бројања){

// sta da se ponavlja

}

for (int i =0; i<10; i++){

System.out.println(“Sklek uradjen”);

}

ww

w.ra

jak

.rs

НИЗОВИ (1)

Често имамо велики број променљивих које

имају заједничку улогу

Тада их групишемо у колекцију – низ – под

истим именом

Свака променљива је само један елемент у

низу и приступа јој се на основу њеног места у

низу – индекса

Индекс иде од 0 до бројЕлеменатаУНизу – 1

Оператор за приступ елементима низа су

средње заграде

imeNiza[indeksElementaKojiNamTreba]

ww

w.ra

jak

.rs

НИЗОВИ (2)

Низ у Јави правимо навођењем типа елемената низа,

средњих заграда и имена низа и употребом оператора

new.

TIP_ELEM_NIZA[ ] imeNiza = new TIP_ELEM_NIZA [BR ELEM NIZA];

int[ ] x = new int [10] ; // niz x od 10 elemenata tipa int

double[] r = new double [20]; // niz r od 20 elemenata tipa double

ww

w.ra

jak

.rs

НИЗОВИ (3)

Како пролазимо кроз цео низ?

Нећемо писати посебну наредбу за сваки елемент,

типа: x[0] = 4; x [1] =2; …

Видимо да се индекс низа мења правилно, за

1, користимо фор петљу и њен бројач као

вредност индекса низа:

for(int i=0; i<niz.length;i++){

niz[i] = 0;

}

length даје број елемената низа, сваки низ ово има у

себи

ww

w.ra

jak

.rs

НИЗОВИ (4)

Дводименизонални низови

Уместо да имамо нпр 6 низова који се редом зову salter0,

salter1, salter2 и раде исто, чувају исте информације,

можемо направити

Дводимензионални низ - низ од 6 низова.

ред 0

колона 0

ИМЕ[ред] [колона]

ww

w.ra

jak

.rs

НИЗОВИ (5)

Пролаз кроз дводимензионални низ:

Пролазимо прво кроз редове

Затим унутар једног реда идемо по свим колонама

i иде по редовима

ј по свим колонама неког реда

for(i=0; i<dvoDimNiz.length;i++){

for(j=;0j<dvoDimNiz[i].length;j++){ System.out.println(“dvoDimNiz[ i][j] = “+ dvoDimNiz[i][j]);

ww

w.ra

jak

.rs

СТРИНГОВИ – ТЕКСТ

У Јави се представљају преко класе String

Подразумевана класа – не морате је импортовати

Сложени тип – чим је класа – преко new се

конструише

У себи садржи ПОДАТКЕ и КОД

Подаци – текст

Код – операције за обраду текста

СТРИНГОВИ (1)

Представљају начин чувања и обраде текста у

нашим програмима

Сложеног су типа

String s = new String();

String s1 = “neki tekst”;

Scanner skener = new Scanner(System.in);

String s2 = skener.nextLine();

ww

w.ra

jak

.rs

СТРИНГОВИ (2)

Операције за обраду стригова – све операције

НЕ МОДИФИКУЈУ стринг над којим су

позване него праве нови стринг

Шта то значи?

String s = “ neki tekst”;

s.nekaOperacija(); // ne menja string s, vraca novi

//String, koji bi trebali da preuzmemo, npr

String s2 = s.nekaOperacija(); // ili ako zelimo bas s

//da modifikujemo

String s = s.nekaOperacija(); // s modifikovano,

//originalni tekst vise ne postoji, zamenjen sa onim //

//sto je nekaOperacija napravila

ww

w.ra

jak

.rs

ПРИМЕР 1 – ДЕКЛАРАЦИЈА И ИСПИС

СТРИНГА

УНОС СТРИНГА

ПРИМЕР 3 : ОПЕРАЦИЈЕ СА

СТРИНГОВИМА

РЕЗУЛАТ ИЗВРШАВАЊА

ОПЕРАЦИЈЕ СА СТРИНГОВИМА (1)

.trim() - уклања размаке са почетка и краја

стринга

.toUpperCase() – сва мала слова претвара у

велика

.toLowerCase() – сва велика слова претвара у

мала

.subString(odKogSlovaPoRedu) – направи нови

стринг од задатог слова по реду до краја

оригиналног стринга

.replace( „a, „b‟) – претражује стринг и замени

свако слово a са словом b

ww

w.ra

jak

.rs

ОПЕРАЦИЈЕ СА СТРИНГОВИМА (1)

.startsWith(“nekiString”) – проверава да ли стринг над

којим је позвано почиње са текстом “nekiString”

.compareTo(neki drugi string ili “tekst”) – пореди

да ли су исти стринг над којим је позвана операција и стринг

унутар заграда,резултат операције је 0 ако су исти , различито од

0 ако нису исти

.compareToIgnoreCase(String str) - ради исто што и

претходна али игнорише разлике у великим и малим

словима

.length() – враћа дужину стринга, као цео број

.getCharAt(индекс) – враћа жељени знак из стринга на

задатој позицији

ww

w.ra

jak

.rs

ОПЕРАЦИЈА СА СТРИНГОВИМА(3)

.split( “naOsnovuCega”) – прави низ стрингова,

делове оригиналног, подељеног на основу

стринга у заградама, пример:

String stringZaCepkanje = belo,zuto,crveno;

String[ ] delovi = stringZaCepkanje.split(“,”);

System.out.println(“delovi[0]”); // ispise belo

System.out.println(“delovi[1]”); // ispise zuto

System.out.println(“delovi[2]”); // ispise crveno

ww

w.ra

jak

.rs

УВОД У ОБЈЕКТНО

ОСНОВНИ ПОЈМОВИ

ww

w.ra

jak

.rs

ЛЕГО КОЦКИЦЕ – ГОМИЛЕ

ПРОМЕНЉИВИХ СВУДА У ПРОГРАМУ w

ww

.raja

k.rs

ЗИД ОД ЛЕГО КОЦКИЦА – ПАКУЈЕМО И

СЛАЖЕМО ПРОМЕНЉИВЕ У НЕКУ ЦЕЛИНУ

ww

w.ra

jak

.rs

ТВРЂАВА ОД ЛЕГО КОЦКИЦА - ВИШЕ

ГОТОВИХ ЦЕЛИНА КОРИСТИМО ДА

НАПРАВИМО НЕШТО ДРУГО

ww

w.ra

jak

.rs

РЕШЕЊЕ СВИХ ПРОБЛЕМА НА СВЕТУ

АПСТРАКТНИ

АЛГОРИТАМ

УЛАЗ

ПРОБЛЕМ

ИЗЛАЗ

РЕШЕН ПРОБЛЕМ

ww

w.ra

jak

.rs

МОДЕЛИРАЊЕ

Узимамо особине које су нам битне, запишемо

их и представимо променљивама одговарајућег

типа

Гледамо шта све треба од операција и то исто

запакујемо

ww

w.ra

jak

.rs

КЛАСА , ОБЈЕКАТ

КЛАСА СЛОЖЕНИ ТИП ПРОМЕНЉИВЕ

ОБЈЕКАТ ПРОМЕНЉИВА СЛОЖЕНОГ ТИПА

Лампа КЛАСА

Лампа л1 ОБЈЕКАТ КЛАСЕ ЛАМПА

ww

w.ra

jak

.rs

СВАКИ ОБЈЕКАТ ИМА СВОЈЕ СВОЈЕ

ПРОМЕНЉИВЕ И СВОЈЕ МЕТОДЕ!!!

Лампа л1

Њене променљиве!

Њене методе које се

извршавају само за

њу!!!!

Лампа л2

Њене променљиве!

Њене методе које се

извршавају само за

њу!!!!

ww

w.ra

jak

.rs

СВАКИ ОБЈЕКАТ ИМА СВОЈЕ ПРОМЕНЉИВЕ И

СВОЈЕ МЕТОДЕ!

КОЈЕ СЕ ИЗВРШАВАЈУ УНУТАР ОБЈЕКТА!

л2.ukljuci(); л1.iskljuci();

Лампа л2

укључена = false;

ukljuci(){

укључена = true;

}

Лампа л1

укључена =true;

iskljuci(){

укључена = false;

}

ww

w.ra

jak

.rs

КЛАСА ЈЕ ШАБЛОН ПО КОМ СЕ ПРАВЕ

ОБЈЕКТИ!

Метода се извршавају над објектом!

Променљиве које сте навели у класи

постоје тек сада се направи објекат те

класе и те променљиве су само његове!!!!!

Сваки објекат има своје променљиве!

Свака метода се позива над објектом и ради СА

ПРОМЕНЉИВИМА СВОГ ОБЈЕКТА!

ww

w.ra

jak

.rs

КОНТРУКТОР ЈЕ МЕТОДА КОЈА

ДЕФИНИШЕ ПОЧЕТНО СТАЊЕ ОБЈЕКТА

У објектима, постоје default вредности за

променљиве:

int 0

double 0.0

boolean false

Сваки сложени тип (null) – нема објекта само

декларација стоји, нема new

Ако Вам не одговарају стандардне

подразумеване вредности можете сами рећи

које су тако што напишете КОНСТРУКТОР

ww

w.ra

jak

.rs

КОНТРУКТОР

Контруктор је метода унутар које намештате

подразумеване вредности променљивих унутар

објекта.

Конструктор се зове исто као и класа.

Конструктори се позивају приликом употребе

оператора new

Можемо имати више од једног конструктора

(различитих!)

ww

w.ra

jak

.rs

ВИШЕ КОНСТРУКТОРА?

Методе се у Јави (као и свим објектно

оријентисан језицима) не идентификују

јединствено само преко имена, већ и броју и

типу параметара!

Ово су 3 различите методе:

metoda1()

metoda1(int k)

metoda1(int k, int k1, double d2)

ww

w.ra

jak

.rs

КАКО ЈАВА ЗНА КОЈУ МЕТОДУ ТРЕБА

ПОЗВАТИ АКО СЕ ИСТО ЗОВУ?

На основу параметара које сте задали позиву

Пример:

metoda1()

metoda1(int k)

metoda1(int k, int k1, double d2)

objekat.metoda1();

objekat.metoda1(2);

objekat.metoda1(1,2,3.4);

ww

w.ra

jak

.rs

КОНСТРУКТОР ЈЕ ИСТО МЕТОДА!

Тако да ако их има више, при позиву ће се одлучити

који конструктор треба позвати.

Пример:

Scanner skener = new Scanner ();

Scanner skener = new Scanner(System.in);

Lampa l = new Lampa(); // pocetno stanje - ukljucena

Lampa l2 = new Lampa(false); // pocetno stanje - iskljucena

ww

w.ra

jak

.rs

ОБЈЕКТНО-ОРИЈЕНТИСАНО

ПРОГРАМИРАЊЕ

-ПОДСЕТНИК

-РЕЧНИК ПОЈМОВА

ww

w.ra

jak

.rs

ОБЈЕКТНО – ОРИЈЕНТИСАНО

ПРОГРАМИРАЊЕ (1)

Бавимо се моделирањем – прављењем модела –

упрошћене дефиниције неких предмета

Представљамо стање и понашање неког предмета

СТАЊЕ – се представља подацима, нпр

boolean ukljucen = true;

ПОНАШАЊЕ – се представља методама – делови

кода који врше неке операције pevaj() {

System.out.println(“la la la la –la - la do re mi fa si la si do”)

}

ww

w.ra

jak

.rs

ОБЈЕКТНО – ОРИЈЕНТИСАНО

ПРОГРАМИРАЊЕ (2)

Модел неког предмета правимо уз помоћ класе

На основу класе правимо објекте – променљиве

сложеног типа

Класа представља шаблон по ком се праве

објекти

Објекти се разликују међусобно по

вредностима – СТАЊУ у ком су и или имену,

док сви имају ИСТЕ МЕТОДЕ

ww

w.ra

jak

.rs

ОБЈЕКТНО – ОРИЈЕНТИСАНО

ПРОГРАМИРАЊЕ (3)

Методе

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

Да бих их написали, потребно је дефинисати:

ПРАВО ПРИСТУПА (public, private, protected)

ДА ЛИ МЕТОДА ВРАЋА НЕКИ ПОДАТАК на месту где је

позвана?

Ако враћа морамо написати који је тип информације коју

враћа, ако не враћа напишемо void

ИМЕ ЗА МЕТОДУ

ЗАГРАДЕ( УНУТАР ЗАГРАДА ЛИСТА ПАРАМЕТАРА

КОЈИ СЕ МОРАЈУ ЗАДАТИ ПРИ УПОТРЕБИ МЕТОДЕ )

Мора се навести тип и име параметра

ww

w.ra

jak

.rs

МЕТОДЕ

Методе су дакле блокови кода, под неким именом, који раде нешто смислено.

Методе могу да након што се изврше, на месту где су позване врате неку вредност.

Методу објекта дефинишемо тако што наводимо: Право приступа методи:

public, private, protected (public = може да се користи, private = интерна)

Какав тип податка враћа метода? Ако не враћа ништа, тип је void

Име методе, као променљиве Као и код именовања променљивих, први карактер, мора бити слово, не

могу размаци, мора да буде једна реч, дозвољени бројеви и доња црта

Параметри операције (ако их има) Наводе се унутар загради након имена операције

Неопходно је навести ког су типа параметри и дати им име

Параметри су променљиве, могу бити простог и сложеног типа

Код који метода извршава унутар витичастих заграда { }

ww

w.ra

jak

.rs

МЕТОДЕ – ПОЗИВ МЕТОДЕ

Методе се позивају над објектима неке класе

Класа објекта је заправо ТИП променљиве

NekaKlasa objekat = new NekaKlasa();

objekat.metoda(4,999, “full”, true);

Унутар класе имамо написану ову методу и она

изгледа овако: public void metoda(int par1, int par2, String par3, boolean par4){

}

ww

w.ra

jak

.rs

ШТА СЕ ДЕШАВА ПРИ ПОЗИВУ МЕТОДЕ?

Вредности наведене унутар заграда се

копирају у параметре методе

objekat.metoda(4,999, “full”, true);

public void metoda(int par1, int par2, String par3, boolean par4){

// sada se ovde moze uraditi nesto korisno sa parametrima

System.out.println(“parametar1 je:” + par1);

if(par4){

System.out.println(“Par4 je true i to utice na logiku na neku nacin!”

}

}

ww

w.ra

jak

.rs

ПРАВЉЕЊЕ КЛАСЕ

public class ImeKlase{

// PISEMO PROMELJIVE – POLJA KLASE

// promenljive klase cesto zovemo poljima klase

// PISEMO METODE

}

public class Lampa{

private boolean ukljucena;

private boolean ispravna;

public void ukljuci(){ ukljucena = true;

System.out.println(“Lampa ukljucena!”);

}

}

ww

w.ra

jak

.rs

УПОТРЕБА КЛАСЕ

Наводимо њен тип и име и користимо new

Lampa p = new Lampa();

P.ukljuci();

ww

w.ra

jak

.rs

СПЕЦИЈАЛНЕ МЕТОДЕ КЛАСА

У класама се често јављају поједине методе

које имају исту сврху у свакој класи

Конструктор

Дефинише које су то почетне – default вредности за

поља објеката наше класе – односно

ДЕФИНИШЕМО ПОЧЕТНО СТАЊЕ за СВАКИ

објекат ове класе

ww

w.ra

jak

.rs

КОНТРУКТОРИ (1)

Нпр. Default стање за објекте класе лампа је да су искључене и исправне

Написаћемо конструктор у ком ћемо дефинисати почетно стање

Конструктори су методе које носе исто име као и класа којој припадају

Конструктор класе лампа:

public Lampa() { ukljucena = false;

ispravna = true; }

ww

w.ra

jak

.rs

КОНСТРУКТОРИ (2)

Овим смо дефинисали да сваки објекат класе

Lampa ће када се направи, бити искључен и

исправан.

Lampa la = new Lampa(); /

Лампа la је искључена и исправна.

ww

w.ra

jak

.rs

ПРАВЉЕЊЕ РАЗЛИЧИТИХ КОНСТРУКТОРА

ww

w.ra

jak

.rs

УПОТРЕБА МЕТОДА ИСТОГ ИМЕНА w

ww

.raja

k.rs

АНАЛИЗАТОР - КОД w

ww

.raja

k.rs

ОБЈЕКТНО – ОРИЈЕНТИСАНО

Оријентисано ка објектима, зашто?

Зато што се ради са објектима, тежи се да све буде

неки објекат

Шта је објекат?

Објекат је променљива сложеног типа који је

посебни дефинисан уз помоћ класе

Уз помоћ класе се дефинишу сложени типови –

шаблони по ком се праве објекти

ww

w.ra

jak

.rs

ОБЈЕКТИ

За разлику од простих типова променљивих (

int, double, boolean, char) , сложени типови

осим података, у себи имају и операције –

методе – програмски код који може да се

изврши

Цртамо их често облачиће, јер им је

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

Објекат 1

Објекат 3

Објекат 2

ww

w.ra

jak

.rs

РАДНА (ОПЕРАТИВНА, РАМ) МЕМОРИЈА

РАЧУНАРА

Организована је као низ локација – блокова –

најчешће величине 4 бајта (32 бита, 8 бита је 1

бајт, 1 бит је једна јединица или нула)

Када у нашем програму декларишемо неку

променљиву, додељује нам се блок меморије за

њу под њеним именом.

ww

w.ra

jak

.rs

ДЕКЛАРАЦИЈЕ ПРОМЕНЉИВЕ ЗАУЗИМА ПРОСТОР У

РАДНОЈ МЕМОРИЈИ – ПРОМЕНЉИВА ПОСТОЈИ

ww

w.ra

jak

.rs

ЗОНЕ РАДНЕ МЕМОРИЈЕ ЗА ПОДАТКЕ

ПРОГРАМА

Постоје две зоне радне меморије за

складиштење података програма:

Прва је статичка зона – сва меморија заузета у њој

остаје заузета од почетка до краја рада програма

Друга је динамичка зона – меморија заузета у овој

зони се може у било ком тренутку ослободити у

току рада програма

ww

w.ra

jak

.rs

ЗАУЗИМАЊЕ МЕМОРИЈЕ ЗА ОБЈЕКТЕ

Објекти (променљиве сложеног типа) се састоје од два дела:

Имена – референце на њих – стоје у статичкој зони

РЕФЕРЕНЦА = ИМЕ ОБЈЕКТА

Блока меморије заузетог у динамичкој зони меморије

ww

w.ra

jak

.rs

ДЕКЛАРАЦИЈА РЕФЕРЕНЦЕ

Scanner skener;

ПРАВИМО НЕКИ ОБЈЕКАТ класе Скенер

new Scanner(System.in);

ДОДЕЉУЈЕМО ИМЕ ОБЈЕКТУ ТАКО ШТО

КАЖЕМО

РЕФЕРЕНЦА = НАПРАВЉЕНИ ОБЈЕКАТ

skener = new Scanner(System.in);

ww

w.ra

jak

.rs

ОДУЗИМАЊЕ РЕФЕРЕНЦЕ ОБЈЕКТУ

Када име skener доделимо новом објекту класе

Скенер, тада објекат кога смо направили

раније губи име – референцу

ОБЈЕКТИ КОЈИ

ИЗГУБЕ РЕФЕРЕНЦУ

СЕ АУТОМАТСКИ

УНИШТАВАЈУ

ww

w.ra

jak

.rs

ДИНАМИЧКА ЗОНА МЕМОРИЈА

Иако је као и статичка зона, направљена од низа

меморијских локација које су нам на располагању, само

што су величине блокова меморије које заузимамо

различитих величина и често нам није ни позната тачна

величина објекта.

Због тога се динамичка зона представља као нека

затворена фигура – квадрат, правоугаоник – на ком се

објекти цртају као облакчићи, јер се не зна колико

меморије заузимају, само знамо да су ту.

Динамичка зона се стручно зове ХИП (енг. Heap)

ww

w.ra

jak

.rs

ДИНАМИЧКА ЗОНА - ХИП

Објекат 1

Објекат 3

Објекат 2

ww

w.ra

jak

.rs

УПОТРЕБА ОБЈЕКАТА

Пре него што можемо да употребимо објекат,

морамо декларисати референцу на њега (име)

и позвати наредбу new која ће наш објекат

направити на Хипу и нашу рефенцу уперити

на њега.

Објекти без референце се аутоматски

бришу са Хипа

ww

w.ra

jak

.rs

ДЕКЛАРАЦИЈЕ РЕФЕРЕНЦЕ НА ОБЈЕКАТ

КЛАСЕ СКЕНЕР

ww

w.ra

jak

.rs

ПРАВЉЕЊЕ ОБЈЕКТА НА ХИПУ И

ПОВЕЗИВАЊЕ РЕФЕРЕНЦЕ И ОБЈЕКТА

ХИП

објекат1

ww

w.ra

jak

.rs

ОДУЗИМАЊЕ РЕФЕРЕНЦЕ ОБЈЕКТУ –

ПРЕУСМЕРАВАЊЕ РЕФЕРЕНЦЕ НА НЕКИ ДРУГИ

ОБЈЕКАТ

објекат1

објекат2

ХИП

ww

w.ra

jak

.rs

ОБЈЕКТИ БЕЗ РЕФЕРЕНЦИ СЕ УНИШТАВАЈУ –

БРИШУ СА ХИПА – ЗАУЗЕТА МЕМОРИЈА СЕ

ОСЛОБАЂА

објекат1

објекат2

ХИП

ww

w.ra

jak

.rs

ОДУЗИМАЊЕ РЕФЕРЕНЦЕ ОБЈЕКТУ –

ПОСТАВЉАЊЕ РЕФЕРЕНЦЕ НА NULL

објекат1

ХИП

ww

w.ra

jak

.rs

ОБЈЕКТИ БЕЗ РЕФЕРЕНЦИ СЕ УНИШТАВАЈУ –

БРИШУ СА ХИПА – ЗАУЗЕТА МЕМОРИЈА СЕ

ОСЛОБАЂА

објекат1

ХИП

ww

w.ra

jak

.rs

ОБЈЕКАТ И МЕТОДЕ

Сви објекти исте класе имају исте методе и

исте променљиве – поља .

Једино се разликују по конкретним вредностима

поља и својим референцама.

Методе се позивају над објектом, шта то значи?

Код методе је у објекту!

ww

w.ra

jak

.rs

СВАКИ ОБЈЕКАТ ИМА СВОЈЕ ПРОМЕНЉИВЕ И

СВОЈЕ МЕТОДЕ!

КОЈЕ СЕ ИЗВРШАВАЈУ УНУТАР ОБЈЕКТА!

л2.ukljuci(); л1.iskljuci();

Лампа л2

укључена = false;

ukljuci(){

укључена = true;

}

Лампа л1

укључена =true;

iskljuci(){

укључена = false;

}

ww

w.ra

jak

.rs

ОБЈЕКТНО ОРИЈЕНТИСАНО

ПРОГРАМИРАЊЕ

НИЗОВИ ОБЈЕКАТА

ww

w.ra

jak

.rs

НИЗ ОБЈЕКАТА ИСТЕ КЛАСЕ

Било какав низ у Јави правимо на следећи

начин:

imeTipa [ ] imeNiza;

imeNiza = new imeTipa[BROJ_ELEMENATA];

Тако да низ од 20 елемената типа инт изгледа

овако:

int [ ] x;

x = new int [20];

ww

w.ra

jak

.rs

НИЗ ОБЈЕКАТА ИСТЕ КЛАСЕ

Низ Скенера изгледа исто:

Scanner[ ] skeneri;

skeneri = new Scanner[200];

САМО ШТО, када направимо било који Скенер односно

објекат, мора да се уради new ImeTipa(); односно мора да се

позове конструктор за сваки објекат, било да је он елемент

низа или сам.

// pozivanje new Scanner(System.in) za svih 200 skenera

for(i=0;i<skeneri.length;i++){

skeneri[i] = new Scanner(System.in);

}

ww

w.ra

jak

.rs

ОБЈЕКТНО

ШТА ЖЕЛИМО ДА САКРИЈЕМО

И ЗАШТО?

ww

w.ra

jak

.rs

АПСТРАКЦИЈА

Апстраховати:

најопштије: одвојити нешто од нечега, оставити

нешто по страни, не обратити пажњу на нешто;

нешто уже: оставити по страни оно небитно,

споредно, случајно, задржавајући оно битно и

опште.

Апстракција:

радња којом изостављамо појединачно,

случајно, споредно, а задржавамо опште,

битно, нужно, важно.

ww

w.ra

jak

.rs

АПСТРАКЦИЈА

ПРАКТИЧНА РЕАЛИЗАЦИЈА- КАЛКУЛАТОР

ИНТЕРФЕЈС ДУГМИЋИ

КОЈИМА СЕ КОРИСТЕ

ОПЕРАЦИЈЕ КАЛКУЛАТОРА

ТЕЛО

КАЛКУЛАТОРА

СВЕ ШТО ОНОГА КО КОРИСТИ

КАЛКУЛАТОР НЕ ЗАНИМА

КАКО ИЗВРШАВА ОПЕРАЦИЈЕ,

ПРИКАЗУЈЕ РЕЗУЛТАТ

ЛОГИКА РАДА КАЛКУЛАТОРА

АПСТРАКЦИОНА БАРИЈЕРА

ww

w.ra

jak

.rs

СКРИВАЊЕ ИНФОРМАЦИЈА – МЕТОД

АПСТРАКЦИЈЕ

Прављење црних кутија

Сакрити начин имплементације /

функционисања кода

Обезбедити начин употребе готовог кода тако

да не захтева разумевање кода

ww

w.ra

jak

.rs

МЕТОД АПСТРАКЦИЈЕ У ЈАВИ –

КОНТРОЛА ПРИСТУПА

Када пишемо класу, уз сваку променљиву и методу

дефинишемо и контролу приступа

Ко може да користи ову променљиву/методу?

public – свако

private – само методе класе, односно ми који пишемо класу

• Шта треба сакрити?

• У теорији би требало увек сакрити све податке – променљиве

класе - њена поља - варира у пракси ( length код низова)

• Интерну логику, неке методе које нису за употребу од стране

клијента

ww

w.ra

jak

.rs

КЛАСА

ОПЕРАЦИЈЕ И ПОДАЦИ

ПОДАЦИ

ОПЕРАЦИЈЕ

увећајХЗа(1)

true Х

ww

w.ra

jak

.rs

МОДЕЛ КАЛКУЛАТОРА

Може да ради само са 2 операнда

Само основне операције

Након извршавања операције, резултат се

испише на конзолу

ww

w.ra

jak

.rs

КАЛКУЛАТОР – УПОТРЕБА

ww

w.ra

jak

.rs

КАЛКУЛАТОР – ОПЕРАЦИЈЕ w

ww

.raja

k.rs

КАЛКУЛАТОР – ИСПИС И ЛОГИКА w

ww

.raja

k.rs

ТРОМЕСЕЧНИ КУРС ЈАВЕ

ПРЕГЛЕД ПОЈМОВА УТИСЦИ? ПИТАЊА?

ШАЉИТЕ НА

SKOLARAJAK.JAVA3@GMAIL.COM

ww

w.ra

jak

.rs

Recommended