Analiza gotovog Java programa

poruka: 29
|
čitano: 5.293
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
neaktivan
offline
Analiza gotovog Java programa

Pozdrav svima!

 

Dakle imam zadatak proucit jedan gotovi Java program, koji je meni dosta kompleksan i zasad nemogu jos skuzit, nemogu si zamislit u glavi kako on radi, osnovne funkcije njegove, ako me razumijete. Pa me zanima kako bi si mogao pomoci, imate li kakvih savjeta kako analizirati taj program? Vidim i da ima nekakvih programa za analizu Java programa, ali to je vise za debugiranje i tako neke stvari, isto tako sam primjetio da postoji taj neki UML u Netbeansima koji jos nisam probao, koliko sam skuzio sluzi za graficku prezentaciju programa sa nekakvim blokovima.

Savjeti, itko? :)

Moj PC  
0 0 hvala 1
17 godina
offline
Analiza gotovog Java programa

Programski kod ili baš kompajlirani program?

 

Ako je programski kod u pitanju, otvoriš ga neki meditorom tipa Notepad++ i za svaki red u njemu napišeš komentar što taj red radi.

Nakon toga, na papir si redom pratiš program (što radi koji red, to na papiru odradiš). Kada to završiš imati ćeš jasnu predodžbu što program radi.

Provjerite Boss Game @ http://boss-game.com/forum2/index.php
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Pozdrav svima!

 

Dakle imam zadatak proucit jedan gotovi Java program, koji je meni dosta kompleksan i zasad nemogu jos skuzit, nemogu si zamislit u glavi kako on radi, osnovne funkcije njegove, ako me razumijete. Pa me zanima kako bi si mogao pomoci, imate li kakvih savjeta kako analizirati taj program? Vidim i da ima nekakvih programa za analizu Java programa, ali to je vise za debugiranje i tako neke stvari, isto tako sam primjetio da postoji taj neki UML u Netbeansima koji jos nisam probao, koliko sam skuzio sluzi za graficku prezentaciju programa sa nekakvim blokovima.

Savjeti, itko? :)

Sto znaci gotovi program? Imas kompletan kod pa ti nije jasno sto koji dio koda radi ili imas bytecode kojeg treba disassemblati pa analizirati? Ako je prvo, jbg, nauci Javu. Ako je drugo, mozda ti ovo moze pomoci.

EDIT: Ili ovo.

 

UML ti nece koristiti previse, jer se on koristi kod izrade nekog projekta, zbog lakseg definiranja raznih komponenti projekta/programa, tipa s use-case dijagramima definiras scenarije koje tvoj program pokriva iz staticke perspektive, pa onda sekvencijske dijagrame da pokrijes dinamicku perspektivu, pa class dijagrame da definiras samu strukturu svog programa itd. Ima puno razlicitih dijagrama, ali osobno, od koristi su mi jedino bili jedino navedeni use-case i class dijagrami, te tu i tamo sekvencijski.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
Poruka je uređivana zadnji put pon 31.12.2012 14:46 (1domagoj1).
12 godina
neaktivan
offline
Analiza gotovog Java programa

Imam kompletan kod. Program nije bas mali, meni je ogroman jer sam pocetnik, ima nekih 120-130 klasa.

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Imam kompletan kod. Program nije bas mali, meni je ogroman jer sam pocetnik, ima nekih 120-130 klasa.

A dobro, nije to tako puno.

 

Nista, ja bih u tom slucaju radio top-down. Kreni od vrha, skiciraj si pakete i ulogu svakog paketa. Onda ispod svakog paketa skiciraj klase, njihove medusobne veze i ulogu svake klase. Postupno odi u sve finije detalje. Ovdje ti UML moze itekako pomoci. Ne moras koristiti nikakve UML alate ako ti je tesko, mozes jednostavno uzeti olovku i papir i to sve skicirati, pri tome naravno koristi standardne UML oznake.

 

