Kezdőoldal » Számítástechnika » Programozás » Hogy legyen Javában két...

Hogy legyen Javában két osztályban ugyanaz a változóm getterrel és setterrel?

Figyelt kérdés

Van mondjuk A, B, C, D... vagy 20 osztály, ami mind bővíti a Z-t.

Az A-ban van egy változó getterrel és setterrel. Ugyanez kéne most a B-be is, ugyanarra a funkcióra.

a) Beleírom a B-be is -- kódismétlés.

b) Beleírom a Z-be -- a többségnek felesleges.

c) Közérakok egy Z1-et, ami bővíti Z-t, és benne van a cucc -- jó, de minden ismétlődő változónál ezt fogom csinálni? Még ütközés is lesz.

d) Interface -- nem jó, nem lehet benne változó + nem lehet implementálni a függvényeket.



2017. okt. 18. 16:43
1 2
 1/13 anonim ***** válasza:
0%
c
2017. okt. 18. 17:06
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Miért?
2017. okt. 18. 17:21
 3/13 Progresszor ***** válasza:

d :)


Interface + Adapter osztály + Aggregáció

2017. okt. 18. 17:51
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:

Ez erősen szituációfüggő. Mennyire kapcsolódik logikailag A és B? Ha azon túl, hogy mindkettő Z-ből származik, de egyébként nagy mérétkben eltérő céljuk és szerkezetük van, akkor inkább célszerű az (a) megoldásra menni, és akkor mindkettőnek lesz egy-egy ugyanolyan változója, amire ugyanolyan getter-setter van rárakva. Ha logikailag jobban összekapcsolódnak, és van relevanciája annak, hogy mindkettő tartalmazza ezt a változót, akkor (c) vagy (d). A (d) megoldás igazából nem tér el sokban az (a) megoldástól, annyi a lényegi különbség, hogy az interfészen keresztül egy plusz logikai kapocs épül ki köztük, és kezelheted őket egységesen az interfészük alapján. A (c) megoldás tűnhet talán a legelegánsabb megoldásnak, Cakkpakk létrehozol eg yúj ágat az öröklődési fádban, és levan a gond. Csak mint mondtad, ez sok problémát okozhat, ha ezt még jópár változóval el akarod játszani.


A kérdés amit fel kell tenned magadnak igazából az, hogy azon felül, hogy egy ugyanolyan nevű, és szerepű változót implementálnál mindkét osztályban, maguk az osztályok között van-e releváns logikai kapocs ami miatt érdemes őket összekötni? Egy-egy kósza adattag miatt szerintem fölösleges plusz rétegeket létrehozni az osztályszerkezetedben, ha az nem bővíti relevánsan az osztály szerepkörét. Fontos megjegyezni, hogy osztályokat felülről építünk, nem alulról. Nem azt találjuk ki először, hogy mi lesz a nx/z.23-adik privát adattag, hanem hogy milyen feladatkört kell az osztálynak ellátnia, és milyen módon fogsz kommunikálni vele. Egy jól átlátható, tiszta osztályszerkezet erre épül, nem az implementációs eltérésekre.

2017. okt. 18. 18:06
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:
Pls muti konkrétan miről lenne szó, ugy lehet könnyebb lenne megoldani.
2017. okt. 18. 19:19
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:

Jó, ez egy céges alkalmazás, nem dobhatom ki ide az egészet... Arról van szó, hogy Z az adatbázis tábláit reprezentáló általános datasetosztály, aminek sok leszármazottja van. A az ügyfelek alapadatait tartalmazó tábla datasetje, B pedig egy ehhez idegen kulccsal kapcsolódó másik tábláé. Sok más hasonló szerepű tábla is van, mint a B, és vannak egészen más jellegű táblákat reprezentáló osztályok.


Időnként duplikációkat szüntetünk meg, és ez törléssel jár. Az A osztálynak tisztában kell lennie vele, hogy a törlés duplikációmegszüntetés keretében történik vagy direkt törléssel, ezt fejezi ki a változó. Most kiderült, hogy a B-nek is tudnia kell ugyanezt. A többinek nem, vagy egyelőre úgy látszik, hogy nem.

2017. okt. 18. 20:36
 7/13 A kérdező kommentje:
De ha a d-t választom, az csak egy logikai kapocs, és ugyanúgy mind a kettőbe bele kell írnom a kódot.
2017. okt. 18. 20:38
 8/13 A kérdező kommentje:
Még annyit, hogy nem egy új szoftvert építek, hanem egy 11 éves programba kell beépítenem a duplikációmegszüntetés figyelését.
2017. okt. 18. 20:45
 9/13 anonim ***** válasza:
Ha a getter/setter metodusokban semmi business logic nincs akkor nem gaz az egesz. Bar en személy szerint nem szeretem az entitasok közti oroklodest, bar legacy kóddal nem lehet mit kezdeni? A db-ben milyen strategiaval vannak tarolva?
2017. okt. 18. 21:44
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:
Egyébként miben tud többet A mint B? Máshogy is működik vagy csak 2 javabean? Mert sok ilyen esetben ha a leszarmazas csak megjelölés miatt lenne, akkor olyankor bőven elég egy enum es kesz.
2017. okt. 18. 21:47
Hasznos számodra ez a válasz?
1 2

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!