Presentation is loading. Please wait.

Presentation is loading. Please wait.

Objektno orijentisano programiranje

Similar presentations


Presentation on theme: "Objektno orijentisano programiranje"— Presentation transcript:

1 Objektno orijentisano programiranje
Java, 2. čas

2 Eclipse Postoji mnoštvo Java razvojnih alata:
Borland Jbuilder NetBeans Eclipse ... Ovi alati podržavaju integrated development environment (IDE) za brzi razvoj Java programa. Editovanje, kompajliranje, build-ovanje, debugg-ovanje i online help su integrisani u jedan GUI.

3 Eclipse Eclipse se može pokrenuti na proizvoljnoj platformi sa Java VM. Može se download-ovati sa Pre ”instaliranja” Eclipse, mora se instalirati JDK

4 Eclipse, perspektiva Nakon pokretanja, otvara se Workspace Launcher prozor workspace je zapravo direktorijum u koji se smeštaju fajlovi našeg projekta Perspektiva sadrži editore i poglede (views) U jednom prozoru može postojati jedna ili više perspektiva Otvaranje perspektive : Window → Open Perspective Java

5 Eclipse, editori Na površini predviđenoj za editor može biti otvoren veći broj editora, a oni se mogu razmestiti tako da se vidi sadržaj svakog od njih Sa jednog na drugi otvoreni editor može se preći npr. pomoću prečice Ctrl+F6 ili strelicama iz toolbar-a. Window → Reset Perspective uređuje layout kao u prvobitnom stanju

6 Eclipse, pogledi Određeni pogled se može prikazati izborom iz Window → Show View menija Perspektivom je određeno koji pogledi se mogu videti i oni su ponuđeni u Show View podmeniju

7 Eclipse Editovanje fajlova izvan Eclipse
Eclipse smešta sve svoje resurse na lokalni fajlsistem. Resursi se mogu kopirati u workspace direktorijum i kada Eclipse nije pokrenut, a fajlovi se mogu menjati nekim od eksternih alata. Koristiti Refresh za ažuriranje Eclipse-a promenama načinjenim izvan njega. Refresh se može izabrati iz File ili odgovarajućeg popup menija

8 Eclipse, kreiranje projekta
File → New → Project Java project , Next Ukucati ime projekta u polje Project name  Create project in workspace  Use project folder as root for sources and class files Finish

9 Kreiranje novog paketa
U Package Explorer pogledu izabrati projekat U toolbar-u kliknuti na dugme New Java Package ili izabrati New → Package iz kontekst menija U polje Name ukucati ime novog paketa Finish

10 Kreiranje nove klase U Package Explorer pogledu izabrati novi paket
Kliknuti na dugme New Java Class u toolbar-u Proveriti da se u polju Source Folder nalazi ime projekta i u polju Package ime našeg paketa U polje Name uneti ime klase  public static void main(String[] args) Finish Automatski se otvara editor za dodavanje koda nove klase

11 Eclipse, kompajliranje i izvršavanje programa
Naš kod se dinamički kompajlira dok kucamo Crvene vijugave linije u editoru ukazuju na eventualne greške Za pokretanje programa : sačuvamo promene odemo u Package Explorer pogled desnim klikom na klasu projekta koja implementira main() metod (....java) pozivamo kontekst meni izaberemo Run As → Java Application izlaz je prikazan u Console pane

12 Java, izvršavanje programa
Pokretanje klase iz Package Explorer-a kao Java aplikacije koristi default podešavanja za pokretanje odabrane klase i ne dozvoljava navođenje argumenata komandne linije. Za navođenje ovih argumenata, koristiti padajući meni Run iz toolbar-a i izabrati Run... Otvara se dijalog u kome se izabere tab Arguments i ukucaju argumenti u polje Program arguments (argumente razdvojiti belinama) Run

13 Eclipse, debugger Omogućuje postavljanje breakpoint-a i izvršavanje programa liniju po liniju. Mogu se pratiti i menjati vrednosti promenljivih kao i posmatrati koji metodi se pozivaju za vreme izvršavanja programa Breakpoint se može postaviti na neku liniju duplim klikom na vertikalni ruler duž leve ivice editora, ispred te linije Pojavljuje se puna plava tačka na tom mestu

14 Eclipse, debugger Debugger se zaustavlja kada dođe do breakpoint-a
Pokrećemo debugger desnim klikom na klasu, a zatim izaberemo Debug As → Java Application Pojavljuje se prozor koji nas pita da li da otvori Debug perspektivu. Kliknuti na Yes. Naredna linija koju debugger treba da izvrši naznačena je zelenom bojom Kako nastaviti? resume, suspend, terminate, step into, step over, step return, run to line iz Run menija ili toolbar-a

15 Eclipse, debugger Vrednosti promenljivih prikazane su u Variables pane
Da bismo promenili vrednost promenljive, desnim klikom na nju, pa izborom Change Value otvara se dijalog u kome možemo da unesemo novu vrednost promenljive Kada završimo rad sa debugger-om, možemo otvoriti Java perspektivu sa Window → Open Perspective → Java

16 Java, klasa Character Klasa Character je automatski dostupna našim programima Statički metodi: isDigit() isLetter() isLetterOrDigit() isWhiteSpace() isLowerCase() isUpperCase() Svi kao argument uzimaju jedan char

17 Klasa Character Da bismo mogli da pišemo:
char symbol='a'; if(isUpperCase(symbol)) isLowerCase(symbol) na početku treba navesti: import static java.lang.Character.*; Bez toga, morali bismo da pišemo i ime klase ispred imena metoda, npr. Character.isLowerCase(symbol);

18 Nizovi Nizovska promenljiva i niz na koji se ona odnosi su odvojeni entiteti Memorija koja se alocira za nizovsku promenljivu čuva referencu na niz, ne sam niz. Sam niz je poseban entitet koji će biti negde drugde u memoriji Nismo u obavezi da kreiramo niz kada deklarišemo nizovsku promenljivu. Možemo najpre kreirati nizovsku promenljivu i kasnije u nju smestiti referencu na određeni niz

19 Deklaracija nizovske promenljive
int[] niz; int niz[]; Niz tek treba da se definiše. Na ovom mestu nije alocirana memorija za sam niz Ova promenljiva je prosto lokacija u memoriji koja može da čuva referencu/pokazivač na niz Za kreiranje samog niza mora se zadati njegov tip i koliko će elemenata sadržati int [] niz; ”kaže” da je tip nizovske promenljive int []

20 Definisanje niza Nakon što smo deklarisali nizovsku promenljivu, možemo definisati niz na koji će ona referisati: niz = new int[10]; // Definise niz od 10 integer-a Ova naredba kreira niz koji će sadržati 10 vrednosti tipa int, i smešta referencu na niz u promenljivu niz Moguće je i jednom naredbom deklarisati nizovsku promenljivu i definisati niz tipa int koji će sadržati 10 celih brojeva: int[] niz = new int[10];

21 Definisanje niza Ključna reč new ukazuje na to da se alocira nova memorija za niz, a int[10] određuje da kapacitet te memorije treba da bude dovoljan za 10 promenljivih tipa int Kada se niz kreira ovako, elementi niza se automatski inicijalizuju na podrazumevane vrednosti, a to su: 0 za numeričke vrednosti false za boolean '\u0000' za char null za objekte

22 Dužina niza to je broj elemenata koje niz sadrži
length – atribut ( a ne metod! ) objekta koji predstavlja niz Npr. niz.length ( za naš niz imaće vrednost 10 ) Ovaj atribut se može koristiti za kontrolisanje for petlje koja obrađuje elemente niza Ukoliko promenimo broj elemenata niza ovo polje se automatski ažurira

23 Pristup elementima niza
Indeks mora biti tipa int ( ukoliko je long mora se izvršiti eksplicitno kastovanje u int ) niz[0] - prvi element niza niz Java proverava da li su vrednosti indeksa koje koristimo validne. Ako nisu, izbacuje izuzetak tipa IndexOutOfBoundsException