E sad, definiraj to pocetnik. Pocetnik u programiranju ili pocetnik u Javi? Ako je ovo drugo i znas OO paradigmu, ne bi trebao biti problem (tu podrazumijevam da znas i design patterne, moguce je da su upotrebljavani u tvom programu). Obavezno prouci sve komentare u kodu (ako ih ima, ako nema, nadi toga koji je pisao taj kod i zatuci ga xD - sala ofc) i dopisi ih kako mislis da bi trebalo pisati. Ali dobre komentare, ne komentare tipa "ovo je for petlja, vrti se od i = 0 do 100", vec komentare tipa "u ovoj for petlji se prebrojavaju sakupljene banane" i sl.

 

Sretno!

 

P.S. Jel to ona centrala iz druge teme?

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
12 godina
neaktivan
offline
Re: Analiza gotovog Java programa

Pa nisam bas pocetnik u programiranju, radio sam u srednjoj u C-u, assembler na faxu, programirao PLC-ove pomocu nekog programskog jezika slicnom Pascalu. Ali sa OO programiranjem sam se prvi put susreo prije mjesec i pol dana :D. Program naravno nije komentiran -.-, tj. je, ali to bi bilo doslovno mozda 1% potrebnih komentara. Da, program se između ostalog bavi i centralama :)

17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Pa nisam bas pocetnik u programiranju, radio sam u srednjoj u C-u, assembler na faxu, programirao PLC-ove pomocu nekog programskog jezika slicnom Pascalu. Ali sa OO programiranjem sam se prvi put susreo prije mjesec i pol dana :D. Program naravno nije komentiran -.-, tj. je, ali to bi bilo doslovno mozda 1% potrebnih komentara. Da, program se između ostalog bavi i centralama :)

Znaci pocetnik. :P

 

Prvo dobro savladaj osnove OOP-a. Potrudi se da jako dobro shvatis 4 svojstva OOP-a: enkapsulaciju, nasljedivanje, skrivanje podataka i polimorfizam (ovo ce ti vjerojatno najvise muka zadavati) jer bez toga neces niti prokuziti program. Onda vidi kako je koje od ovih svojstava realizirano u Javi. Pazi, Java nema visestrukog nasljedivanja, za razliku od C++-a ili Pythona npr. Ovo je opcenito.

 

Jos jedan savjet, probaj doci do programera koji su iskodirali taj program, iako se niti oni vise bas nece sjecati toga, ali uvelike bi ti moglo olaksati zadatak.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
12 godina
neaktivan
offline
Re: Analiza gotovog Java programa

Procitao sam knjigu Java 6 naucite u 21 dan, ali mi svejedno nisu jasne neke osnovne stvari. Recimo nije mi jasno cemu tocno sluzi interfejs? Znam da ga klase implementiraju, da ima samo navedene metode bez koda u njima itd. ali mi nije jasno koja je njegova svrha? 

15 godina
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Procitao sam knjigu Java 6 naucite u 21 dan, ali mi svejedno nisu jasne neke osnovne stvari. Recimo nije mi jasno cemu tocno sluzi interfejs? Znam da ga klase implementiraju, da ima samo navedene metode bez koda u njima itd. ali mi nije jasno koja je njegova svrha?

Ovdje ti je to objašnjeno:

http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

Poruka je uređivana zadnji put sri 2.1.2013 9:38 (captain_soap_McTawish).
17 godina
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Procitao sam knjigu Java 6 naucite u 21 dan, ali mi svejedno nisu jasne neke osnovne stvari. Recimo nije mi jasno cemu tocno sluzi interfejs? Znam da ga klase implementiraju, da ima samo navedene metode bez koda u njima itd. ali mi nije jasno koja je njegova svrha? 

Iako interface ima raznu uporabu, najjednostavnija i najosnovnija ti je komunikacija između dvije ili više klasa(to su ti npr razni event listeneri koji se nalaze unutar jave).

