Citat:
Originalno napisao degojs
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.
|
O gospode... Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan". Sa druge strane, u rantajmu se ta provera radi vrlo lako i nije neophodan nikakav veštački language construct da bi se to izvelo, već se to radi sa postojećim konceptima (npr. običnim metodama).
Taj "ugovor" o kome pričaš zapravo nema veze sa koderom. U pitanju je ugovor sa kompajlerom, tj.
jedini način da ti kompajler dozvoli da pozivaš iste metode na objektima različitih klasa. Drugim rečima, pisanje interfejsa je tvoja
obaveza, a ne
privilegija.
Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita...
Citat:
Aha, znači treba da ispitujem:
1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?
|
Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš, i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:
Kôd:
# unapred definišemo svojstva i funkcije:
sve_sto_covek_mora_da_podrzava = [:hodaj, :trci, :x, :y, :z, :visina]
# pa pitamo kratko
objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava
Viđu mađije! Bez interfejsa!