24 Nizovska promenljiva Nizovska promenljiva je odvojena od niza koji referiše. Na raznim mestima u programu možemo koristiti nizovsku promenljivu za čuvanje referenci na različite nizove. Npr. int[] niz = new int[10]; ... niz = new int[50]; To je sada novi niz, potpuno odvojen od prethodnog. Prethodni niz od 10 elemenata se odbacuje.

25 Inicijalizacija nizova
int[] niz={2,3,5,7,11,13,17}; int[] niz=new int[100]; // automatska inicij. na 0 niz[0]=2; niz[1]=3; double[] data = new double[50]; for(int i=0; i<data.length; i++) data[i]=1.0;

26 Korišćenje Utility metoda za inicijalizaciju nizova
Metod fill() definisan u klasi Arrays iz paketa java.util može se koristiti za inicijalizaciju niza import java.util.Arrays; Arrays.fill(data, 1.0); // popunjava sve elemente niza data jedinicom Prvi argument – ime niza koji treba popuniti Drugi argument – vrednost Ovaj metod ”radi” za sve vrednosti primitivnih tipova

27 fill() metod Pošto je fill() statički metod klase Arrays, može i ovako: import static java.util.Arrays.fill; pa onda možemo zvati metod bez navođenja klase fill(data,1.0);

28 Inicijalizacija nizovske promenljive
Nizovska promenljiva se može inicijalizovati i referencom na postojeći niz: long[] even = {2L,4L,6L,8L,10L}; long[] value = even; Onda nizovske promenljive even i value referišu na isti niz

29 Obrada nizova double average = 0.0; double[] uzorci = new double[50];
for(int i=0; i<uzorci.length; i++){ uzorci[i]=100.0*Math.random(); average += uzorci[i]; } average /= uzorci.length;

30 Obrada nizova – collection-based for-petlja
double average = 0.0; for( double value: uzorci ){ average += value; } average /= uzorci.length; Petlja iterira kroz vrednosti svih elemenata tipa double niza uzorci. Promenljivoj value se pridružuje jedna po jedna vrednost elemenata niza

31 Collection-based for petlja
Ovakva for-petlja služi za obradu celog niza Za obradu dela niza i dalje se mora koristiti standardna for-petlja Collection-based for petlja ne obezbeđuje pristup elementima u svrhu postavljanja njihovih vrednosti Za promene vrednosti elemenata niza koristi se standardna for-petlja

32 Nizovi nizova float[][] temperatura = new float[10][365];
Ovo je dvodimenzioni niz: postoji 10 jednodimenzionih nizova i svaki od njih ima 365 elemenata Primer obrade: for(int i=0; i<temperatura.length; i++) for(int j=0; j<temperatura[i].length; j++) temperatura[i][j]=(float)(45.0*Math.random()-10.0);

33 Nizovi nizova različitih dužina
Nizovi u nizu ne moraju biti iste dužine: float[][] uzorci; // deklarise niz nizova uzorci = new float[6][]; // definise 6 elemenata, svaki je niz // promenljiva uzorci sada referencira niz sa 6 // elemenata, od kojih svaki moze primiti // referencu na jednodimenzioni niz uzorci[2] = new float[3]; uzorci[5] = new float[101]; // uzorci.length ima vrednost 6 // uzorci[5].length ima vrednost 101

34 String-ovi U Javi, stringovi su objekti klase String, koja se nalazi u paketu java.lang String literal je niz karaktera pod dvostrukim navodnicima ”Ovo je String literal” - konstantan objekat klase String String-ovi se interno čuvaju kao Unicode karakteri

35 Kreiranje String objekata
String promenljiva je promenljiva koja čuva referencu na objekat klase String String promenljiva se deklariše na isti način kao i promenljive primitivnih tipova. Takođe, može se inicijalizovati pri deklarisanju, što je generalno dobra ideja. String mojString = ”Moj string”; mojString = ”Drugi string”; Sam String objekat je različit od promenljive koju koristimo da na njega referišemo

