Na internetu je ogromno člankov, kar se tiče abstraktnih razredov in pa vmesnikov. Zanima me, kaj vse uporabljate v svojih rešitvah in kako se odločate med tema dvema podobnima, a popolnoma različnima pojmoma?
[Poll]
[Poll]
Avtor: bojanv, objavljeno na portalu SloDug.si (Arhiv)
spirit1 - sreda, 04. oktober 2006
to je ze res. vendar bi bilo kul ce ne bi bilo treba "implementirati" :)za tiste funkcije bi se pa ze skompajler zbunil.
AndrejT - torek, 03. oktober 2006
Kaj takega verjetno lahko implementiraš s hierarhijo [vmesnikov *ali* razredov]. En problem, ki se pojavi ob dedovanju večih razredov, so gotovo metode (in ostalo) z istom podpisom (isto ime, isto število in tip parametrov), ki se pojavljajo v teh osnovnih razredih.
spirit1 - torek, 03. oktober 2006
najboljsi kompromis po moje bi bil ta bi lahko mel multiple class inheritance amapk samo ce class ima implemetiran interface.Torej bi mel IMojInterface1 -> MojClass1 (ki implementira IMojInterface1)...IMojInterfaceM -> MojClassN (ki implementira IMojInterfaceN) in potem bi lahko mel MojGlavniClass : MojClass1, ... MojClassN. tako da ne bi bilo treba vsakega interfacea implementirat v vsakem classu
MihaM - petek, 29. september 2006
spirit1: najvecja stvar ki mene moti je da ni multiplega inheritanca. to je blo super.interface-i so bli popolnoma nepotrebni :) Sama sreča, da ni tega čudesa, ker potem se zelo čudne stvari dogajajo in vse skupaj postane ena neregledna pašta.
spirit1 - petek, 29. september 2006
najvecja stvar ki mene moti je da ni multiplega inheritanca. to je blo super.interface-i so bli popolnoma nepotrebni :)
AndrejT - torek, 26. september 2006
Nedvomno je za bazo bolje uporabit abstraktni razred, ki da razredu "vsebino" oz. določi njegov spol, errr., tip. Vmesniki so za npr. dodatek, s katerim določiš "obnašanje" razreda. Zato je tudi priporočljivo, da se vmesniki poimenujejo po tem "obnašanju", npr., IDisposable, ICloneable, IEnumerable, ... Za večino ostalih vmesnikov v .NET FX pa je Microsoft itak priznal, da bi bilo bolje, če bi namesto njih uporabili abstraktne razrede.Zato ja, vedno pride v poštev neka mešanica obojega.
bojanv - torek, 26. september 2006
Kolkr sm si prebral na MS strani ( njihova priporočila ), naj bi blo pametno uporabit za večje logične enote abstraktni razred, pri manjših pa interface. Jz mislim, da ni finta samo v tem, da je naenostavneje nardit abstrakten razreda, ampak je za moje pojme dost boljše kot vmesnik. Ok, z vmesnikom že predpišeš, kako katere metode mora imeti implementiratni razred, samo si pa omejen s tem, da morajo bit public. Da ne omenjam, da morš, če imaš veliko razredov, ki imajo en interface, spreminjal k mona ( še posebej, če refactoring zataji), če dodaš novo metodo v vmesnik. Na koncu je pa spet potreben cast, da prides do metode. Kar mi pa zelo všeč, je da lahko en razred implementira več inteface-ov, samo isto lahko dosežemo z abstraktnim razredom pa da lahko povežem nek nabor razredov v eno logično enoto.Prednosti, ki so mi zelo všeč pri abstraktnem class-u, so:ni direktnega cast-alahko implementiramo privatne metode, konstruktorje,...lahko "simuliraš" interface delovanje, če že rabiš Seveda najboljše od tega je hybrid. Mešanica vsega tega...
MihaM - torek, 26. september 2006
Mogoče je najboljša kombinacija - tako lahko uporabiš abstraktni razred, lahko pa sam implementeriš vse preko vmesnika.Najenostavneje je pa abstraktni razred, kar so tudi pri MSju ugotovili (npr. vsi tisti plugini za asp.net 2.0)..