Kezdőoldal » Számítástechnika » Programozás » C# miért jó interface-el...

C# miért jó interface-el deklarálni? IStore store = new BookStore () ; vs. BookStore store = new BookStore () ;?

Figyelt kérdés

A BookStore megvalóstja az IStore-t.


Van bármilyen különbség a két deklaráció között? A store sima BookStore lesz mindkét esetben, nem?


Köszönöm a válaszokat.



2019. okt. 31. 10:38
1 2 3
 1/21 anonim ***** válasza:
86%

Legyen mondjuk egy másik példa:

Van embered, kutyád, macskád


Tehát Human, Dog, Cat

és mind3 megvalósítja az IWalkable interface-t ami a Walk() metódust tartalmazza


amikor van egy controllered ami IWalkable interfacet megvalósító osztályt vár, őt nem érdekli, hogy az kutya, macska, vagy yeti, csak "tudjon sétálni", tehát legyen meg a Walk() metódusa


ugyanez IFly, ISwim, vagy épp ICanDie interfacekről van szó


vagy akkor egy másik példa, adatfeldolgozás

van egy IData interfaced ami kötelezővé teszi a Save() és Load() metódusokat

és van egy XMLData és JSONData meg akármilyen Data osztályod amik megvalósítják ezt az interfacet, a rendszert nem érdekli, hogy te fájlba, adatbázisba, json formátumban, vagy XML-ben mentesz és töltesz be

ő annyit vár, hogy legyen Save és Load metódus


nem tudom ennyiből érted e mire szerettem volna rámutatni

2019. okt. 31. 11:08
Hasznos számodra ez a válasz?
 2/21 A kérdező kommentje:

Köszi szépen, hogy vetted a fáradtságot erre a két részletes példára.


Szerintem te most az interfaceket magyarázod, amit értek. Az a problémám, hogy a tanárom felváltva használta a fenti deklarációkat egy bonyolult kódban és most össze vagyok zavarodva, mikor miért.


Szóval, igen-nem kérdésként, ugyanaz a kettő? A store mindkét esetben pontosan ugyanaz?

2019. okt. 31. 11:15
 3/21 anonim ***** válasza:
75%

"amikor van egy controllered ami IWalkable interfacet megvalósító osztályt vár, őt nem érdekli, hogy az kutya, macska, vagy yeti, csak "tudjon sétálni", tehát legyen meg a Walk() metódusa"


Ez egy fontos lényege a fenti írásomnak.

Tehát ha van 1 objektum példányod az BookStore típus viszont mellette egy Bolt is (Store), mert megvalósítja az IStore interfészt


tehát van ahol direktbe BookStore-t vársz, máshol meg IStore-t ami lehet más fajta is, nem csak BookStore, bármilyen osztály aki megvalósítja az IStore-t

2019. okt. 31. 11:21
Hasznos számodra ez a válasz?
 4/21 A kérdező kommentje:

Köszönöm, azt hiszem értem! Tehát akkor az egyik esetben a store csak egy Bookstore, a másikban IStore is. Ha valami IStore-t vár, akkor nem lehet neki csak Bookstore-t adni, hiába valósítja meg a Bookstore class az IStore-t, because...reasons.


Na erről a tanár egy szót sem szólt, végig figyeltem:) Köszi még egyszer:)

2019. okt. 31. 11:34
 5/21 anonim ***** válasza:
75%

Ha a BookStore megvalósítja az IStore interface-t, akkor átadhatod annak ami IStore-t vár, mert a castolást elvégzi magától.


Ha megvalósítja, akkor ő mindig BookStore osztály marad, DE közben IStore interfacet megvalósító osztály is!


A kutya attól, mert tud sétálni még kutya marad, viszont van aki annyit vár, hogy az átadott paraméter tudjon sétálni (tehát valósítsa meg az adott interface-t).

2019. okt. 31. 11:43
Hasznos számodra ez a válasz?
 6/21 A kérdező kommentje:

Na írtam egy progit tesztelni, mert eléggé belezavarodtam, és szerintem összeállt


Szóval

IStore store = new BookStore();

formulával igazából egy interface-t példányosítunk. Olyan mintha

IStore store = new IStore();

csak persze ez nem megengedett. A store-nak ilyenkor köze sincs a Bookstore-hoz, hiába szerepel a deklarációban.


Köszi, hogy ennyi időt belémöltél, jelentkezz az egyetememnél a tanárom fizetéséért:)

2019. okt. 31. 11:58
 7/21 anonim ***** válasza:
75%

"egy interface-t példányosítunk"

egy osztályt példányosítasz ami megvalósítja az interface-t, de a referenciád ami rámutat az interfacenek megfelelő


ha van mondjuk 3-4 fajta boltod, akkor a közös dolgokat 1 interfacebe szedheted, főleg ha jól tudod használni nem csak gyűjtő lesz, hanem hivatkozásoknál lesz hasznos ahogy fentebb írtam például a adatbetöltős dolognál :)


hát, ha tudnád hol ülök szerintem néznél egy nagyot :D


de ha a tanárod nem mond el dolgokat, akkor megéri utána olvasni az interface-eknek, hogy megtanuld mikor hogyan alkalmazzuk :)

2019. okt. 31. 12:03
Hasznos számodra ez a válasz?
 8/21 A kérdező kommentje:

hadd tippeljek, hatodikban környezetismeret órán?:)


Köszi még egyszer, ezt most már tudom tesztelni.

2019. okt. 31. 12:12
 9/21 anonim ***** válasza:
75%

az iskolásoknak most szünet van :P

és én inkább "felfele" ülök és nem lefele :)

2019. okt. 31. 12:14
Hasznos számodra ez a válasz?
 10/21 A kérdező kommentje:
Oh, akkor elnézést a tegezésért és jó egészséget!
2019. okt. 31. 12:27
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!