36 String String objekti su nepromenljivi. To znači da se ne može menjati string koga taj objekat predstavlja. String string; // deklaracija, bez inicijalizacije Ukoliko program pokuša da koristi promenljivu koja nije inicijalizovana, dobićemo grešku pri kompajliranju String string = null; // String promenljiva koja // ne referise na string

37 Nizovi String-ova String[] imena=new String[5];
String[] boje={”crvena”,”zuta”,”plava”};

38 Operacije nad String-ovima
Konkatenacija ( operator + ) kao rezultat se generiše potpuno nov String objekat, različit od String objekata koji su operandi Operator + se takođe koristi i za sabiranje, ali ako je bar jedan od operanada String objekat ili String literal, kompajler će interpretirati operaciju kao konkatenaciju stringova i konvertovaće objekat koji nije String objekat u String

39 Stringovi – operacije Ako npr. String promenljiva koja se koristi kao 1 od operanada za + sadrži null , ona se automatski konvertuje u string ”null” Može se koristiti i operator += // kombinovanje stringa i integer-a mojString = ”pedeset pet je ” ; System.out.println(mojString); // pedeset pet je 55

40 String-ovi // kombinovanje integer-a i stringa
mojString = ” je deset”; System.out.println(mojString); // 10 je deset ZAŠTO? Asocijativnost + je sleva nadesno i to je razlog što je u prvom primeru, a 10 u drugom

41 toString() Konverzija primitivnih tipova u tip String zapravo se vrši korišćenjem statičkog metoda toString() standardne klase koja odgovara tom primitivnom tipu Svaki od primitivnih tipova ima definisanu ekvivalentnu, tzv. wrapper, klasu: byte – Byte, short – Short, int – Integer, long – Long, float – Float, double – Double, boolean – Boolean, char – Character

42 toString() Kadgod se vrednost nekog od primitivnih tipova pojavi kao operand za +, a drugi operand je String objekat, kompajler prosleđuje vrednost primitivnog tipa metodu toString() definisanom u odgovarajućoj wrapper klasi. Metod toString() vraća String ekvivalentan vrednosti. Sve se to dešava automatski pri konkatenaciji stringova operatorom +.

43 valueOf() Metod klase String
Kreira String objekat od vrednosti proizvoljnog primitivnog tipa String doubleString = String.valueOf( ); valueOf() je statički metod klase String Zato se poziva sa String.valueOf() Kao argument može primiti literal ili promenljivu proizvoljnog primitivnog tipa

44 Poređenje stringova String promenljiva i string koji ona referiše se razlikuju Izraz string1 == string2 ne poredi same stringove, već reference na stringove Za takvo poređenje, može se koristiti metod equals(), koji je definisan za objekte tipa String Npr. string1.equals(string2) equals() vrši case-sensitive poređenje Postoji i equalsIgnoreCase() metod

45 Stringovi, operacije Metodima startsWith() / endsWith() koji kao argument primaju String, možemo izvršiti case-sensitive proveru da li string počinje / završava se stringom koji je dat kao argument metoda. String string1 = ”Ovo je string”; string1.startsWith(”Ovo”) // true string1.endsWith(”string”) // true

46 compareTo(String) Analogon strcmp() iz C-a
Poredi objekat String za koji je pozvan, sa String argumentom koji mu prosleđujemo i vraća int koji je negativan, ako je String objekat manji od argumenta, 0 ako su jednaki, a pozitivan inače. Zapravo, vrši se poređenje Unicode reprezentacija odgovarajućih karaktera stringova

47 String-ovi, operacije charAt() - prima int argument, indeks traženog karaktera. Ukoliko pokušamo da koristimo indeks manji od 0 ili veći od indeksa poslednjeg karaktera stringa, biće izbačen izuzetak tipa StringIndexOutOfBoundsException Za određivanje dužine stringa poziva se metod length() nad String objektom. Primetimo da se kod nizova pristupa atributu length.

