Ú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
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Lenovo ThinkPad T14 Gen 1 i5-10210 / 16GB RAM/ 256GB NVMe SSD világítós EU bill, kiváló állapotban
- vizes GAMER PC - RYZEN 5 7600X / 32GB DDR5 / RTX 5070 12GB
- HP EliteBook 840 G7 i5-10210U / 16GB RAM / 256GB SSD Szép állapot, EU bill, gyári töltő
- A KINCS ! Új HP EliteBook 860 G10 Profi Fémházas Laptop -50% 16" i7-1355U 32/1TB FHD+ IPS MATT
- Dobozos DELL Inspiron 16 Fémházas Multimédiás Laptop 16" -30% Ryzen 7 8840U 8mag 16/1TB FHD+ IPS
- HIBÁTLAN iPhone 13 128GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS4453, 100% Akksi
- 3440 x 1440 100Hz!!! 90W PD 34" CURVED 1000R Samsung S34A650UXU - 1 év garancia!
- GYÖNYÖRŰ iPhone 14 Pro 128GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS4649
- Kihagyhatatlan áron DELL XPS 13 9310 /i5-1135G7/8 GB Ram/512 GB SSD/FHD+ IPS
- 217 - Lenovo Legion 7 (16IRX9) - Intel Core i7-14700HX, RTX 4060
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest






