PROGRAMIRANJE Amir Hajdar 2 Objekt-orjentirano programiranje (OOP) Objekt je kolekcija podataka i operacija koje se mogu vršiti nad istim Klasa je opis (specifikacija) objekta abstraktni pojam! Objekti komuniciraju preko definisanog interfejsa Detalji implementacije su skriveni unutar objekta
3 Objekt-orjentirano programiranje (OOP) Drugačiji način razmišljanja od proceduralnog Vrijeme se više troši na projektovanje a manje na programiranje Razmišlja se o problemu pa tek onda o implementaciji Razmišlja se prvo o akterima a kasnije o algoritmu Klasa: STOLNI DIGITALNI SAT 4 Operacije nad podacima Podaci Podesi vrijeme Prikaži vrijeme Sati: 12 Minuta: 21 Osvijetli sat
Karakteristike OOP-a 5 1. Apstrakcija ( instantiation ) Vanjski izgled objekta, bez razmišljanja o implementaciji 2. Enkapsulacija ( encapsulation ) Implementacija klase; javni i privatni dijelovi klase 3. Polymorphism Univerzalnost klase u obavljanju zadataka 4. Hijerarhija ( inheritance ) Logično grupisanje i nasljeđivanje Etika programiranja 6 Kopirati softver samo ako je dopušteno Pomenuti autora softvera koji ste kopirali/koristili u svom softveru Zaštiti privatne podatke ( privacy ) Koristiti principe razvoja softvera kako bi proizveli kvalitetan softver bez grešaka
Tehnike rješavanja problema 7 Postavljajte pitanja (o podacima, procesu, greškama, rezultatima, itd.) Pogledajte da li ima već nešto poznato neke situacije se znaju ponavljati Pokušaj riješiti analogijom Means-ends analiza krenuti od I/O i razviti detalje između Divide and conquer podijeli problem na manje dijelove i riješi Oslobodi se mentalnog bloka napiši problem svojim riječima Prvi java program 8 1 2 3 4 5 6 7 8 public class test { //implementacija klase public static void main (String[ ] args) { System.out.println("Hello World!"); return; Napomena: Program mora biti snimljen sa imenom klase, tj. u ovom slučaju, ime programa mora biti: test.java
Drugi java program 9 // Printati pozdravnu poruku i vrijeme import java.util.*; public class Time { public static void main(string[] args) { System.out.println( Pozdrav, ); System.out.println( Tacno vrijeme je: + new Date()); Teme 10 Java sintaksa ASCII, Unicode i data tipovi Identifikatori i varijable Deklaracija konstanti i varijabli Operatori i casting IF-THEN-ELSE i SWITCH FOR WHILE i DO-WHILE BREAK i CONTINUE
Java sintaksa 11 Sintaksa je skup pravila koji precizno definisu kako se slova, brojevi i znakovi koriste u jeziku za programiranje. Sintaksa je objašnjena korištenjem metajezika ( metalanguage ) (npr. Bakcus-Naur-form, sintaks dijagram, i sintaks template ) ASCII i Unicode 12 ASCII (izgovara se: ask-key ) je stariji skup koji predstavlja znakove u obliku cijelih brojeva ( integer -a) Npr. A = 65, pa možemo porediti A i B ( B = 66) korisno kod sortiranja podataka Npr. a + 1 = b ASCII je zamijenjen sa Unicode-om
Data tipovi 13 primitive integral boolean floating point byte char short int long float double reference array interface class Data tipovi 14 Integralni tipovi Svi cijeli brojevi (uključujući negativne) int, short, long Jednocifreni brojevi mogu biti definisani kao char Floating point tipovi Realni brojevi float ili double
Data tipovi 15 Tip boolean char Veličina (bit) Min Max 1 false true 16 Default false '\u0000' (null) byte 8-128 127 (byte) 0 short 16-32,768 32,767 (short) 0 int 32-2,147,483,648 2,147,483,647 0 long 64-9,223,372,036,854,775,808 9,223,372,036,854,775,807 0L float 32 Approx ±3.4E+38 sa 7 značajnih cifara 0.0F double 64 Approx ±1.7E+308 sa15 značajnih cifara 0.0D void Identifikatori 16 Identifikator je ime koje se koristi za klasu, varijablu, konstantu, funkciju ili package u Java programu Java je case-sensitive ObimTrougla obimtrougla Savjet: Uvijek koristiti identifikatore koji imaju smisla a nisu predugački nazivi.
Identifikatori 17 Identifikatori moraju početi sa slovom, donjom crtom (_) ili znakom dolara ($), a ostali znakovi mogu biti bilo koje slovo (veliki ili malo), broj, donja crta ili znak dolara. Ispravno godina_proizvodnje GodinaProizvodnje _godinaproizvodnje Neispravno 13dana Godina& Godina-proizvodnje Rezervisane riječi 18 abstract boolean break byte case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transienttrue try void volatile while Rezervisane riječi nemogu biti indentifikatori!
Varijable 19 Varijabla predstavlja memorijsku lokaciju kojoj možemo pristupiti preko identifikatora, a koja može sadržati vrijednost koja se može promijeniti. Deklaracija varijable predstavlja definisanje njenog imena i tip podataka koje može sadržati. Varijable i data tipovi 20 Primjeri deklaracija varijabli: int GodinaProzivodnje; int BrojStudentata = 713; double Procenat; double ProsjekOcjena =.406; char Spol; char Spol= m ; boolean Ispravno; boolean Prazno= true; double temp = 583d; float maxtemperatura = 100F;
Operatori 21 Aritmetika: +, -, *, /, % Primjer: x = (a + b)/(c + d); if (x % 2 == 0) { System.out.println( Broj je paran."); Relacija: >, <, >=, <=,!=, == Primjer: boolean quit = (index == 100); Boolova algebra: &&,,! Primjer: if(!quit (index < 5) ) { // uradi neke druge operacije Prefix i postfix operatori 22 x izraz x (prije) (poslije) Postfix incr.: x++ 1 1 2 Postfix decr.: x-- 1 1 0 Prefix incr.: ++x 1 2 2 Prefix decr.: --x 1 0 0
Casting 23 Pretpostavimo da hoćemo podijeliti cijele brojeve: int a = 5; int b = 2; float f; f = a/b; f =? f = (float)a/(float)b; //? f = (float)(a/b); //? IF 24 if(y > 0) System.out.println("Cao!"); if(z > 0 && isempty) { x = y; System.out.println("Pa-pa!");
IF/ELSE 25 if(a == b) { System.out.println("a i b su jednaki."); else { System.out.println("a je razlicito od b!"); IF/ELSE 26 if(a == b){ System.out.println("a i b su jednaki."); else { System.out.println("a je razlicito od b!");
IF/ELSE ( nesting ) 27 if(a == b) { if(c == d) { /* a je jednako b i c je jednako d*/ else { /* a je jednako b ali c nije jednako d*/ else { if(x == y) { /* a nije jednako b ali x je jednako y*/ else { /* a nije jednako b i x nije jednako y*/ Zadatak: Ako su definisane boolean varijable KisaPada i ImamKisobran, napišite IF/ELSE ( nesting ) koji će provjeriti da li će te pokisnuti i ispišite odgovarajuće rečenice zašto, odnosno zašto nećete pokisnuti. SWITCH 28 switch (month) { case APR: case JUN: case SEP: case NOV: numdays = 30; break; case FEB: if(year % 4 == 0) numdays = 29; else numdays = 28; break; default: numdays = 31; Zadatak: Ako je definisana varijabla Dan (slično kao varijabla month u primjeru), napišite dio programa koji će printati tekući dan u sedmici koristeći switch.
WHILE 29 int i = 1; while (i <= 10) { System.out.println(i); i++; int i = 10; while (i >= 0) { System.out.println(i); i--; FOR 30 for (int i = 1; i <= 10; i++) { System.out.println(i); for (int i = 10; i >= 0; i--) { System.out.println(i);
DO-WHILE 31 int i = 1; do { System.out.println(i); i++; while (i <= 10) int i = 10; do { System.out.println(i); i--; while (i >= 0); BREAK i CONTINUE 32 BREAK prekida izvršenje petlje CONTINUE prekida izvršenje trenutne iteracije petlje i pokreće slijedeću iteraciju int i = 0; while (i <= 10) { i++; if (i % 5 == 0) break; System.out.println(i); int i = 0; while (i <= 10) { i++; if (i % 5 == 0) continue; System.out.println(i); Zadatak: 1.) Koristeći BREAK, napišite dio programa koji će zaustaviti provjeru brojeva ako je broj negativan. 2.) Koristeći CONTINUE, napišite dio programa koji će ispisati sve parne brojeve.
Najjednostavnija klasa 33 HEADING public class praznaklasa { BODY