48 Konvertovanje toLowerCase(), toUpperCase()
konvertuju String u mala, odnosno velika slova i vraćaju referencu na konvertovani String text = text.toLowerCase();

49 Pretraga Stringova indexOf(), lastIndexOf() metodi
Postoji nekoliko verzija ovih metoda koje omogućuju traženje pojedinačnog karaktera ili podstringa koji se zadaje kao (prvi) argument indexOf() traži od početka stringa, unapred, dok lastIndexOf() traži unatrag, počev od kraja stringa Vraćaju odgovarajući indeks, ako je traženje uspelo, a -1 inače

50 Pretraga Stringa Postoji varijacija prethodna 2 metoda koja ima i drugi argument. Njime se određuje pozicija od koje treba početi pretraživanje Ako se kao drugi argument prosledi negativna vrednost, metod indexOf() pretražuje ceo string, od početka Važno je proveriti da li je vraćena vrednost indeksa -1 pre njegovog korišćenja za indeksiranje Stringa!

51 Pretraga Stringa – rezime
indexOf(int ch) indexOf(int ch, int index) indexOf(String str) indexOf(String str, int index) I analogno za metod lastIndexOf() Metod startsWith() takođe ima verziju sa drugim argumentom, koji predstavlja poziciju od koje počinje potraga za datom sekvencom karaktera

52 Izdvajanje podstringova
Metod substring() izdvaja podstring iz stringa Postoje 2 verzije ovog metoda Prva izdvaja podstring koji se sastoji od svih karaktera počev od datog indeksa, pa do kraja stringa String place = ”Palm Springs”; lastWord = place.subString(5); // ”Springs” Druga omogućuje da izdvojimo podstring zadavanjem indeksa prvog karaktera podstringa i prvog karaktera iza poslednjeg karaktera podstringa String segment = place.substring(7,11); // ”ring” Ako indeks nije validan izbacuje se izuzetak

53 Metodi replace() i trim()
Metod replace() koristi se za zamenu određenog karaktera drugim kroz string. Prima dva argumenta: Prvi je karakter koji se menja Drugi je karakter kojim se menja Metod trim() služi za uklanjanje belina sa početka i kraja stringa

54 Kreiranje nizova karaktera od String objekata
Metod toCharArray() Kreira niz tipa char i vraća referencu na njega String text = ”To be or not to be” ; char[] textArray = text.toCharArray(); Moguće je izdvojiti i podstring kao niz karaktera metodom getChars(). Potrebno je kreirati dovoljno veliki niz u koji će se upisati rezultat i on se prosleđuje kao jedan od argumenata metoda. Metod zahteva 4 argumenta

55 Kreiranje String objekata od nizova karaktera
Statički metod copyValueOf() klase String Kreira String objekat od niza tipa char[] Char[] textArray = { 'T', 'o', ' ', 'b', 'e' }; String text = String.copyValueOf(textArray);  String text = new String(textArray); // poziv konstruktora U Javi stringovi se ne završavaju sa '\0'!

56 CopyValueOf() - druga verzija
Druga verzija metoda copyValueOf() može kreirati podstring od podskupa elemenata niza. Ona zahteva 2 dodatna argumenta za određivanje indeksa prvog karaktera niza koji se izdvaja i broj karaktera koji se izdvaja String text = String.copyValueOf(textArray,9,3); Postoji i konstruktor klase String koji radi isto: String text = String(textArray,9,3);

57 Promenljivi stringovi – StringBuffer i StringBuilder
String objekti se ne mogu menjati Java ima još dve klase koje enkapsuliraju stringove: StringBuffer i StringBuilder Objekti obe ove klase mogu se direktno menjati Obe klase omogućuju iste operacije, ali StringBuffer objekti su bezbedni za korišćenje od strane većeg broja niti, a StringBuilder nisu Niti su nezavisni izvršni procesi unutar programa koji se mogu konkurentno izvršavati

