- Prohardver app (nem hivatalos)
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Íme az új Android Auto!
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
- Xiaomi 14 Ultra - Leica hercegnő
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Milyen okostelefont vegyek?
- Okosóra és okoskiegészítő topik
- Mobil flották
Hirdetés
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Érkezőben a Poco M6 4G
ma 5G-s és 4G-s Pro modell már van, hamarosan lesz Poco M6 4G-s alapváltozat is.
-
A személyre szabott reklám lehet a streaming következő slágere
it A jobb célzott hirdetések érdekében adatplatformot indít a Warner Bros Discovery.
Új hozzászólás Aktív témák
-
TBG
senior tag
válasz WonderCSabo #3499 üzenetére
Megint csak csatlakozom...ha nincs performance loss, meg lesz backward compatibility....akkor jöhet.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
pvt.peter
őstag
nekem ez nem tartott sokáig, főleg úgy, hogy eclipse megvolt nyitva
véleményem szerint ha vki programozással szeretne kezdeni, akkor ne ugorjon neki azonnal az OOP-nek
érdemes sima C -vel kezdeni, egyrészt azért, hogy pl. tisztában legyen a ? : kifejezéssel
persze nekem is van még sok mindent tanulnomEz egy .50-es rombolópuska, elég szép visszarúgással.
-
pvt.peter
őstag
mindkettőtök hozzászólásában van vmi
[ Szerkesztve ]
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
artiny
őstag
Ilyen fajta java (hivatalos) oldal letezik magyarul?
http://java.mrazovci.eu/poziadavka-zachytenia-alebo-urcenia -
artiny
őstag
(#3512) Jim-Y a blank veretlen volt,nem akartam kiírni.
Van egy osztaly ami orokolt Bike bol az Id,farbat-t,
Hogyan hivjam meg System.outprintln -ál a parent osztálytol orokolt tipusokat?
http://pastebin.com/tXhL3PDk[ Szerkesztve ]
-
WonderCSabo
félisten
Először is javaslom, hogy tartsd be a java névkonvenciókat. Másodszor, ne használj publikus változókat, ez felrúgja az OOP egyik legfontosabb alapelvét, az enkapszulációt. Használj helyete private/protected változókat, és ha kell készíts hozzájuk publikus getter/setter metódusokat.
Kérdésedre válaszolva:
Az örökölt típusok alatt örökölt tagváltozókat értesz? A típus az egész mást jelent. Amennyiben public, package private, vagy protectedláthatósága van az ősben lévő változóknak, akkor simán eléred őket a gyerekben csak a nevük leírásával. Pl.public void methodInDerivedClass() {
System.out.println("inherited variable: " + inheritedVariable);
}Ahol ez a metódus a gyerek osztályban, az inheritedVariable pedig a szülő osztályban van.
Ez volt a kérdésed?
[ Szerkesztve ]
-
Jim-Y
veterán
Egy óráig él a link.
-
addikt
válasz WonderCSabo #3517 üzenetére
Tök mindegy a láthatóság. Ha private, akkor super-rel sem éri el, többinél meg this-szel is. Egy esetben van értelme használni a super kulcsszót tagváltozón: amikor van egy ugyan olyan nevű tagváltozó a gyerekben is (de ezt a megoldást nem szeretjük).
-
TBG
senior tag
super-t csak @Override-olt metódusnál "szép" használni.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
WonderCSabo
félisten
válasz Superhun #3518 üzenetére
Ez így van, és ezt írtam én is. Azért kérdeztem a láthatóságot, mert csodálkoztam, hátha vmi új történik.
TBG: Miért is? Mi van akkor, ha a gyerek metódusából akarok elérni egy másik metódust ami el van fedve/felüldefiniálva a gyerekben, vagy egy változót, ami el van fedve a gyerekben? Egyébként igazad van, általában arra szoktuk, és arra egyértelmű használni, amire Te gondolsz.
[ Szerkesztve ]
-
TBG
senior tag
válasz WonderCSabo #3520 üzenetére
Ha a változó/metódus el van fedve, akkor annak oka van. Ha mégis el kell érni, akkor protected. Vagy publikus getter Alapvetően design kérdése egyébként.
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
MODERÁTOR
Hello!
Kis segítség kéne, adott a következő kód (egy képről szeretnék hisztogramot csinálni, első körben csak próbálkozom a kirajzolásával - Google Chart API adja majd a grafikont).
Gyakorlatilag a this.g.drawRect(10, 10, 100, 100); nem csinál semmit. Na most ha származtatnám a JFrame osztályt akkor a paint() metódussal működne. De valahogy így kéne megoldani. Hogy tudom odapasszolni a grafikát a keretnek?
Köszi!
mobal,
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
Karma
félisten
Csinálnod kell egy komponenst, amit a Frame gyerekének adsz, és az végzi a rajzolást. Vagy csinálsz egy BufferedImage-et, arra rajzolod a hisztogramot, és a paint metódusban egyszerűen kirajzolod a tartalmát.
Valamilyen leszármazást kell csinálnod, nem erőszakolhatod meg a rendszert. Ja és a getGraphicsot felejtsd el, az csak painten belül életképes.
[ Szerkesztve ]
“All nothings are not equal.”
-
Soak
veterán
Sziasztok !
Aki tud desktop alkalmazast fejleszteni Javaban abbol kovetkezik hogy webes alkalmazast is tud?
-
TBG
senior tag
Nem következik. A webes alkalmazásfejlesztés Java-ban egy teljesen más műfaj. Ahogy a kolléga is írja, a GWT áll a legközelebb hozzá, de HTML/JS ismeretek ott is elengedhetetlenek.
Egyrészt kell egy erős backend ismeret...minimum Servlet szinten, de a különféle EE környezetek ismerete is erősen ajánlott.ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
Soak
veterán
Köszi a válaszokat !! Visszafelé ugyanígy működik?
-
TBG
senior tag
Visszafelé egyszerűbb, de aki csak backend-et tud programozni, az nem feltétlenül képes egy SWING/AWT felületet összerakni. Itt már az a szabály, hogy nem elég a Java-t ismerni, hanem az adott framework-ban is büfének kell lenni.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
addikt
Visszafelé könnyebb átállni. Egy webes alkalmazás sokkal összetettebb, mint egy asztali, a fejlesztése magasabb szakmai felkészültséget követel meg. Asztali alkalmazásnál igazából csak a swing-es osztályokat kell megismerni, meg érteni az Event dispatching thread működését.
-
MODERÁTOR
Szia!
Köszönöm a segítséged. Most vagy félreértelek vagy nem (bár inkább nem értelek). Szóval, hogy célravezetőbb, csinálni az osztályon belül egy privát JPanel osztályt majd a végén rápasszolni a keretre?
Köszi!
mobal,
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
Karma
félisten
Válaszolok én is egy kérdéssel, ugyanis egyáltalán nem jött át, hogy a Histogram osztályodnak milyen szerepet szántál. A kódrészlet alapján ez csinálja a számítást, a rajzolást és az ablak feldobását is, ami mindezt megjeleníti? Mert azért ez durván sok felelősség egy osztálynak.
A privát JPanel megoldás egynek elmegy. Egy másik ilyen tákolat meg ha a Histogram lenne a JFrame leszármazott, nem csak egy Object.
A lényeg az, hogy a paint() felüldefiniálást nem úszhatod meg. Máshol hiába próbálsz rajzolni a kódodban, az Swinget nem fogja érdekelni.
[ Szerkesztve ]
“All nothings are not equal.”
-
MODERÁTOR
Lényegében jól látod a dolgot. Első körben el akarom készíteni a működő dolgot, majd csomagolni és szeparálni "olyan MVC-sen", (ehhez is ha kapok tippet megköszönöm)
kettőhárom "alcsomagra" vezérlőre, nézetre és modellre.mobal,
[ Szerkesztve ]
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
pvt.peter
őstag
Sziasztok!
Biztos nagyon amatőr kérdés lesz, de ha pl. van egy ilyen:
Map<String, Person> people = new HashMap<String, Person>();
akkor a people változót miért nem így deklaráljuk:
HashMap<String, Person> people = new HashMap<String, Person>();Ha már így is úgy is HashMap<String, Person>(); lesz belőle?
Egyáltalán miért jó ez a sima Map -féle deklarálás?
Előre is köszi a kiigazítást.
[ Szerkesztve ]
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
Karma
félisten
válasz pvt.peter #3534 üzenetére
Ez egy fontos tervezési elv kicsiben. Amikor a változót később használod, nem függ így a kódod attól, hogy a változó konkrétan egy HashMapet takar, csak hogy megfelel a Map interfésznek - más szóval kulcs-érték párokat tudsz tárolni benne.
Így a későbbi kód módosítása nélkül kicserélheted például TreeMapre (ami hashtábla helyett piros-fekete fában tárolja az értékeket), ha a helyzet úgy kívánja. Vagy akár egy tömbre, amiben lineáris kereséssel túrod ki a megfelelő értéket. A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg.
Azért mondom, hogy kicsiben, mert egy függvényen belül ennek nincs nagy jelentősége, maximum szoktatod magad csak az interfészek deklarálásához. Nagyobb programban viszont, ahol komponensek kapcsolódnak egymáshoz, ez már kritikussá válik. És jönnek olyan finomságok, mint Dependency Inversion.
[ Szerkesztve ]
“All nothings are not equal.”
-
Pitu
aktív tag
YouTube api-t használt már innen valaki? 1 éve jól működő alkalmazásnál olyan problémám lépett fel nemrég, hogy a CategoryFilter-t figyelmen kívül hagyva nem a google account-hoz tartozó videókat listázza, hanem a publikus tartalomból próbál. Így exception lesz, mivel több mint 1000 videót akar lekérdezni az alkalmazás... a performancia problémáról nem is beszélve.
Van valakinek ötlete? Api változás lenne?
-
modder
aktív tag
Karma írta: "A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg."
Igazából ez a legfontosabb dolog. Amit még hozzá tennék, hogy kontextusfüggő vagy scope függő, hogy a statikus típusa a változónak Map vagy TreeMap legyen-e.
Amikor az osztályod (osztályaid) külső interfészét tervezed meg, akkor a hívó kliens kódnak nem kell tudnia hogy milyen konkrét implementációt (TreeMap vagy HashTable) ad vissza az osztályod egy függvénye, csak azt, hogy a visszaadot érték Map tulajdonságú.
De az osztályon belül fontos lehet, hogy konkrét típust deklarálj. Például egy JSON feldolgozó osztályt csinálsz, és szeretnéd, ha a hívó kliens egyszerűen egy OutputStreambe tudja írni a feldolgozandó JSON stringet. Neked azonban kell egy módszer a JSON feldolgozó osztályban, amivel ki tudod nyerni az OutputStreambe írt adatot. Az OutputStream interfészben nincsen deklarálva semmilyen metódus, amivel adatot ki tudnál nyerni (nem is arra való). De a ByteArrayOutputStreamben vissza tudod kérni a beírt adatot byte[] tömbként.
Konkrét példa:
public class MyJsonParser {
private ByteArrayOutputStream jsonByteStream = new ByteArrayOutputStream();
public OutputStream getOutputStream() {
return (OutputStream) jsonByteStream;
}
public JsonObject parse() {
// fontos tudni hogy ez egy ByteArrayOutputStream hogy használhassuk a toByteArray() metódusát
byte[] jsonBytes = jsonByteStream.toByteArray();
JsonObject jObject = new JsonObject();
// parszoljuk a json stringet
return jObject;
}
}
public class Application {
public static void main(String[] argv) {
MyJsonParser parser = new MyJsonParser();
// kit érdekel a konkrét implementációja az OutputStreamnek én csak írni akarok bele?
OutputStream parserOutputStream = parser.getOutputStream();
parserOutputStream.write( argv[0].getBytes() );
JsonObject jObject = parser.parse();
}
}Ezt csak azért írtam le, mert nem örök igazság, hogy csak interfész típust deklarálunk.
-
pvt.peter
őstag
Sziasztok!
Egy érdekes, de nem nehéz problémába ütköztem, igazából van is rá elképzelésem, de hátha kapok jobb ötletet tőletek.
Tehát adatokat kellene tárolnom vmiben (természetesen vmi kollekcióra gondoltam).Két részből áll:
egy String és egy intA string értéke és az int értéke is ismétlődhet, tehát pl.: ezek a párosok fordulhatnak elő:
"kutya" - 2
"kutya" - 1
"macska" - 1Látható, hogy egy vagy több String is megegyezhet egymással és egy vagy több int is megegyezhet egymással, viszont nem lehetnek olyan párosok ahol a String és az int is megegyezne.
Tehát tlképpen mindegyik páros egyértelműen azonosítható a String értékkel és az int értékkel.
Olyan mintha egyszerre használnám őket kulcsnak.A kérdésem: melyik kollekciót lenne érdemes erre a feladatra használni?
Időigény, elérés nem számít, de azért ne legyen nagyon undormány és gány.
HashMap egymagában nem jöhet szóba a fentiek miatt.
Össze kellene ágyazni min két kollekciót, csak nem tudom melyik lenne a legmegfelelőbb erre a célra, ami még talán elegáns is lenne.Ha esetleg vki tud vmi elfogadható és vállalható megoldást erre, akkor ne tartsa magában
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
TBG
senior tag
válasz pvt.peter #3543 üzenetére
Superhun megoldása teljesen jó.
Viszont ha már saját osztályt használsz felüldefiniált metódusokkal, akkor szerintem elég az equals felüldefiniálni úgy, hogy a String és az int egyezőség esetén adjon vissza TRUE-t és akkor egy "sima" ArrayList-be is teheted. Persze attól is függ, hogy mennyi elemed lesz, mert nagyon sok elem esetén az ArrayList nem túl gazdaságos. Nem mondom, hogy Superhun vagy az én megoldásom a jobb, az enyém egy alternatív, de valamivel egyszerűbb megoldás, mert csak 1 metódus felüldefiniálását kell megcsinálni, de mint írtam, sok elemnél nem feltétlenül gazdaságos.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
Sosem szabad csak az equals()-t vagy csak a hashCode()-ot felülírni! Nyilván képes lesz működni, ha csak az egyik van felülírva, de mihelyst az objektum fel lesz használva kulcsként (dictionary, set), máris hibás működést kaphatunk! Emellett azt is figyelembe kell venni, hogy az alaplogikának egyeznie kell a két metódusban, különben szintén hibás működést kaphatunk (pl. mikor egy set-hez akarnánk hozzáadni végtelen ciklusba is kerülhetünk). Sőt, igazából ilyen kulcsként való felhasználás esetén csak immutable objektumokat szabadna használni.
[ Szerkesztve ]
-
TBG
senior tag
válasz Peter Kiss #3546 üzenetére
Nyilván az nem derült ki, hogy a kolléga mire akarja használni. És igenis, lehet az, hogy csak az egyiket írom felül. Ha egy listába rakom és csak a contains() metódust hivogatom rá, akkor bőven elég az equals() metódust felüldefiniálni.
Nem véletlenül írtam, hogy alternatív megoldás és nem az üdvözítő.
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
-
TBG
senior tag
válasz Peter Kiss #3548 üzenetére
A szoftverfejlesztés egy ilyen sötét mágiával átjárt tudomány. Láttam sok cifra dolgot már
szerk:
Egyébként meg igazad van.
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
pvt.peter
őstag
válasz Superhun #3544 üzenetére
uh, nem akartam osztályokkal megvalósítani ezt, abszolút kollekciókban gondolkozok, ugyanis kb. olyan lenne, mint ágyúval verébre lőni
ezt az adatpakolgatást is static { } -ben végzem, bár már ez megvolt írva
tehát annyi az egész, hogy van kb. 20-30 adatpárom az előbbi szabályokkal definiálva
majd van egy fgvem, ami kap 2 paramétert, egy Stringet és egy intet
és lecsekkolja, hogy ebben az adott akármiben benne van-eennyi lenne a feladat, erre meg nem akartam osztályt írni, hisz nem nagy dolog
kollekciókkal szeretném megoldani,
pl. ez is elvégezné a feladatot: ArrayListbe egy String tömb és kész, a String tömb meg ugye kételemű lenne ("kutya" - "1")
majd legfeljebb castolgatom az int értéketEz egy .50-es rombolópuska, elég szép visszarúgással.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))