Professional Documents
Culture Documents
Ak.g. 2012./2013.
Zatieno licencom http://creativecommons.org/licenses/by-nc-sa/2.5/hr/
18.10.2012.
Creative Commons
slobodno smijete:
l l l
l l
imenovanje. Morate priznati i oznaiti autorstvo djela na nain kako je specificirao autor ili davatelj licence (ali ne nain koji bi sugerirao da Vi ili Vae koritenje njegova djela imate njegovu izravnu podrku). nekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe. dijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili stvarate koristei ga, preradu moete distribuirati samo pod licencom koja je ista ili slina ovoj.
U sluaju daljnjeg koritenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog djela. Najbolji nain da to uinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta mogue je odstupiti, ako dobijete doputenje nositelja autorskog prava. Nita u ovoj licenci ne naruava ili ograniava autorova moralna prava.
Tekst licencije preuzet je s http://creativecommons.org/.
RUAZOSA 18.10.2012.
2 od 75
RUAZOSA
18.10.2012.
3 od 70
Prevoditelji
Solaris
RUAZOSA
18.10.2012.
4 od 75
Prevoditelji
Interpretor Windows
Izvorni kod
Solaris
RUAZOSA
18.10.2012.
5 od 75
Prvi primjer
FirstExample.java:
public class FirstExample { public static void main(String[] args) { System.out.println("Ovo radi!!"); } }
prevoenje: pokretanje:
ispis:
Ovo radi!!
RUAZOSA
18.10.2012.
6 od 75
UML
t
RUAZOSA
18.10.2012.
7 od 75
Svojstva olakava komunikaciju sudionika (kupac tj. naruitelj, konzultant, dizajner, programer, ) t neovisan o programskom jeziku t neovisan o razvojnom procesu t posjeduje mehanizme za proirenje i specijalizaciju (prilagodba novim potrebama) t neiskusni programeri uz UML lake ue i shvaaju OO koncepte
t
RUAZOSA
18.10.2012.
8 od 75
UML dijagrami
Use Case Use Case Diagrams Sequence Diagrams Diagrams Scenario Scenario Diagrams Collaboration Diagrams Diagrams Scenario Scenario Diagrams Statechart Diagrams Diagrams
Models
Dinamiki dijagrami
Activity Diagrams
Diagrams
Statiki dijagrami
RUAZOSA
18.10.2012.
9 od 75
Objektni sustav
metode
atributi
poruka
RUAZOSA
RUAZOSA
18.10.2012.
11 od 75
Analiza zahtjeva
RUAZOSA
18.10.2012.
12 od 70
Brainstorming Za koga je sustav? t to e sustav raditi? t Koji poslovne potrebe treba sustav podravati? t Koje informacije korisnik sustava treba imati? t Podrava li sustav timski rad? t Kako je najjeftinije to napraviti? t Kako moemo to najbolje napraviti?
t
RUAZOSA
18.10.2012.
13 od 75
Ideja:
Nastavnik slae skup pitanja za studente Student rjeava ispit Student moe odgovarati na pitanja ispita Postoje razliite vrste pitanja:
Pitanja s kratkim odgovorima npr. jedna rije Pitanja s vie tonih odgovora npr. a, c Povezivanje pojmova npr. a1,b2,c3
RUAZOSA
18.10.2012.
14 od 75
Klasa (class) predstavlja kolekciju slinih objekata Odgovornost (responsibility) sve to klasa zna ili radi Suradnik (collaborator) ponekad klasa sama nema sve informacije pa za neku odgovornost treba druge klase
RUAZOSA 18.10.2012.
15 od 75
Prepoznavanje klasa to komunicira sa sustavom ili je dio sustava? t Postoji li korisnik? t Koji se izvjetaji generiraju? t Koje su najvanije klase?
t
RUAZOSA
18.10.2012.
16 od 75
Ponekad emo prepoznati odgovornosti koje neemo implementirati t Klase trebaju suraivati da bi mogle izvriti svoje odgovornosti
t
RUAZOSA
18.10.2012.
17 od 75
Definiranje suradnika Suradnik je potreban kada klasa treba informacije koje nema (nisu u njenoj odgovornosti) t Treba postojati barem jedan inicijator za svaku suradnju t Ponekad suradnici odrade veinu posla t Nove odgovornosti se mogu stvoriti da bi se ispunila neka suradnja
t
RUAZOSA
18.10.2012.
18 od 75
Definiranje sluajeva uporabe (use cases) Potrebno je pojedine sluajeve opisati t Ti sluajevi se koriste za funkcijsko testiranje t Na temelju tih sluajeva naruitelj provjerava da li sustav radi
t t
RUAZOSA
18.10.2012.
19 od 75
Premjetanje kartica Kartice s klasama koje surauju trebaju biti blie jedna k drugoj t to vie klase surauju to su kartice blie t Na poetku se kartice miu esto t Kartice koje smo vie micali stavljamo u centar
t
RUAZOSA
18.10.2012.
20 od 75
Odabrati sluaj uporabe (scenarij) Odrediti koja kartica je zaduena za njega Dopisati u karticu ako je potrebno neto dodati Objasniti logiku procesiranja Dogovarati se po potrebi Kada je jedna kartica gotova vratiti natrag izvravanje Paralelno pisati slijedne dijagrame (sequence diagram)
RUAZOSA
18.10.2012.
21 od 75
Dizajn koda
RUAZOSA
18.10.2012.
22 od 70
RUAZOSA
18.10.2012.
23 od 75
korisniko suelje (ks) -prima unos novih pitanja i sprema ih -ispisuje pitanja -prima unos ispita -prima odgovore na pitanja baza pitanja (bp) -sprema pitanja -ima listu svih pitanja -ima predloke ispita -stvara novi ispit za studenta nastavnik, bp student, pitanje nastavnik, bp student,ispit
ispit -zna koja su pitanja u ispitu -postavlja pitanje -sprema odgovore pitanje ks ks
pitanje -zna tekst -zna toan odgovor -zna provjeriti toan odgovor
RUAZOSA
18.10.2012.
24 od 75
public static void main(String[] args) { ShortAnswerQuestion question = new ShortAnswerQuestion( "U kojem jeziku se programira za Android?", "Java"); System.out.println(question.getText()); System.out.println("C: " + question.isCorrectAnswer("C")); System.out.println("java: " + question.isCorrectAnswer("java")); } }
Ispis programa:
U kojem jeziku se programira za Android? C: false java: true
RUAZOSA
18.10.2012.
25 od 75
Klasa ShortAnswerQuestion
public class ShortAnswerQuestion { private String text; private String correctAnswer;
atributi
public ShortAnswerQuestion(String text, String correctAnswer) { konstruktor this.text = text; this.correctAnswer = correctAnswer; } public String getText() { return text; }
objekta
objekt = instanca svoje klase t klasa je vrsta podatka, kao i int ili float
t t
RUAZOSA
18.10.2012.
28 od 75
Druge namjene klase ne slue sve klase za instanciranje t npr. klasa Main
t
ima samo posebnu metodu main nema atribute nema normalne metode instanca te klase je neupotrebljiva
RUAZOSA
18.10.2012.
29 od 75
itljivost koda preteno mala slova (lowercase) t praznine se koriste zbog itljivosti
t
uvlaenje ocrtava ustroj cijele datoteke koda razmaci odreuju ustroj izraza i izjava prazne linije odvajaju blokove koda
t
RUAZOSA
18.10.2012.
30 od 75
definirati i smisleno nazvati konstantu: private static final int ARRAY_SIZE = 10;
RUAZOSA
18.10.2012.
31 od 75
Klase i metode
Klase
public class ClassName extends SuperClass implements Interface1, Interface2 { // tijelo uvueno za // jedan korak } public void methodName( SomeClass argument ) throws SomethingThrowable { // tijelo uvueno za // jedan korak }
predstavlja djelovanje, glagol poeljno jedan ekran, najdulje A4 stranica pazite na dug niz argumenata
RUAZOSA
18.10.2012.
32 od 70
Softverska dokumentacija dokumentacija je informacija o proizvodu namijenjena korisniku t unutranja i vanjska t programer dokumentira (opisuje) svoj rad za:
t
samog sebe (unutranja) (poznate) lanove tima (unutranja) (nepoznate) budue programere (unutranja) ljude koji e samo koristiti (vanjska)
RUAZOSA
18.10.2012.
33 od 75
Samodokumentirajui kod
t
komentari:
samo najnuniji jezgrovite, ali pune reenice usput, ne naknadno
RUAZOSA
18.10.2012.
34 od 75
Komentari (1)
t t t
pozicioniranje: prije koda ponekad na kraju linije koda (inline) samo ako je komentar vrlo kratak i takvim e ostati odaberite stil oblikovanja
minimalni trud pri pisanju lako se moe proiriti ili prepraviti
t t
RUAZOSA
18.10.2012.
35 od 75
Komentari (2)
t
ne valja:
RUAZOSA
18.10.2012.
36 od 75
Komentari (3)
t
napisati suelje metode tijelo popuniti pseudokodom na prirodnom jeziku zamijeniti svaku liniju pseudokoda sa stvarnim kodom pseudokod pretvoriti u komentare
RUAZOSA
18.10.2012.
37 od 75
Javadoc komentari mehanizam generiranja vanjske API dokumentacije na osnovu komentara u kodu t poinju s /**, zavravaju s */ t piu se prije deklaracije klase, varijable ili metode t moe se formatirati u HTML-u t posebne oznake u komentaru poinju s @
t
RUAZOSA
18.10.2012.
38 od 75
RUAZOSA
18.10.2012.
39 od 75
RUAZOSA
18.10.2012.
40 od 75
Komentari (4)
t
iskomentirani kod
privremeno izbaen dio napisanog koda jednolinijski bez razmaka
vielinijski sa /* i */
t
dio koda nije dovren ne nalazi se u konanoj verziji koda alati podravaju brzo pronalaenje takvog koda public static void main(String[] args) { // TODO Auto-generated constructor stub }
primjer:
RUAZOSA
18.10.2012.
41 od 75
Oznake u kodu
RUAZOSA
18.10.2012.
42 od 75
RUAZOSA
18.10.2012.
43 od 75
Pregledavanje postojeih:
Eclipse Preferences Java Editor Templetes
RUAZOSA
18.10.2012.
44 od 75
Dijagram klasa (class diagram) opisuje klase objekata u sustavu te statike relacije izmeu njih t prikazuje operacije (metode u Javi) i atribute klasa t tijekom razvojnog procesa dijagrami klasa se detaljiziraju od konceptualnih dijagrama do dijagrama dovoljnih za kreiranje koda
t
<<stereotip>> ImeKlase +atribut1:int #atribut2:int -atribut3:long +op1(param:int):long
RUAZOSA
18.10.2012.
45 od 75
t asocijacija
Predavac
ime
Predmet
t agregacija
n opisuje najopenitiju vezu izmeu klasa n ne misli se na komunikaciju n moe biti jednosmjerna n pokazuje da klasa sadri druge klase tj. da je dio druge klase n Predmet sadri SadrzajPredmeta n isto kao agregacija samo to nitko nema referencu na objekt osim objekta koji je komponiran tom klasom
SadrzajPredmeta
t kompozicija
Poglavlje
RUAZOSA
18.10.2012.
46 od 75
t uloge u relacijama
t viestrukost
n kraj relacije koji se spaja na simbol klase zove se uloga n uloge mogu imati imena n ime uloge je obino imenica koja objanjava svrhu relacije u klasi i ima definiranu viestrukost i viestrukost vidljivost
1 tono 1 * 0 ili vie 0..2 od 0 do 2 (raspon) 6,10 6 i 10 (nabrajanje) 4..6, 10 od 4 do 6 i 10 (kombinacija)
SadrzajPredmeta
1..*
+predavanja uloge
+predavac
PredavaceveInformacije
RUAZOSA
18.10.2012.
47 od 75
nadklasa ili klasa roditelj (KorisnickeInformacije) podklasa ili klasa dijete ili derivirana klasa ili izvedena klasa (PolaznikoveInformacije)
podklasa nasljeuje nadklasu generalizacija omoguuje stvaranje nadklase koja objedinjuje strukturu i ponaanje zajedniko za nekoliko klasa specijalizacija omoguuje stvaranje podklase koja predstavlja dodavanje novih elemenata
KorisnickeInformacije
PolaznikoveInformacije
PredavaceveInformacije
RUAZOSA
18.10.2012.
48 od 75
PdfFileWriter
PsFileWriter
t koritenje/ovisnost
n pokazuje da jedan objekt jedne klase (User) koristi objekt druge klase (Printer)
User Printer
RUAZOSA
18.10.2012.
49 od 75
RUAZOSA
18.10.2012.
50 od 75
RUAZOSA
18.10.2012.
51 od 75
Ispis programa:
U kojem jeziku se programira za Android? objective-c: false java: true U kojem jeziku se programira za iPhone? objective-c: true java: false
RUAZOSA 18.10.2012.
52 od 75
Dijagram objekata (object diagram) opisuje sustav u jednom vremenskom trenutku t opisuje stvarne podatke koji bi se mogli nalaziti u objektima t vrlo slian dijagramu klasa t osnovni elementi:
t
objekt asocijacija
RUAZOSA
18.10.2012.
53 od 75
RUAZOSA
18.10.2012.
54 od 75
RUAZOSA
18.10.2012.
55 od 70
RUAZOSA
18.10.2012.
56 od 75
RUAZOSA
18.10.2012.
58 od 75
Kopozicija objekata
dijagram klasa
Quiz
-name:String -noOfQuestions: int
dijagram objekata
nalExam:Quiz name = "Final Exam"
questions
-questions 0..10
ShortAnswerQuestion
-text: String -correctAnswer: String +ShortAnswerQuestion() +getText() : String +isCorrectAnswer() : boolean
RUAZOSA
18.10.2012.
59 od 70
Konstruktor kreiranje objekta: potrebna je inicijalizacija t dovoenje objekta u poetno stanje t to se obavlja konstruktorom
t
RUAZOSA
18.10.2012.
61 od 75
RUAZOSA
18.10.2012.
63 od 75
RUAZOSA
18.10.2012.
64 od 75
-questions
0..10
ShortAnswerQuestion
-text: String -correctAnswer: String +ShortAnswerQuestion() +getText() : String +isCorrectAnswer() : boolean
RUAZOSA
18.10.2012.
65 od 75
Polimorfizam
RUAZOSA
18.10.2012.
66 od 70
Klasa MultipleChoiceQuestion
public class MultipleChoiceQuestion { private String text; private String correctAnswer1; private String correctAnswer2; public MultipleChoiceQuestion(String text, String correctAnswer1, String correctAnswer2) { this.text = text; this.correctAnswer1 = correctAnswer1; this.correctAnswer2 = correctAnswer2; } public String getText() { return text; } public boolean isCorrectAnswer(String answer) { return correctAnswer1.equalsIgnoreCase(answer) || correctAnswer2.equalsIgnoreCase(answer); } }
RUAZOSA 18.10.2012.
67 od 75
... public String getText() { return text; } public boolean isCorrectAnswer( String answer) { ... } }
RUAZOSA
18.10.2012.
68 od 70
Polimorfizam primjer
public class MainInterface { public static void main(String[] args) { Question question1 = new IShortAnswerQuestion("pitanje1", "o1"); Question question2 = new IMultipleChoiceQuestion("pitanje2", "o1", "o2"); System.out.println("SAQ"); useQuestion(question1); System.out.println("MCQ"); useQuestion(question2); } ...
RUAZOSA
18.10.2012.
69 od 75
Polimorfizam primjer
private static void useQuestion(Question question) { System.out.println("Pitenje: " + question.getText());
System.out.println("o1: " + question.isCorrectAnswer("o1")); System.out.println("o2: " + question.isCorrectAnswer("o2")); }
dinamiko povezivanje!
oekivani ispis:
SAQ Pitenje: pitanje1 o1: true o2: false MCQ Pitenje: pitanje2 o1: true o2: true
RUAZOSA
18.10.2012.
70 od 75
Question je suelje
RUAZOSA
18.10.2012.
71 od 75
IShortAnswerQuestion
-text: String -correctAnswer: String +ShortAnswerQuestion() +getText() : String +isCorrectAnswer() : boolean
IMultipleChoiceQuestion
-text: String -correctAnswer1: String -correctAnswer2: String +MultipleChoiceQuestion() +getText() : String +isCorrectAnswer() : boolean
RUAZOSA
18.10.2012.
72 od 75
... public String getText() { return text; } public boolean isCorrectAnswer( String answer) { ... } }
RUAZOSA
18.10.2012.
73 od 70
Suelje pravila
t
t t t
RUAZOSA
18.10.2012.
74 od 75
Koritenje suelja
t
RUAZOSA
18.10.2012.
75 od 75