Pogledajte određenu poruku
Staro 18. 02. 2010.   #86
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 05.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

Šta? LOL

Citat:
"Interfejsi su nužno zlo u jezicima koji ne podržavaju višestruko nasleđivanje..."?
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

Jednostavno, izuzetno kratak način da objaviš ugovor (skup funkcija i svojstava).

Citat:
Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto, pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan.
Hahha, "ako je nekom uopšte potrebna.."

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)?

Ako ćeš tako, sve može da se odradi na okolni način, ali možemo i da osnovne računske operacije obavljamo direktno baratajući registrima na procesoru, šta će nam bilo kakva apstrakcija.

Citat:
Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već...
Kakvo "programiranje koje se svoji na definisanje ugovora"? To bi trebalo da znači nešto konkretno? Drugim rečima, poštedi me komentara sa visine ako nemaš šta konkretno da kažeš.


Inače, odgovor sam potražio i našao sam, umesto ovakve besmislene priče sa tobom. Stvar može da se reši drugačije u JavaScript-u, prostim prototype nasleđivanjem, slično kao što se C++ čisto virtuelne klase koriste u zamenu za interfejse. Otprilike ovako:
Kôd:
function IDuck() { 
}
IDuck.prototype = {
  duck : function() {},
  walk : function() {}
}

function Guska() { 
}

Guska.prototype =  new IDuck();

var g = new Guska();

alert ( g instanceof IDuck ); // true!
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 18. 02. 2010. u 19:53.
degojs je offline   Odgovorite uz citat