Ú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]Andris - http://andriscs.blogspot.com
-
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 Lenovo ThinkPad P16s Workstation Érintős LAPTOP -50% 16" Ryzen 7 PRO 6850U 32/1TB 680M 4GB FHD+
- Bontatlan Lenovo ThinkPad P16s Workstation LAPTOP -50% 16" Ryzen 7 PRO 6825U 16/512 RADEON 680M FHD+
- MSI RTX 3060 Ti VENTUS 2X OCV1 LHR
- Razer Blackshark v2 Pro Wireless White
- Hibátlan állapotú & Garanciális Samsung Galaxy Z Fold 4 (512/12GB) + Gyári S-pen tok
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest