Kezdőoldal » Számítástechnika » Programozás » Mi a megszokott eljárás arra,...

Mi a megszokott eljárás arra, ha egy adott fájlból beolvasott adatokra épül az egész program, rengeteg metódussal?

Figyelt kérdés

Ha a fájl sérült/hiányzik/hozzáférés megtagadva stb, akkor nem tudom kinyerni belőle az adatokat és ezáltal minden további művelet értelmetlen.

Egyelőre megoldottam úgy, hogy minden egyes metódus (ahol kell, metódushívás is) feltételvizsgálattal indít, hogy létezik-e a szóban forgó adat. Így azonban biztosan nem jó.


2019. jún. 21. 19:10
1 2 3 4 5
 11/45 A kérdező kommentje:

Persze 7 perc alatt összeáll, aminek hónapok alatt nem sikerült. :D

Pláne jól fogom használni.


Én se értem, jelen esetben mi köze az OOP-nek a problémához.

2019. jún. 22. 05:04
 12/45 anonim ***** válasza:
100%

a probléma itt nem az OOP ismeret hiánya, hanem a megfelelő szaktudás hiánya, de legalább kérdez a kérdező


kezdjük azzal, hogy van valami folyamatábrád, vagy valami dokumentációd arról, hogy jelenleg hogyan is működik a program?

milyen nyelven íródott?

2019. jún. 22. 06:34
Hasznos számodra ez a válasz?
 13/45 A kérdező kommentje:

Szaktudás??? Na, az nincs.

Akkor valószínű segítene az internet ezen is, bár ez nem szintaktika és nem nyelvi elem, hanem algoritmusbeli gond. :(


Annyi van meg, amit kicsivel odébb leírtam. :)

Nincs folyamatábra. Nem szoktam durr bele bumm módon belekezdeni a progijaimba, hanem firkálok, fejben tervezek, grafikusnál lerajzolom vagy a GUI-val kezdek (úgy tudom, ezzel nem teszek rosszat...). Mármint úgy értem, megcsinálom az egész GUI-t, aztán a kódot hozzá szép sorban.



Valami olyasmi a tervem, hogy:

Töltse le a fájlt, ha keletkezik kivétel, kezelje, és ebben az esetben nem lesz adatunk, ezt is kezelje, na itt akadtam el, vagyis jelenleg metódusonként külön vizsgálom :/

Nyissa meg és olvassa ki a tartalmát, ha keletkezik kivétel, kezelje, de akkor kezelni kell azt is, hogy nincs adat


Ha nem keletkezett exception, akkor feltételezhetjük, hogy ott a helyes adat illetve ezt úgyis vizsgálom valamennyire a további feldolgozás során


Ha volt adat:

Split-elje, tegye a megfelelő collection-be

Végezze el a számításokat (egyfajta statisztikát csinálok)

Írja ki a konzolra a végeredményt


Ha nem volt adat:

Írja ki a konzolra, hogy nem volt adat



A beolvasásnál talán kapásból lehetne split-elni és csak a nekem kellő adatot rakni a számomra szükséges collection-be. Jelenleg ez 2 lépésben van, nem tudom, melyik hogyan hat a memóriára, de őszintén megmondom, nekem átláthatóbb egyelőre külön.

2019. jún. 22. 06:56
 14/45 tabaki ***** válasza:
100%

@#4: „Csak egy (több) hatalmas if-else blokkal tudom elképzelni.”


Az avatatlanságom az oka, hogy nem vagyok képes felfogni, mi a probléma egyáltalán? Az eddigiek alapján nem fér a fejembe, hogy az a „hatalmas if blokk” miért nem nézhet ki csakugyan a vázlatodhoz hasonlóan, valahogy így:


if (Adatbeolvasas())

      Program;

else

      Kilepes;


...vagy akár csak így:

if (Adatbeolvasas()) Program;


Az Adatbeolvasas() értelemszerűen egy true/false értékkel térne vissza, és közben maga intézhetné az esetleges hibaüzenetek kiírását. Mi az a rejtett bonyodalom, amit nem veszek észre?

2019. jún. 22. 07:22
Hasznos számodra ez a válasz?
 15/45 A kérdező kommentje:

if (adatbeolvasás())

{adatkezelés(); kiiratás();}

És ez még mind több metódus.

2019. jún. 22. 07:58
 16/45 anonim ***** válasza:

a program egymás után sorban hajtja végre az utasításokat (most a többszálasság ami ezt felboríthatja, nem hiszem, hogy jelen van nálad egyenlőre)


1. lépés fájl letöltése

2. lépés fájl feldolgozása

3. lépés beolvasott adatok feldolgozása


ezt így sorban kell végrehajtsa a program

ha mondjuk erre csinálsz 3 metódust:

DownloadFile();

LoadDataFromFile();

GenerateStatistics();


a te esetedben például a letöltést meg kell várja a fájlból betöltés és a generálás pedig a fájlból betöltést (kivéve ha soronként haladsz végig és közben feldolgozod), tehát kicsit bonyolultabb, mint 3 metódus hívás


statisztika generálás állhat sok metódusból, viszont legyen 1 főmetódus ami elindítja az adatok feldolgozását


Neked úgy kell ezt végezned, hogy:

Először letöltöd a fájlt,

AMINT végzett a letöltés,

AKKOR Betöltöd az adatokat a memóriába,

AMINT végzett a betöltés,

AKKOR Elindítod a Statisztika generálást

AMINT végzett a generálás,

AKKOR kiírod a konzolba a szükséges adatokat


Na és akkor itt jönnek a hiba lehetőségek.

Mi van ha nem sikerül a letöltés valami okból? (hálózati gond, nincs fájl, nincs elég hely...)

Mi van ha nem sikerül megnyitni a fájlt? (nincs jogosultság, nem jó az elérés...)


Ezekre a hibákra fel kell készítened a programodat és hiba esetén megfelelő üzenetet kiírni a konzolba.


Esetleg ha olyan hiába futsz, hogy a memória fogy el, mert túl nagy a fájl, akkor soronként dolgozd fel és amire nincs szükséged azt ne tartsd tovább a memóriában.

2019. jún. 22. 08:26
Hasznos számodra ez a válasz?
 17/45 anonim ***** válasza:
52%

"Persze 7 perc alatt összeáll, aminek hónapok alatt nem sikerült. :D" - ilyen hozzáállással biztosan nem. Mellesleg nem szükséges OOP-t használnod.


"Pláne jól fogom használni." - ritka az, aki esés nélkül tanul meg járni.


"Én se értem, jelen esetben mi köze az OOP-nek a problémához." - az, hogy két lehetőséged van: procedurális vagy OOP megközelítést használsz. Mindegy melyiket választod.



Azon az órán voltál, amikor a kivételkezelést vettétek?


try{


DownloadFile(...);


LoadDataFromFile(...);


GenerateStatistics(...);


}catch (Exception ex) {

//Handling exception(s)

}

2019. jún. 22. 09:26
Hasznos számodra ez a válasz?
 18/45 A kérdező kommentje:

Try-catch-t is csak magamtól tanultam eddig.

Olyan kedves itt is a hangnem.

Valaki tanulni akar és leoltják, mint egy rossz tanulót: nem figyelt?

A cégeknél is ez a hangulat?



Nem lehet az egész main vagy a gomb eseménykezelő metódusa catch blokk, nem?

2019. jún. 22. 15:50
 19/45 tabaki ***** válasza:

@#15:

Fogalmam sincs, mire véljem ezt a megjegyzést. Induljunk ki ebből, amit írtam (kicsit pontosítok rajta, a reggeli kapkodásban lefelejtettem a zárójelet a függvénynév mögül):

if (Adatbeolvasas()) Program();

Miért is ne lehetne akár betű szerint is ez a feltételes választás nagy csodája? Függetlenül attól, hogy nyilván az általad említett, de a jelek szerint ellenszenvesnek talált "hatalmas if-else blokkal" is működnie kellene (úgyhogy szerintem továbbra sem érthető, mi a gondod-bajod), ez a választás ennyi. Ha a helyükön vannak az adatok, indulhat a tevékenység. Ebből a szempontból semmi szerepe, hogy annak elemeit mindenáron közvetlenül az if-blokkban akarod felsorolni, vagy hozzám hasonlóan egy átfogó metódusban kötöd csokorba, vagy bölcsen egy osztályba szervezed az egészet. Nem látom, hogy mitől bonyolultabb, mint pl:

if (inputstr == "Pistike") Kiiratas(inputstr);

2019. jún. 22. 16:07
Hasznos számodra ez a válasz?
 20/45 tabaki ***** válasza:

"Nem lehet az egész main vagy a gomb eseménykezelő metódusa catch blokk, nem?"


Ilyenkor meg csak állok, mint szamár a hegyen, és nem tudom elképzelni, hogy mire gondolsz. Egyedül a beolvasás igényli a try-catchet, és annak eredményétől függően cselekszel így vagy amúgy. Hogy miért kéne a fentieknek is belekerülnie -- ellenben mi okból maradjanak ki belőle a duci lányok, a macskalopás, a tobzoskák és a flóderozott ajtókeretek --, arra képtelen vagyok rájönni.

2019. jún. 22. 16:46
Hasznos számodra ez a válasz?
1 2 3 4 5

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!