Npr. Ti radiš aplikaciju koja se spaja na neki server i nakon što dobije odgovor ti nešto radiš sa tim odgovorom. Recimo da je netko drugi napisao (onaj tko je vlasnik toga servera ti je napisao API) klasu pomoću koje se spajaš na server, ona obradi HTTP komunikaciju za tebe i preparsa ti odgovor u neki "korisniku" (tebi) razumljiv odgovor (najčešće String).Interface (kako mu i ime govori) ti definira sučelje između te dvije klase i podatke koji se šalju iz jedne u drugu klasu.

Jedino što ti trebaš jest, instancirati objekt te klase i prikačiti se svojom implementacijom sučelja na neki event listener koje je definiran unutar te klase.

Vrlo slično interface-u su i abstraktne klase, kod kojih je dio logike implementiran (jednak za sve implementacije) unaprijed, a ostatak je na klasi koja naslijeđuje abstraktnu klasu. Niti interface, niti abstraktne klase se ne mogu instancirati (nema ih na heap-u).


Evo isto jedan dobar primjer zašto su interface-ovi korisni

 

http://stackoverflow.com/questions/504904/how-are-java-interfaces-actually-used

 

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Procitao sam knjigu Java 6 naucite u 21 dan, ali mi svejedno nisu jasne neke osnovne stvari. Recimo nije mi jasno cemu tocno sluzi interfejs? Znam da ga klase implementiraju, da ima samo navedene metode bez koda u njima itd. ali mi nije jasno koja je njegova svrha? 

Pa evo, kao sto sam ti rekao, Java nema visestrukog nasljedivanja, pa se interfaceom recimo to tako - doskace tom "problemu". Jer u Javi klasa se moze naslijediti samo iz jedne jedine klase, ali jedna klasa moze implementirati vise interfacea.

 

C++ u usporedbi s Javom podrzava visestruko nasljedivanje, ali zato ne podrzava interface (iako ga se moze simulirati uz pomoc klase sa cistim virtualnim funkcijama, ali to je vec drugi par carapa).

 

Recimo da imas dvije klase, Kamion i Pekara. Kamion ima metodu dostavi(), a Pekara ima metodu ispeci(). Recimo da sad nas vlasnik te pekare i kamioncica odluci prodavati pizze iz svog kamioncica za dostavu. U C++-u za takve stvari imamo visestruko nasljedivanje. U Javi toga nemamo, stoga koristimo interface. Naslijedimo klasu Kamion i dodamo pekaru kao podatkovni clan te zatim implementiramo interface IPekara tako da pozovemo metodu pekara.ispeci():

 

class PizzaKamioncic extends Kamion implements IPekara {
    Pekara pekara;

    public void ispeci(Hrana narucenaHrana) {
        pekara.ispeci(narucenaHrana);
    }
}

 

Sad mozes raditi ovo npr.:

 

pizzaKamioncic.dostavi(ulica);
pizzaKamioncic.ispeci(mjesanaPizza);

 

Dakle, obje metode sad mozes zvati nad jednim jedinim objektom, drugim rijecima pomocu interface-a si si omogucio "visestruko nasljedivanje".

 

EDIT: Sry, zaboravio sam prefiks "I" ispred imena interface-a, sad sam to ispravio.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
Poruka je uređivana zadnji put sri 2.1.2013 13:24 (1domagoj1).
12 godina
neaktivan
offline
Analiza gotovog Java programa

Hvala na objasnjenju svima :)

Ovako, imam jos jedno pitanje :P
Dakle u moj projekt je importano vise jar datoteka sa svakakvim klasama. Pretpostavljam da je to downloadano negdje s interneta, jer su mi rekli da su to gotove, napravljene klase. Kako bi ja mogao naci gdje je to skinuto, u nadi da nadjem dokumentaciju za sve te klase? 

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Hvala na objasnjenju svima :)

Ovako, imam jos jedno pitanje :P
Dakle u moj projekt je importano vise jar datoteka sa svakakvim klasama. Pretpostavljam da je to downloadano negdje s interneta, jer su mi rekli da su to gotove, napravljene klase. Kako bi ja mogao naci gdje je to skinuto, u nadi da nadjem dokumentaciju za sve te klase? 

