- Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- Időutazás floppyval: A 486-os visszavág PCem-men
- AMD Ryzen 9 9900X (100-100000662WOF)+ Samsung 990 PRO 2TB MZ-V9P2T0BW
- Processzor és videokártya szilícium mag fotók újratöltve!
- Az e-sport napistenének ajándéka: Lamzu Inca gamer egér
- leslieke: leslieke farmerzsebe
- sziku69: Fűzzük össze a szavakat :)
- laskr99: Processzor és videokártya szilícium mag fotók újratöltve!
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- No Voice in the Galaxy
- Rap, Hip-hop 90'
- GoodSpeed: AMD Ryzen 9 9900X (100-100000662WOF)+ Samsung 990 PRO 2TB MZ-V9P2T0BW
- Magga: PLEX: multimédia az egész lakásban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Hirdetés
Új hozzászólás Aktív témák
-
loszerafin
senior tag
válasz
Protezis #834 üzenetére
Köszi a linket, bár nem tűnik komoly oldalnak.
Ez kétszer is megtalálható az oldalon :
''a programozók ... fogalmatlan (sic!) emberek''
Van ott egy 35 soros program, ami a Java ''bénaságát'' szemlélteti, hát azt nekem (2 hete tanulom a Java-t) sikerült megírnom kissé rövidebben is.
A program a test változó szövegében levő szavak előfordulási gyakoriságát számolja meg:
import java.util.*;
class MyTest {
public static void main(String[] argv) {
String test = ''Let's count the words in this text. ''
+ ''The text contains some words more than once, ''
+ ''so their count will be more than one.'';
Collection<String> list = Arrays.asList(test.split('' ''));
Collection<String> set = new HashSet<String>(list);
for (String word : set ){
System.out.println(word + '':'' + Collections.frequency(list,word));
}
}
}
Egyébként igaz, hogy a Java az elején igen nehézkes volt, pl. említik a linkelt oldalon, hogy castolni kellett a primitív típus - objektum típus miatt, de ez mára eltűnt (autoboxing/unboxing), és a Collection Framework-öt is eléggé ütősnek érzem, pedig csak a felszínét értem. Azután itt van az assert, ami kitűnő eszköz, meg a kivételkezelés, stb.
Meg ''csúnya'' dolog erősen típusos, fordítós nyelvet összehasonlítani script-nyelvekkel.
A Java és a C# próbál közelíteni a scriptnyelvek hajlékonyságához, szabadságához, de nyilván sose lehetnek olyanok.
Ráadásul azt is írja, a Java könnyen tanulható, hát, nem tudom. Nekem gyötörnöm kell magam, meg magolnom eléggé sokat, és még van 400 oldalam hátra, és akkor csak az alapokon rágtam át magam és még gyakorlatom se lesz.
Személyes véleményem, hogy a programok olvashatósága rettentő fontos. Egy ismerősöm azt mondta a C-ről (eléggé régen volt ez) hogy azt csak írni tudja, olvasni nem...
Én eléggé otthon vagyok a perlben, (ami egy zseniális nyelv), de könnyedén összehozok benne olyan 1 soros programot, amit 3 perc múlva már magam se értek. -
andriscs
aktív tag
válasz
Protezis #242 üzenetére
Hi!
Ez csak az én szubjektív véleményem, de úgy vélem, hogy egy viszonylag egyszerű problémát nem kell túl sok osztályra felbontani, így jelen esetben is érdemes inkább egy Taylor osztállyal számoltatni. Sok osztály akkor kell, ha valóban összetett a program.
[Szerkesztve] -
BaLinux
tag
válasz
Protezis #211 üzenetére
Részegség, fél egészség
Teljesen jól gondolkozol, csak láss a szöveg mögé: a Szamla osztálynál nem tiltja meg, hogy csinálj egy int getSzamlaID() metódust, amivel lekérdezheted a kívánt adatot. Sőt, egy int getEgyenleg(), void setEgyenleg(int), de még void addToEgyenleg(int) sincs megtiltva. Hajrá! -
BaLinux
tag
válasz
Protezis #191 üzenetére
Jóra gondolsz. Akkor máshogy próbálom meg a dolgot
A Java nem scriptnyelv, nem erre való, tudom csak kíváncsi vagy. Ha valamire ilyen megoldást agyaltál ki, gondolj ki mást, mert nagy valószínűséggel rossz módszer.
Ettől függetlenül van kivétel (pl RPC vagy hasonló dolgok implementálása), és ezért van is megoldás minderre. Nézd meg a Java API doksiban a java.lang.reflect csomag tartalmát, mindent tartalmaz ami a nyelvi reflekcióhoz szükséges lehet. Metódusok, konstruktorok, kivételek, tömbök, mindent tud. Advanced topic!
Hogy lássad, kb. ennyiből állna a dolog:
ha van egy Osztaly nevű class-od, annak float function(int) metódusa, és annak egy o1 instance-ja, akkor a következő rész meghívja a függvényt, és a visszatérő értéket is megkapod.
Method m=Osztaly.getMethod(''function'', new Class[] {int.class});
Object ret=m.invoke(o1, new Object[] {new Integer(1)});
float vissza=((Float)ret).floatValue();
Kész. Persze semmi értelme ennek, mert írhatnád ezt is, ez ugyanaz:
float vissza=o1.function(1);
Csak az előbbinél észre se veszed ha elírtad a függvénynevet, vagy bármilyen hibát vétettél, csak futási időben, míg az utóbbinál már fordításnál. A típusbiztonság nagyon fontos a jó programban, úgyhogy törekedni kell rá. -
BaLinux
tag
válasz
Protezis #188 üzenetére
Ha így akarod megcsinálni, akkor levonhatom azt a következtetést hogy új neked az OO szemlélet?
Ja, a javascriptnek annyi köze a java-hoz, hogy kb. semmi.
Tehát, van két osztályod, és uazt a metódusát akarod meghívni. Tipikus eset az interface-es absztrakcióra:
interface KozosTudas
{
public void fuggeny();
}
class Osztaly1 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly1'');
}
}
class Osztaly2 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly2'');
}
}
Ezek után valahol vannak ilyen cuccaink:
Osztaly1 o1;
Osztaly2 o2;
Ezek mindketten implementaljak a KozosTudas-t, tehát:
KozosTudas[] tomb=new KozosTudas[2]; //hulye pelda...
tomb[0]=o1; tomb[1]=o2;
for(int k=0; k<tomb.length; k++) {
tomb[k].fuggveny();
}
SZVSZ keress egy tutorialt ilyen temabol, esetleg ajanlok 1-2 konyvet maganban...
szerk: kénytelen voltam a ciklusváltozót k-nak nevezni mer amúgy italic-ba nyomta a fórum az egészet ami az indexelés után van
[Szerkesztve]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Jön az Ashes of the Singularity 2
- leslieke: leslieke farmerzsebe
- Nincs kill switch az NVIDIA chipekben
- sziku69: Fűzzük össze a szavakat :)
- AMD GPU-k jövője - amit tudni vélünk
- A lemondást javasolja az Intel vezetőjének Donald Trump
- Windows 11
- laskr99: Processzor és videokártya szilícium mag fotók újratöltve!
- Háztartási gépek
- Futás, futópályák
- További aktív témák...
- Lenovo ThinkPad X1 Yoga (6th Gen) - i7-1185G7, 32GB, 512GB SSD, multitouch
- Bomba ár! Dell Latitude E6520 - i5-2GEN I 6GB I 320GB I HDMI I 15,6" HD+ I W10 I Gari!
- Xiaomi Redmi Note 9 Pro 64GB, Kártyafüggetlen, 1 Év Garanciáva
- AKCIÓ! MSI Z77 MPOWER Z77 chipset alaplap garanciával hibátlan működéssel
- GYÖNYÖRŰ iPhone 15 Pro Max 256GB Black Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3067
Állásajánlatok
Cég: FOTC
Város: Budapest