58 String,StringBuffer,StringBuilder?
Ako smo sigurni da će našim promenljivim stringovima pristupati samo jedna nit, treba da koristimo StringBuilder objekte jer će operacije nad njima biti brže nego nad StringBuffer objektima StringBuffer i StringBuilder objekte treba koristiti kada se stringovi često transformišu – dopisuju, brišu ili menjaju podstringovi stringa. Ako uglavnom imamo statičke stringove koje tu i tamo treba da nadovežemo, String objekti su najbolji izbor

59 Kreiranje StringBuffer objekata
StringBuffer aString = new StringBuffer(”string”); NE MOŽE = ”string”; String phrase = ”Inicijalizacioni string”; StringBuffer buffer = new StringBuffer(phrase); StringBuffer myString = null; myString = new StringBuffer(”neki string”); StringBuffer aString = myString; // sada myString i aString referišu na 1 isti StringBuffer // objekat

60 Kapacitet StringBuffer objekta
StringBuffer objekat sadrži blok memorije, tzv. bafer koji može, a ne mora, sadržati string, a ako ga sadrži, string ne mora zauzimati ceo bafer. Tako, dužina stringa u StringBuffer objektu može biti različita od dužine odgovarajućeg bafera Dužina bafera je tzv. kapacitet StringBuffer objekta Metod length() određuje dužinu stringa koji je sadržan u objektu

61 Kapacitet StringBuffer objekta
Kada kreiramo StringBuffer objekat od postojećeg stringa, kapacitet će biti dužina stringa + 16 I kapacitet i dužina su izraženi u Unicode karakterima ( =>bajta) Kapacitet StringBuffer objekta nije fiksiran. On se automatski menja da bi se prilagodio stringu proizvoljne dužine. Takođe, može se zadati inicijalno kapacitet pri kreiranju objekta.

62 Kapacitet StringBuffer objekta
StringBuffer newString = new StringBuffer(50); /* kreira objekat newString sa kapacitetom za smeštanje 50 karaktera. Bez vrednosti 50, default kapacitet bio bi 16 karaktera. Bafer je inicijalno prazan – nijednog stringa nema u njemu */ Metod capacity() vraća kapacitet objekta u datom trenutku (kao broj Unicode karaktera koje objekat trenutno može da smesti )