Najlakše ti je da googlaš svaki od tih jar-ova, jer jarovi su ti kao "libovi" u C aplikacijama. Mogu dolaziti sa raznih izvora (najčešći apache project http://www.apache.org/).

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
12 godina
neaktivan
offline
Analiza gotovog Java programa

Evo recimo nemogu nac ove nikako logapi.jar, baseapi.jar da ga ubijes :S

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Evo recimo nemogu nac ove nikako logapi.jar, baseapi.jar da ga ubijes :S

Ako radis u Eclipseu, nadi u Package Exploreru taj jar i klikni na strelicu pokraj njega, da vidis od kojih se paketa sastoji. Firme obicno imenuju pakete u Javi obrnutim redoslijedom svoje web stranice, tipa com.example.mywebpage. Mozda mozes nesto saznati iz toga. Takoder pogledaj i Properties jar filea, tocnije Javadoc lokaciju, tamo ces najcesce naci izvor tog jara (ako Javadoc lokacija postoji).

 

EDIT: Jel logapi.jar mozda ovaj? Pogledaj imena paketa pa usporedi.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
Poruka je uređivana zadnji put pet 4.1.2013 12:17 (1domagoj1).
12 godina
neaktivan
offline
Analiza gotovog Java programa

Ma kakvi, nema javadoca, niceg nema :/

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Ma kakvi, nema javadoca, niceg nema :/

Vidi moj EDIT gore, znaci, expandaj jar file pa vidi imena paketa pa googlaj skupa s tim.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
12 godina
neaktivan
offline
Analiza gotovog Java programa

Nije ne. Ovaj jar ima 3 klase u sebi: TestCls, LogUtil, LogErrorHandler. Googlanjem nisam nasao nista

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Nije ne. Ovaj jar ima 3 klase u sebi: TestCls, LogUtil, LogErrorHandler. Googlanjem nisam nasao nista

Ako te klase nisu u nekom paketu, vec recimo default package-u, moguce je da je to neki inhouse jar koji su napravili u tvojoj firmi. Probaj kontaktirati ako si u mogucnosti ljude koji su radili na tome.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
12 godina
neaktivan
offline
Analiza gotovog Java programa

Raspitao sam se ja naravno o tome prije nego sto sam ovdje ista pitao. Sef kaze da misli (nezna raditi u Javi) da su to neki jar-ovi skinuti s interneta iako ja sumnjam jako u to. Kad otvorim ovaj logapi.jar sa nekim programom tipa WinRar, pokazu mi se 2 foldera unutra: META-INF i lib. U prvom je file MANIFEST.MF, u drugom je folder log, a u njemu su one 3 klase koje sam spomenuo u proslom postu.

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

Raspitao sam se ja naravno o tome prije nego sto sam ovdje ista pitao. Sef kaze da misli (nezna raditi u Javi) da su to neki jar-ovi skinuti s interneta iako ja sumnjam jako u to. Kad otvorim ovaj logapi.jar sa nekim programom tipa WinRar, pokazu mi se 2 foldera unutra: META-INF i lib. U prvom je file MANIFEST.MF, u drugom je folder log, a u njemu su one 3 klase koje sam spomenuo u proslom postu.

E pogledaj MANIFEST.MF, unutra bi moglo pisati nesto detaljnije, evo npr. u JSoup-ovom manifest.mf-u postoje ova dva reda:

 

Bundle-License: http://jsoup.com/license
Bundle-DocURL: http://jsoup.org/

 

To su valjani linkovi JSoup-ove stranice. Mozda ima nesto slicno i u tvojem fileu.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
12 godina
neaktivan
offline
Analiza gotovog Java programa

 

Evo iz logapi:

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.8.2

Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.)

Class-Path: lib/log4j-1.2.16.jar lib/baseapi.jar

 

 

A iz baseapi: (edit: u baseapi.jar su dvije klase koje me najvise zanimaju dal imaju dokumentacije, PropertyNode i Property klasa)

 

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.7.1

Created-By: 14.2-b01 (Sun Microsystems Inc.)

Main-Class: NewMain

