Kezdőoldal » Számítástechnika » Programozás » Melyik módszert érdemes...

Melyik módszert érdemes használni?

Figyelt kérdés

Egy nagyobb projektbe kezdenék most, C#-ban és érdekelne hogy a kettő közül melyiket érdemes használni, valamint a későbbiekben (esetleg munkában) melyiket fogják előnyben részesíteni?


Alap szituáció hogy például sok munkát szeretnék eltárolni.


1: Csinálok egy IMunka interfészt, és minden munkának külön osztályt hozok létre, ami ezt implementálja, majd egy IMunka tömbben/listában tudom tárolni ezeket.


2: Csinálok egy Munka osztályt, amiben minden megvan amit az előző példában az IMunka tartalmazott (de itt nincs interfész), és abból hozok létre példányokat különböző munkáknak megfelelő adatokkal a konstruktorban.


Melyik módszer "eladhatóbb"? A második módszer (amit suliban tanítanak) a továbbfejleszthetőség miatt nehezebben átlátható, míg minden munka külön osztályban tárolva áttekinthetőbb, vagy rosszul gondolom? Esetleg van valami más erre? Még csak tanulom a nyelvet, de a későbbiekben szeretnék ezzel foglalkozni és azért érdekel, hogy melyik módszert érdemes megtanulni.



2016. ápr. 10. 09:27
 1/9 anonim ***** válasza:
100%
Itt az a lényeg, hogy az osztályokban van-e olyan metódus, ami mindegyikben ugyanúgy van implementálva, legfeljebb csak néhány osztályban tér el. Mert ha igen, akkor kell egy Munka ősosztály, és abban leírni a közös dolgokat. Viszont ha csak annyit tudunk, hogy a munkáknak van valami közös tulajdonságuk vagy viselkedésük, de ez nagyjából mindenhol más, akkor interfész.
2016. ápr. 10. 09:55
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Aha értem, mondjuk jogos feltevés, mert logikusabb több osztállyal dolgozni, ha mondjuk az IMunka.GetFizetes() metódust mindegyik máshogy számolja, de dizájn tekintetében nem számít az rossz módszernek, hogy van 600 osztályom a 600 fajta munkának?
2016. ápr. 10. 10:09
 3/9 anonim ***** válasza:

Nem feltétlenül baj.

Ha van ahol azonos a fizetés, lehet még tovább kategorizálni.

2016. ápr. 10. 11:12
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Nem teljesen világos nekem, hogy mit szeretnél implementálni.


A különböző munkák ugyanolyan objektumok? Azaz ugyanazok a tulajdonságaik és műveleteik vannak és a műveleteiket ugyanúgy számolod? Ha igen, akkor egy osztály különböző példányairól van szó. Ez azért jó, mert később akárhány munkát létrehozhatsz egyszerűen. Ha viszont nem teljesen egyformák, hanem van köztük különbség, plusz tulajdonság/művelet, máshogy van implementálva ugyanaz a művelet ilyesmi, akkor jöhet képbe a származtatás. De nem kell azt sem túlzásba vinni, mert túlbonyolítja a kódot, akkor használd csak amikor tényleg kell.

2016. ápr. 10. 12:34
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Lehet, hogy érthetetlenül írtam le, elnézést, pontosítok:


Szeretném, ha a programban lennének különböző munkák. Ezeknek vannak adott tulajdonságai, például az értük járó bér, a munka nehézsége, a munkavégző neme is lehet feltétel, és egy Do() metódus, ami elvégzi az adott munkát (referenciaként megkapva a munkavégzőt, hogy növelje a fizetését de nem lényeges ez). Most ezt úgy oldjam meg, hogy egy Munka osztályt hozok létre, amiben az említett tulajdonságokat konstruktorban állítom be, vagy mindegyik munka egy IMunka interfésztől örököljön, amik majd implementálják ezeket a tulajdonságokat saját módjuk szerint?


Így remélem tisztább, szóval ha ezt szeretném megvalósítani, akkor maradjak a konstruktoros átadogatós módszernél, vagy egyszerűbb, ha minden munkának külön osztályt hozok létre, amik implementálják az IMunka interfészt? És akkor ha módosítani kell mondjuk az Utcaseprés munka fizetésén akkor csak rábökök az osztályra és átírom, az egyszerűbb, mint kikeresni egy listából ahol mondjuk tárolva vannak a Munka objektum példányai, vagy nem?

2016. ápr. 10. 19:39
 6/9 anonim ***** válasza:
És ha úgy csinálnád meg, hogy csinálsz egy Munka osztályt és ennek csinálsz egy olyan konstruktort, ami azt kapja paraméternek, hogy milyen tipusú munka (egy enummal) és ez alapján állítja be az értékeket?
2016. ápr. 10. 19:45
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Az is opció, engem főleg az érdekelne, hogy nagyobb projektekben, ahol mondjuk 900-1000 munkát kellene megcsinálni, ott is a példányok létrehozása a célszerűbb?
2016. ápr. 11. 20:07
 8/9 anonim ***** válasza:
Nagyságrendekkel egyszerűbb, mint a 900-1000 osztályt megírni ;)
2016. ápr. 11. 20:58
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Rendben, értem, köszönöm szépen, zöldek mentek! :)
2016. ápr. 11. 22:32

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!