63 Kapacitet StringBuffer objekta
Metod ensureCapacity() omogućuje da promenimo default kapacitet objekta. Minimalni kapacitet koji nam je potreban zadajemo kao argument metoda aString.ensureCapacity(40); /* ako je trenutni kapacitet objekta aString manji od 40, alociraće se novi, veći bafer, ali ne nužno kapaciteta 40. Kapacitet će biti veći od: argumenta metoda u ovom slučaju 40 i (2 puta trenutni kapacitet + 2)

64 Promena dužine StringBuffer objekta
Metod setLength() Kada uvećamo dužinu objekta, dopisuju se '\u0000' karakteri na postojeći string Uobičajenije je smanjenje dužine, u kom slučaju se vrši odsecanje stringa. Karakteri koji se odseku sa kraja stringa ovom operacijom bivaju izgubljeni. Ako se ponovo poveća dužina na prethodnu, novi karakteri biće '\u0000'

65 Promena dužine StringBuffer objekta
Dužina je svojstvo stringa kojeg objekat sadrži, dok je kapacitet svojstvo bafera Metod setLength() ne utiče na kapacitet objekta osim ako se dužina postavi na veću od kapaciteta. U tom slučaju, kapacitet će se povećati tako da se prilagodi novoj dužini stringa Ako se zada negativna dužina, biće izbačen izuzetak tipa StringIndexOutOfBoundsException

66 Dopisivanje na StringBuffer objekat
Metod append() omogućuje dodavanje stringa na kraj postojećeg stringa smeštenog u StringBuffer objektu StringBuffer aString = new StringBuffer(”prvi”); aString.append(” drugi”); // ”prvi drugi” Dužina stringa se uvećava za dužinu stringa koji smo dodali StringBuffer bString = aString.append(” drugi”); // sada u aString i bString pokazuju na isti objekat

67 Dopisivanje na StringBuffer objekat
Operator '.' koji koristimo za izvršavanje određenog metoda na objektu, asocijativan je sleva nadesno U jednoj naredbi moguće je pisati više operacija append StringBuffer string = new StringBuffer(); string.append(”Prvi”).append(” drugi”);

68 Dopisivanje podstringa
Druga verzija metoda append() dodaje deo String objekta StringBuffer objektu. Još 2 argumenta: indeks prvog karaktera String objekta koji će se nadovezati ukupan broj karaktera koji će biti nadovezani StringBuffer buf = new StringBuffer(”Hard ”); String aString = ”Waxworks”; buf.append(aString,3,4); // ”Hard work”

69 Nadovezivanje primitivnih tipova
Verzije append() metoda koje omogućuju nadovezivanje String ekvivalenata vrednosti svakog od primitivnih tipova na StringBuffer objekat Argument može biti tipa: boolean, char, byte, short, int, long, float, double Postoji i verzija koja kao argument prima niz tipa char. Sadržaj niza se nadovezuje na StringBuffer objekat kao string

70 Nadovezivanje Još jedna verzija omogućuje nadovezivanje podskupa elemenata niza tipa char 2 dodatna argumenta: Indeks prvog elementa koji se nadovezuje Ukupan broj elemenata koji se nadovezuju

71 Traženje pozicije podstringa
Metod lastIndexOf() 2 verzije: 1 argument – string koji tražimo, a metod vraća indeks poslednje pojave stringa ili -1 ako string nije pronađen ( indeksiranje kreće od 0 ) Još jedan argument – indeks u baferu odakle treba da počne pretraživanje

72 Zamena podstringa u baferu
Metod replace() Menja uzastopni niz karaktera datim stringom String kojim zamenjujemo može sadržati više karaktera od stringa koji se menja 3 argumenta: Prva 2 tipa int: početni indeks u baferu i 1 iza kraja podstringa koji treba zameniti Treći: tipa String i to je string koji treba ubaciti

73 Primer StringBuffer phrase = new StringBuffer(”one two three four”);
String substring = ”two”; String replacement = ”twenty”; int position = phrase.lastIndexOf(substring); phrase.replace(position, position+substring.length(), replacement); // za dobijanje vrednosti indeksa karaktera koji je neposredno iza // poslednjeg karaktera podstringa, samo dodamo dužinu podstringa // na indeks njegovog početka

74 Umetanje String-ova Metod insert()
Prvi argument određuje indeks u objektu gde treba umetnuti prvi karakter Mnoge verzije insert() metoda prihvataju drugi argument nekog od tipova koje prihvata i metod append() U svakom slučaju, string ekvivalentan drugom argumentu umeće se počev od indeksa datog prvim argumentom

75 charAt() i getChars() rade na isti način kao istoimeni metodi klase String setCharAt() - ovim metodom može se promeniti pojedinačni karakter StringBuffer objekta 2 argumenta: indeks karaktera koji se menja i kojim karakterom se menja deleteCharAt() - brisanje pojedinačnog karaktera objekta sa pozicije date argumentom delete() - brisanje nekoliko karaktera ( indeks prvog karaktera koji se briše, indeks karaktera neposredno iza poslednjeg koji se briše )

76 reverse() i toString()
reverse() - obrće sekvencu karaktera u StringBuffer objektu toString() - kreira novi String objekat i inicijalizuje ga stringom sadržanim u StringBuffer objektu Kompajler intenzivno koristi toString() i append() metode da bi implementirao konkatenaciju String objekata

77 Primer String saying = ”Many” + ” hands” + ” make” ;
kompajler to implementira ovako: String saying = new StringBuffer().append(”Many”).append(” hands”).append(” make”).toString();


Download ppt "Objektno orijentisano programiranje"

Similar presentations


Ads by Google