Class-Path: lib/xercesImpl.jar lib/commons-lang.jar lib/xml-apis.jar

X-COMMENT: Main-Class will be added automatically by build

 

 

Poruka je uređivana zadnji put pet 4.1.2013 15:15 (vasso123).
Moj PC  
0 0 hvala 0
17 godina
offline
Analiza gotovog Java programa

Inače ako ništa ne možeš naći na ovoj stranici

http://www.findjar.com

 

Onda je valjda neka custom klasa (koju je napisao netko iz tvoje firme ili netko vanjski tko je radio za vas)

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Analiza gotovog Java programa
vasso123 kaže...
...

A iz baseapi: (edit: u baseapi.jar su dvije klase koje me najvise zanimaju dal imaju dokumentacije, PropertyNode i Property klasa)

...

Ako nista drugo, probaj ovaj alat koji sam ti dao u prvom postu, da dobijes source, pa si onda korak blize.

 

EDIT: Cak mozes i online ubaciti jar file i dobiti source.

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
Poruka je uređivana zadnji put pet 4.1.2013 15:31 (1domagoj1).
17 godina
offline
Re: Analiza gotovog Java programa
vasso123 kaže...

 

Evo iz logapi:

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.8.2

Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.)

Class-Path: lib/log4j-1.2.16.jar lib/baseapi.jar

 

 

A iz baseapi: (edit: u baseapi.jar su dvije klase koje me najvise zanimaju dal imaju dokumentacije, PropertyNode i Property klasa)

 

Manifest-Version: 1.0 - Verzija manifesta

Ant-Version: Apache Ant 1.7.1 - Verzija ANT-a (ANT - alat za automatsko buildanje projekta)

Created-By: 14.2-b01 (Sun Microsystems Inc.) - Verzija Jave sa kojom je jar buildan

Main-Class: NewMain - Hmm, malo čudno da lib jar ima Main-Class, ako je već ima onda je sigurno poslužila kao testna klasa, pogledaj u nju primjere kako raditi sa klasama koje se nalaze u tome jar-u

Class-Path: lib/xercesImpl.jar lib/commons-lang.jar lib/xml-apis.jar - ostali libovi koji su potrebni tome jar-u za rad

X-COMMENT: Main-Class will be added automatically by build

 

 

Pogledaj gore

 

BTW, gledao sam malo za ta dva jar-a po netu, nisam uspio ništa naći. Hmm, morat ćeš se snaći. Pogledaj kako ti je preporučio domagoj da li postoji link na source datoteke(ako si otvorio samo projekt u eclipsu) ili dokumentaciju itd.

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
12 godina
protjeran
offline
Analiza gotovog Java programa

Ispricavam se sto upadam na temu, ali koliko sam ja shvatio enkapsulacija su one setter i getter metode?

 
0 0 hvala 0
15 godina
offline
Re: Analiza gotovog Java programa
Space Buddha kaže...

Ispricavam se sto upadam na temu, ali koliko sam ja shvatio enkapsulacija su one setter i getter metode?

  Enkapsulacija je princip OOP-a koji traži da svi podatci objekta budu sadržani u tome objektu, i da je direktan pristup tim podatcima omogućen samo članovima te klase. Dakle, sav pristup podatkovnim članovima objekta, bi se trebao raditi kroz metode te klase.

 

Tako da te metode jesu primjer korištenja enkapsulacije.

12 godina
protjeran
offline
Re: Analiza gotovog Java programa

  Enkapsulacija je princip OOP-a koji traži da svi podatci objekta budu sadržani u tome objektu, i da je direktan pristup tim podatcima omogućen samo članovima te klase. Dakle, sav pristup podatkovnim članovima objekta, bi se trebao raditi kroz metode te klase.

 

Tako da te metode jesu primjer korištenja enkapsulacije.

Znači podaci su privatni i dostupni su jedino preko medota u klasi.. mislim da shvaćam 

Hvala!

13 godina
neaktivan
offline
Analiza gotovog Java programa

Bok trebam pomoć oko ovog kako riješiti  " could not load the java vm"

 

Hvala

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice