Hirdetés

2024. június 8., szombat

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#3201) Lacces


Lacces
őstag

Sziasztok!

A Jetty szervernek elég 1GB memória ram a zökkenőmentes működéshez? Max 6 oldal lenne kiszolgálva és nem hinném, hogy fél évig nagyon terhelve lenne :). Látogató számot is olyan max napi 500-ra becsülném.

(#3202) pvt.peter


pvt.peter
őstag

Sziasztok!

Azt szeretném kérdezni, hogy van-e hatékony program arra, hogy *.class fájlokat részlegesen vagy teljesen visszafejtsünk *.java forráskóddá? (Ha igen, ki melyiket használta, melyiket javasolja?)

Választ előre is köszönöm.

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#3203) sztanozs válasza pvt.peter (#3202) üzenetére


sztanozs
veterán

google: java decompiler

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3204) Karma válasza pvt.peter (#3202) üzenetére


Karma
félisten

A TC Jad Plugin a kedvencem.

“All nothings are not equal.”

(#3205) pvt.peter válasza Karma (#3204) üzenetére


pvt.peter
őstag

köszi, ez egész jó

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#3206) tragiQss


tragiQss
tag

Keresek valakit, aki...
Tudja, mi az az MVC és képes használni desktop programban is.
Ismeri a S.O.L.I.D. elveket.
Hajlandó lenne pár mondatban (leginkább privát v. mail) kisegíteni, egy töketlenkedő, félművelt kezdő amatőrt... :)

Nyelvfüggetlen (most épp pythonnal játszom), elsősorban elmléleti gondjaim adódtak. Képtelen vagyok szétválasztani az egyes rétegeket, nem tudom a témában olvasottakat a magam gyakorlatára átültetni, ehhez szeretnék segítséget kérni. (viszont a topikot nem akarom terhelni a hülyeségeimmel, ezért kellene privátban)

(#3207) Peter Kiss válasza tragiQss (#3206) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Van az a pénz. :)

(#3208) tragiQss válasza Peter Kiss (#3207) üzenetére


tragiQss
tag

Nem (ki)oktatást kértem...
:U

Pláne nem, hogy az általam kitalált programot más írja meg...
És hát... tőled eltérően vannak segítőkész emberek is a neten, csak momentán egyikük sem foglalkozik desktoppal...

(#3209) Peter Kiss válasza tragiQss (#3208) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Tudom, egy rohadék vagyok, nem tehetek mást, mint megpróbálok napról napra ezzel a tudattal élni.

Amennyiben szimpla megértési/tervezési gondjaid vannak, akkor kérdezz a fórumon, itt vagy máshol egy valós helyzetből kiragadott példán keresztül (több ember egyébként is több mindent látott). Emellett, ha az általad épített alkalmazásból neked profitod származik bármilyen módon, ne várd el, hogy valaki ingyen szakít csak rád az idejéből.

(#3210) tragiQss válasza Peter Kiss (#3209) üzenetére


tragiQss
tag

Van egy szomorú hírem: max. hasznom annyi származna belőle, hogy ezt is tudnám. :DD

Most szemeteljek ide a python+Qt duóval kapcsolatos töketlenkedéseimmel?
Azért itt próbáltam keresni valakit, mert java-s körökben már merem feltételezni, hogy OOP témában jártas emberre is bukkanok, a .net annyira távol áll tőlem, hogy oda be sem nézek, egyéb nyelveknél meg... szóval vannak rossz tapasztalataim.

Egyébként ilyen alapon senki ne segítsen senkinek, mert esetleg még anyagi haszna származna a másiknak az "ingyenes" segítségből... :U

No, ennyit a kioktatósdiról... Ha valaki esetleg úgy érzi, hogy pár elméleti kérdésben ki tudna segíteni...
----------------------------
Egyébként az egész csak annyi, hogy szeretném megtudni, hogyan lehet szétosztani a feladatokat egy MVC alapokra építkező desktop GUI egyes elemei között? Viszont ehhez tartozna egy féloldalnyi leírás, aminek semmi köze a java-hoz.

[ Szerkesztve ]

(#3211) Karma válasza tragiQss (#3210) üzenetére


Karma
félisten

Erre van az általános Programozás topik.
De az ilyen általános "embert keresek" helyett a konkrét kérdéseket ott is jobban toleráljuk.

“All nothings are not equal.”

(#3212) tragiQss válasza Karma (#3211) üzenetére


tragiQss
tag

Na olyat pont nem találtam, ahogy átfutottam a topik listát. Köszi!
Itt nem akartam részletezni, mert semmi köze a java-hoz.

(#3213) tragiQss válasza Karma (#3211) üzenetére


tragiQss
tag

Hm... Köszi, egyelőre feladtam. Elkezdtem leírni a konkrét problémát, de úgy az ötvenedik sor táján rájöttem, hogy nem tudom nyelvfüggetlenül megfogalmazni, hogy érthető is legyen. :(

(#3214) Karma válasza tragiQss (#3213) üzenetére


Karma
félisten

Akkor menjen nyelvfüggően. Az az általánosság magával vonja, hogy mindenféle nyelv belefér :)

“All nothings are not equal.”

(#3215) kltz


kltz
tag

Sziasztok!

Győri székhelyű cég android és iOS fejlesztőket keres. Akit érdekel privátban érdeklődjön.

Üdv KLtz

(#3216) Lacces


Lacces
őstag

Hali,

Fontos kérdés, ha van valakinek tapasztalata kérem szóljon :).
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).

A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)

Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).

[ Szerkesztve ]

(#3217) modder válasza Lacces (#3216) üzenetére


modder
aktív tag

Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Ezt hol olvastad meglepődnék ha így lenne. Totál elveszítené a webszerver az értelmét, és gyakorlatilag CGI-ként futtatnád így az alkalmazásodat.

Tessék, itt van egy összehasonlítás arról, hogy melyik webszerver mennyi memóriát használ idle állapotban http://www.jvmhost.com/articles/memory-usage-comparison-of-java-application-servers-and-applications -- 1 jetty instance átlag 50 megabyte.

Erre jön még az alkalmazásod memóriaigénye, ami nagyban függ az alkalmazásod felépítésétől, az output nagyságától. Pl. ha csak az outputot nézzük (a belső struktúrát nem), akkor átlagosan 16 bites karakter hosszal számolva 20 megabyte memóriába 1 250 000 karakter fér bele. ami átlagos karakter per oldal alapján ~ 43 wikipedia oldalnak felel meg.
Erre jöjjön rá még az alkalmazásod belső struktúrája. Azért látni, hogy ez egy eléggé elnagyolt példa, egy kis weboldal nem fog 20 megabyteot elhasználni oldallekéréseknél, max pár megabyte. Nem beszélve arról, hogy statikus adatokat (pl. html template-eket amibe csak beszúrod a generált tartalmat) megosztasz a lekérdezések között, mert bent marad a memóriában. Pl. ha egy singletonban tárolod ezeket, és nem próbálod meg beolvasni a fájlból minden egyes oldallekéérésnél.
Szóval egy relative kis weboldal max pár megabyte memóriát fog lefoglalni requestenként.

Plusz korlátozhatod a memóriát JVM beállításokkal (pl. max heap size) meg hasonlók, így ha kezd kifogyi a memóriából a webszerver, a GC majd elintézi a régi objektumokat. Szerintem elég neki kb 500 megabyte memóriát adni.

Szerintem ami a legfontosabb, ha kevés memóriát szeretnél használni, hogy ahol dinamikus string összefűzés van, ott használj StringBuildert vagy StringBuffert (nem emlékszem melyik a nem threadsafe de azt). Pl. A stringet több objektum, függvény állítja elő, vagy cikluson belül generálod. Különben a String + operátor új stringet hoz létre mindig. Kiemeltem, hogy dinamikusan, mert ha csak kényelmi szempontból egy ilyen változót deklarálsz, hogy
String fejlec = "Üdvözöllek \n" + "a\n" + "weboldalamon!"; akkor a fordító automatikusan egybefűzi ezeket a stringeket, úgyhogy no para.

Szó ami szó, napi 200 lekérdezésre simán elég a 2GB, de ha spórolni akarsz adj rá 500 megabyte-ot, az is bőven elég lesz.

[ Szerkesztve ]

(#3218) modder válasza Lacces (#3216) üzenetére


modder
aktív tag

Idézlek másik fórumról:
Én laptopon futatom a linux + java webszervert (Jetty - baromi jó, gyors és keveset eszik ajánlom mindenkinek) + mongot + (jelenleg mysql), de összeségében még nem láttam őket együtt 1GB ram felé menni
De akkor mi a francért kérdezel ilyeneket? :D

(#3219) Lacces válasza modder (#3218) üzenetére


Lacces
őstag

Plusz, arra van valami example a neten / tudnál javasolni vagy kereső szót, hogy amit ajánlottál a statikus html oldalak, vagy amit generálok, hogy azt hogyan lehet megvalósítani a singleton-nal? :) Fúú, ez nagyon érdekel.

Köszi a részletes választ :). :R.
Mert majd webszervert akarok bérelni, és hogy ha jön napi szinten a requestek, akkor hogyan hat rá a terhelésre, és ennek utána olvasva ellentétes infókat kaptam... (bár néha a net tele van szútyokkal).
És elbizonytalanodtam...

[ Szerkesztve ]

(#3220) modder válasza Lacces (#3219) üzenetére


modder
aktív tag

Nem tudom pontosan hogy akarod megoldani a megjelenítést. Régen volt JSP. ebből ugye servlet generálódott, ahol a JSP statikus részei final stringek voltak, tehát szépen benne maradt a memóriában, nem hozta őket létre újból minden requestnél. Én JSF-et használok, de egyszerű weboldalakra kiváló és nagyon kiforrott a String template.

Én arra gondoltam, hogy ha magát a template-et, mint Stringet egy Singleton osztályba beolvasod egyszer pl. fájlból, amikor szükség van rá, és utána onnan éred el, akkor a Singletonod alkalmazáson belül de, requestek között megmarad, így a beolvasott string template is megmarad a memóriában. Sőt, requestenként ugyanazt a singleton-t fogod elérni. Persze fontos, hogy ezt az osztályt tényleg csak stringek tárolására használd, és ne legyen benne semmi állapot a template stringeken kívül. Plusz a fájlból beolvasás metódusát és a getInstance metódusát nem árt egy mutex-szel védeni, elkerülendő, hogy két thread (két szimultán request) egyszerre inicializálja.

Ez amúgy csak most jutott eszembe a kérdéseddel kapcsolatban, lehet hogy valahol hibádzik a gondolatmenetem, de tekintve, hogy egy JVM-en és egy classloader hierachián belül ugyanazt az osztálypéldányt használja az alkalmazásod requestektől függetlenül, gondolom működik.

[ Szerkesztve ]

(#3221) Lacces válasza modder (#3220) üzenetére


Lacces
őstag

Aj, ez nagyon jó, ennek nagyon örülök.
Én valszeg JSP, ha jól látom ezeket használja a Grails és SpringMVC, de még csak bontogattom a szárnyait a java web világban.
Köszönöm, ez hasznos volt :R

(#3222) Taoharcos


Taoharcos
aktív tag

Sziasztok!

Arraylist tartalmát szeretném datable segítségével megjeleníteni JSF-ben. De nem tudom mi lenne a jó megoldás. Én ezzel próbálkoztam eredménytelenül:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans;

import database.Database;
import java.util.ArrayList;

/**
*
* @author Zoli
*/
public class AllWordBean {

//private int index;
ArrayList <Integer> idList;
ArrayList <String> hunList;
ArrayList <String> engList;
database.Database database = new Database();
int index;

public AllWordBean(){
database.setQuery("", true, false);
database.execQuery();
this.idList = database.getIdList();
this.hunList = database.getHunList();
this.engList = database.getEngList();
this.index = idList.size();

}

private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};

public allWordTable[] getallWordTable(){
return wordTable;
}

public class allWordTable{

int id;
String hunw;
String engw;
public allWordTable(int id, String hunw, String engw){
this.id = id;
this.hunw = hunw;
this.engw = engw;
}

public String getEngw() {
return engw;
}

public String getHunw() {
return hunw;
}

public int getId() {
return id;
}

public int getIndex(){
return index;
}

}

}

Lényegében ezzel e résszel van a bibi:
private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};

de nem tudom hogyan lehetne az arraylistet megjeleníteni jól.

[ Szerkesztve ]

(#3223) birno


birno
addikt

Sziasztok,

Netbeans+ant csodával kapcsolatban lenne kérdésem.
Adott egy module project netbeansben, amihez van x darab wrapped jar megadva a library-ben.
Azt szerettem volna elérni, hogy amikor a module-ra nyomok egy clean/build-et, akkor a kapcsolódó projekteket is clean/build-elje s másolja be a jar-okat a module megfelelő könyvtárába.
Ezen leírás method 2-es ágán indultam el, de ezzel az a gond, hogy a clean kitörli ugye a jar-okat, utána akar egy compile-t csinálni a modulon, de mivel a release csak ez után futna le, így nincsenek meg a jar fájlok amikből beimportálná a függőségeket, így elhal a compile.
Próbáltam úgy átírni, hogy release helyett -pre-compile vagy -post-init targetet használok, a lényeg ugye, hogy még compile előtt megcsinálja, de ezek egyszerűen nem futnak le, echo-val próbáltam szöveget kiíratgatni, de nem jelennek meg, olyan mintha module projectnél nem lehetne használni ezen targeteket.
Gugli nagyon nem akar a barátom lenni, sehol semmi értelmes nincs ezzel kapcsolatban.
Van ötletetek hogy a fenébe kellene működésre bírni?

(#3224) sutszi válasza birno (#3223) üzenetére


sutszi
veterán

Nálam Maven-be a parent projekt-en van olyan, hogy 'Build with dependencies'...

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#3225) birno válasza sutszi (#3224) üzenetére


birno
addikt

Itt nem látok ilyesmit sajnos.
Arról lenne jó valahogy infót szerezni, hogy module projectnél pontosan milyen targetek futnak le és mikor, de egyszerűen nem találok infót róla.
Mert egy sima java project build-impl.xml fájlba látom ezeket a pre/post targeteket, de a module projectébe semmi ilyesmi nincs, mondjuk clean meg release se, mégis lefutnak, szóval nem igazán értem.

(#3226) sutszi válasza birno (#3225) üzenetére


sutszi
veterán

Hűű...hát akkor passz. Csak tippeltem hátha segít valamit. Ant-al nincs tapasztalatom...csak Maven-el, az is kevés. De nem kedveltem meg túlságosan eddig...

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#3227) modder válasza Taoharcos (#3222) üzenetére


modder
aktív tag

És mi a bibi vele?
Amúgy az valid java kód, amit kiemeltél, mert még nem láttam olyat?
Hol a JSF?

(#3228) Taoharcos válasza modder (#3227) üzenetére


Taoharcos
aktív tag

Nem is a JSF a lényeges. Arraylist-ből datatable dolog lenne lényeges.
Ebből a példából indultam ki.
Csak itt az adatok bele vannak "égetve" a kódba ezen a helyen:
private static final Order[] orderList = new Order[] {

new Order("A0001", "Intel CPU",
new BigDecimal("700.00"), 1),
new Order("A0002", "Harddisk 10TB",
new BigDecimal("500.00"), 2),
new Order("A0003", "Dell Laptop",
new BigDecimal("11600.00"), 8),
new Order("A0004", "Samsung LCD",
new BigDecimal("5200.00"), 3),
new Order("A0005", "A4Tech Mouse",
new BigDecimal("100.00"), 10)
};

Ezt szeretem volna egy for ciklussal megvalósítani. De még nagyon-nagyon kezdő vagyok.

[ Szerkesztve ]

(#3229) modder válasza Taoharcos (#3228) üzenetére


modder
aktív tag

Akkor gondolom a hiba az egy fordítási hiba annál a kódrésznél egy szép hibaüzenettel. Nem árt, ha legközelebb azt is beírod, nem csak hiba. A vízvezeték szerelőnek sem mondod, hogy rossz a zuhanyzó, mert kicserléi az egész zuhanyfülkét, közben pedig csak a csap csöpög benne..

Na de a lényeg, hogy az ott egyáltalán nem jó. azt a for ciklust tedd a konstruktorba olyan helyre, hogy a benne használt változók már inicializálva legyenek.

mert az ott nem egy függvényhívás, hanem tömb definíció, és tömböt többek között úgy tudunk definiálni, hogy: tipus[] tomb = new tipus[]{ elem1, elem2, elem3 }

Plusz nem árt, ha az alapokkal tisztában vagy, mert lehet kérdezni, de senki nem fogja helyetted megtanulni
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html

[ Szerkesztve ]

(#3230) tknof1871


tknof1871
őstag

Üdv! Van egy letöltéskezelő program, a JDownloader, amit Java nyelven írtak. Nagyon lelassult a Windows, ezért a Windows Feladatkezelőben az Alkalmazásoknál leállítottam a JDownloadert. De mikor később megint elindítottam, akkor a letöltési lista üres volt. Vissza lehet hozni a letöltési listát vagy elvesztettem?
Bocs, hogy itt teszem fel a kérdést, de már máshol megtettem, eltelt 24 óra és nem volt válasz. Hátha itt valaki tudja.

Windows 10 Home 64 bites operációs rendszer; LG G4 6.0 Android verzió

(#3231) Superhun válasza tknof1871 (#3230) üzenetére


Superhun
addikt

Valószínűleg a memóriában volt csak a lista, és nem mentette el, mert nem szabályosan léptél ki a programból.

(#3232) tknof1871 válasza Superhun (#3231) üzenetére


tknof1871
őstag

Azt reméltem valahol csak rögzítette legalább azt az állapotot, ami a program indulásakor volt. Tehát azt elfogadom, hogy elfelejti azokat a fájlokat, amiket a program indítása és a Feladatkezelőből történő leállítása között adtam a letöltési listához. De illene emlékeznie azokra, amiket korábban adtam a letöltési listához.
Szerintem ez a Java-s letöltőprogram lassította le a gépem. Mikor az utolsó nagyobb fájlcsomagot hozzáadtam a listához nem bírta és szinte lefagyott a program. Pedig mindenki dicsérte.

Windows 10 Home 64 bites operációs rendszer; LG G4 6.0 Android verzió

(#3233) D4nte válasza tknof1871 (#3230) üzenetére


D4nte
csendes tag

Rövid google keresés után ez a [link] idevágónak tűnik, hátha segít neked is.

[ Szerkesztve ]

(#3234) tknof1871 válasza D4nte (#3233) üzenetére


tknof1871
őstag

Köszönöm! Működött.

Windows 10 Home 64 bites operációs rendszer; LG G4 6.0 Android verzió

(#3235) tvamos


tvamos
nagyúr

Sziasztok!
Nagyon uj vagyok Java programozasban, (Hello word szinten tarto,) es nem is akarok bonyolult appokat irni, kormonfont strukturakkal, meg rendezesekkel. Ellenben a soros portot (USB Virtual) kene hasznalnom. Segitenetek nekem, hogy kell?
Koszi! Udv, Tomi

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3236) Superhun válasza tvamos (#3235) üzenetére


Superhun
addikt

(#3237) tvamos válasza Superhun (#3236) üzenetére


tvamos
nagyúr

Koszi szepen! Nagyon klassz! :R
(A minta progit valamikor mar megtalaltam, de a doksi nelkul sok ertelme nem volt, azt meg nem leltem.)

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3238) modder


modder
aktív tag

Hali,

Mivel még nem vagyok világhírű a blog postjaimmal, ezért teszek egy önző kísérletet a saját népszerűsítésemre :D

Ha valakit érdekel a JSF, csináltam egy postot arról, hogyan szenvedtem végig egy problémát rossz megközelítéssel, és mi lett volna a helyes.

http://palkonyves.blogspot.hu/2012/12/ive-been-using-postconstruct-wrong-way.html

A feedbackek welcomeok!

(#3239) Dave-11


Dave-11
tag

Még csak nemrég kezdtem el tanulgatni a Java nyelvet, de a tankönyv, amit olvasok már többször említette az "interfész" szót, és ezt is: "az osztály által implementált interfészek".
Később persze ezt is tárgyalja majd a könyv, de már nagyon kíváncsi vagyok rá, beleolvasni meg inkább nem akarok előre.
Csak egy rövid összefoglalóként mégis, mik ezek az interfészek, mire jók, és mit jelent az hogy egy osztály implementál egy interfészt?

:D Semmi :D

(#3240) sutszi válasza Dave-11 (#3239) üzenetére


sutszi
veterán

Türelem...Olvass tovább és akkor tiszta lesz. Nem véletlen nem tart még ott a könyv, hogy ezt tárgyalja.

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#3241) TBG válasza Dave-11 (#3239) üzenetére


TBG
senior tag

Pár szó akkor.

Interfész:

public interface MyService {

public void setSomething();
public String getSomething();

}

public class MyServiceImpl implements MyService {

@Override
public void setSomething(String something) {
// Do something...
}
@Override
public String getSomething() {
return "Some String";
}
public void setFoo(String foo) {
// Do anything else...
}

}

public class Something {

public static void main(String[] args) {

// Ebben az esetben csak azokat a metódusokat látod, amiket a MyService interfész deklarál....
MyService myService = new MyServiceImpl();
myService.setSomething("Hehe");
String something = myService.getSomething();

// Ebben az esetben látod az interfész által deklarált metódusokat és az egyebeket is.
MyServiceImpl myServiceImpl = new MyServiceImpl();
myServiceImpl.setSomething("Hehe");
String something = myServiceImpl.getSomething();
myServiceImpl.setFoo("Foo");

// Röviden...

}

}

[ Szerkesztve ]

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3242) Davs válasza Dave-11 (#3239) üzenetére


Davs
tag

Egy intefesz csak definialja a metodusok neveit. Ha az osztalyod implementalja az interfesz, akkor az osztalynak definialnia kell MINDEN metodust, ami az interfeszben volt. Ahogy az elottel szolo peldajaban is latod, a MyService interfeszben csak a metodusok neve van definialva. A MyServiceImpl osztaly implementalja a MyService interfeszt, ezert implementalnia kell a get/setSomething metodusokat.

Ez ez egesz iterfeszes dolog pl arra jo, hogy ellenorizni tudod, hogy egy osztaly implementalja-e az adott interfeszt, es ha igen, akkor biztosan tudod, hogy az osztaly tartalmazza az interfeszben definialt metodusokat stb.

(#3243) TBG válasza Davs (#3242) üzenetére


TBG
senior tag

Igen. Köszönet a magyarázó szövegért. Annyit tennék még hozzá, hogy érdemes nagyon megtanulni, megérteni, mert komoly Java tudás ennélkül nincs.

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3244) modder válasza Dave-11 (#3239) üzenetére


modder
aktív tag

Ha már a könyvben szó esett arról, hogy "az osztály implementálja az x interfészt", akkor gyanítom, hogy egy valós példa is szerepel az interfész alkalmazására.

Többek között azért jó egy interfész, mert elrejti az osztály konkrét implementációját (fordítási időben).

Egy egyszerű példa a Swing ActionListener interfész amit arra használhatsz, hogy gui eseményekre (pl. gomb megnyomása) valamit reagáljon a programod.
A GUI komponens .addActionListener( ActionListener listener ) metódusának egy olyan objektumra van szüksége, aminek van actionPerformed( ActionEvent e ) metódusa. Tehát létrehoztak neki egy interfészt, amiben deklarálták ezt a metódust, ez lett az ActionListener interfész. Ezzel kényszerítik ki, hogy csak olyan objektumot adjál át ennek a metódusnak, aminek megvan a megfelelő actionPerformed( ActionEvent e ) metódusa.

Vissza a fordítási időhöz: Látható, hogy a Swing készítőket nem érdekli, hogy miután lefordították a Swing library-t milyen ActionListener objektumokat fog létrehozni a fejlesztő, lehet azoknak az objektumoknak hatszáz másik metódusa is, és mindegy, hogy mit csinál. Ami a fontos, hogy a fejlesztő által létrehozott listener objektumoknak meglesz az elvárható tulajdonsága: lesz neki actionPerformed( ActionEvent e ) metódusa.

[ Szerkesztve ]

(#3245) TBG


TBG
senior tag

És akkor még ott lesz az abstract class is, amit gyanútlan Java fejlesztők nem mindig tudnak megkülönböztetni az interfésztől :D

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3246) Dave-11


Dave-11
tag

Köszönöm a gyors válaszokat. Még nem teljesen értem, de már kezdem kapizsgálni. Ha elérek a könyvbe ehhez a fejezetben biztos miden tiszta lesz.
Még egyszer köszönöm :R

:D Semmi :D

(#3247) TBG válasza Dave-11 (#3246) üzenetére


TBG
senior tag

Van bámilyen más programnyelvből előképzettséged? Lehet, hogy egy ismert nyelven keresztül egyszerűbb lenne megérteni :)

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3248) Dave-11 válasza TBG (#3247) üzenetére


Dave-11
tag

Hát pascal, php meg c++ de ezeknek a legmélyebb részeit még nem érintettem.

:D Semmi :D

(#3249) TBG válasza Dave-11 (#3248) üzenetére


TBG
senior tag

c++ - ban van interface, de az kicsit más. Inkább a java abstract-ra hajaz, ha jól emléxem. Illetve elveiben ugyanaz csak az implementáció más.

[ Szerkesztve ]

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3250) Soak válasza TBG (#3249) üzenetére


Soak
veterán

PHP-ban is ugyanígy működik az interface (mármint amit az elöző hsz-kben leírtatok)

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.