Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Primer OO koda

Instalacija ...


Imejl konverzija na CLUG mailing listu dobija temu za rad Objekatski orijentisani program (sa runtime polimorfizam) u ne-OO jeziku nalik C. Šta bi bilo potrebno, kako bi kod izgledao i da li vredi?

Problem...


Ovde je mali primer OO programa koji koristi sledeće klase:

                  |<<interface>>|
                  |    Shape    |
                         A
                         |
               +---------+-------+
               |                 |
          |Rectangle|         |Circle|

Oblik obezbeđuje apstraktni interfejs koji podržava Draw(), MoveTo(x,y), and RMoveTo(dx,dy) metode.Pravougaonik i krug podržavaju taj interfejs kao i definisanje svojih specifičnih metoda (npr. SetRadius(newRadius) za Krug)

Napomena: Moja namera je bila da Oblik klase bude čist interfejs, sa svim primenama u izvedenim klasama. Nekoliko primera pomera MoveTo i RMoveTo metode implementacije u oblik klase. To svakako smanjuje suvišnost i to je prihvatljiva optimizacija za ovaj primer.

Izazov ...


Prvobitno sam proizveo C i C + + verzije programa. Neko je na CLUG listi ponudio Perl verziju. Pa sam pomislio da bi bilo interesantno videti ovaj mali problem napisan na nekoliko različitih jezika OO (ili ne-OO jezicima sa ručnim polimorfizma).

Rezultati ...

OO jezici


Jezici u ovoj tabeli daju neku vrstu podrške za objektsko orijentisano programiranje. jezik doprineli

Language Contributed By
Beta Chris Rathman
Cecil Scott Anderson
Clojure Paul Barry
CLOS Chris Rathman
Component Pascal Chris Rathman
C++ Jim Weirich
D Leonardo
Delphi Chris Rathman
Dylan Scott Anderson
Eiffel Jim Weirich
Groovy (version 1) Marcelo da Silva Gomes
Groovy (version 2) Marcelo da Silva Gomes
Io (version 1) Steve Dekorte
Io (version 2) Marcelo da Silva Gomes
Ioke Marcelo da Silva Gomes
Itcl Chris Rathman
Java Jim Weirich
JavaScript Chris Rathman
LPC Scott Anderson
Modula3 Chris Rathman
Oberon Chris Rathman
Objective-C Chris Rathman
Ocaml Chris Rathman
Perl Bradley Kuhn
Perl6 Jim Weirich
Php Chris Rathman
PHP 5 Marcus Cavalcanti
Python (version 1) Monty Stein
Python (version 2) Rico Schiekel
Ruby (version 1) Chris Rathman
Ruby (version 2) Guy N. Hurst
Sather Chris Rathman
Scala Giordano Scalzo
Simula Chris Rathman
Smalltalk Chris Rathman
Visual Basic Csaba Urbaniczky
VBScript Chris Rathman
Visual Foxpro Chris Rathman

Osnovne Potrebe non-OO Jezika


Jezici u ovoj kategoriji osnovnih potreba ne daju potrebne karakteristike Object Oriented programiranja.

Language Contributed By
ANSI C Jim Weirich
Erlang Chris Rathman
Forth Jim Weirich
Haskell Chris Rathman
Icon Chris Rathman
Lua Marcelo da Silva Gomes
Modula2 Chris Rathman
Scheme Jim Weirich

Posebne namene jezika


Jezici u ovoj kategoriji su jezici specijalne namene. Ovo uključuje stvari kao što su skript jezika i baze podataka jezika. Stavke u ovoj kategoriji zaista šire granice da bi bili u stanju da se uradi polimorfizam.

Language Contributed By
AdvSys Scott Anderson
awk Scott Anderson
DOS Batch Scott Anderson
Foxpro Scott Anderson
Prolog Chris Rathman
Postscript Scott Anderson
sed Scott Anderson
Shell Script Monty Stein

Skoro, ali ne baš ...


Brajs Džejkobs nudi XBase verziju. Nažalost, Brajs verzija nudi samo ograničen oblik polimorfizma (gde osnovna klasa mora da nabroji sve potklase). Brajs takođe nudi neke opšte kritike OO paradigme u kojima možda možete uživati.

Podnošenje novog jezika

Svako može da podnese verziju, samo mi je pošaljite, Jim Veirič na jim@weirichhouse.org.

Ako ne pošaljete u primeru, sledeće smernice će mi na kraju olakšati:
  • Ako ćete da podnesete jezik koji je već na listi, proverite da li se nova verzija razlikuje na zanimljiv način. (Drugim rečima, male razlike u oblikovanju ili preimenovanja promenljivih nisu interesantni)
  • Kod može biti predstavljen u onoliko fajlova koliko je potrebno za vaš jezik. Ako želite da imate fajlove sortirane u određenom redosledu, prefiks ime fajla sa brojem i naglašavanjem. (Npr. 01_shape.c, 02_rect.c).
  • Uključite izlaz programa u fajlu pod nazivom 'output.tkt'..
  • Spremite sve zajedno za slanje e-poštom kao tar ili zip fajl.
  • Ako biste radije da imate blog ili sajt URL adresu povezanu sa Vašim imenom u tabeli uplatioca doprinosa, samo recite to. Inače ću povezati sa Vašom imejl adresom. Ako ne želite vezu, to je ok.




Published (Last edited): 04-09-2012 , source: http://onestepback.org/articles/poly/index.html