09:24 pm - overloading -> aizstāšana, aizsegšana un operatoru definēšana
hesse te pacēla jautājumu par programmēšanas termina 'overload' tulkošanu latviešu valodā.
Par polimorfismu lasīt šeit: http://en.wikipedia.org/wiki/Type_polymorphism
Par operatoriem šeit: http://en.wikipedia.org/wiki/Operator_overloading
Metožu overloadings, manuprāt, ir polimimorfisma paveids, tapēc sīkāk neizskatīšu.
Kā to saukt latviešu valodā?
Manuprāt polimorfisma gadījumā tā ir vienkārši 'aizstāšana' vai 'aizsegšana'. Savukārt operātoru gadījumā semantika ir pievilkta aiz matiem. Arī angļu valodā neredzu jēgu lietot vārdu 'overload'. Tā ir vienkārši operatoru 'definēšana'.
Ja kāds grib , piedāvāju tēzes par to, ka matemātikas un datorzinātnes pasaulē operatoru semantiskā jēga ir plūstošs jēdziens un nekādas iepriekšpieņemtas nozīmes tur nav. Karoče, matemātiķu rakstītajam uzticēties nevar, kamēr nav sīki noskaidrots, ko kurš simbols nozīmē. ;)
Nu un par polimorfismu - overloadings, overridings vai kas tur vēl ir viens un tas pats. Jāmācās vārdu nozīmes katrā programmēšanas valodā atsevišķi.
Manis apgaismošana laipni gaidīta! [bubu! :)]
| From: | misame |
Date: | March 6th, 2007 - 09:36 pm |
---|
| | | (Link) |
|
taisnība jau Tev ir. Kamēr nebiju ieraudzījis watt viedokli, bija pilnīgi piemirsies par C++/C#/jaunā vb.net iespēju pārlādēt operatorus... tātad jāmācās katrā valodā pa savam.
vēl jautājums, ar ko tad operators ir sliktāks par divargumentu metodi? ;-)
nu ir jau binārie un ternārie un pat unārie operātori:
a += b; a = b + c; !a; +a; -a;
| From: | misame |
Date: | March 6th, 2007 - 09:47 pm |
---|
| | | (Link) |
|
par pirmo man ir aizdomas, ka tas ir sinonīms a=a+b, ko arī kompilators aši pārveido.
Otrais ir tas, ko es biju domājis... pārējie gan tiešām ir unāri operatori. Jautājums, vai C++ ļauj pārlādēt unāro "+"?
nezinu vai ļauj pārlādēt, bet operators tas ir ;)
| From: | kemune |
Date: | March 6th, 2007 - 10:32 pm |
---|
| | | (Link) |
|
ļauj. es tikai neesmu pārliecināts par a ? b : c pārlādēšanu, bet, piemēram, komats C++ arī ir binārs operators, kurš vienmēr atgriež labo vērtību, ja nemaldos
| From: | kemune |
Date: | March 6th, 2007 - 10:35 pm |
---|
| | | (Link) |
|
viens pazīstams maniaks ļoti aizrāvās ar operatoru pārlādēšanu, it sevišķi viņam patika pārlādēt () operatoru. principā mierīgi savu valodu vari radīt, līdzīgi kā ar makrosiem C (tipa obfuscated C contest)
ā, un a = b + c iekš c++ sastāv no diviem operatoriem:
StarprezultaataTips operators + (Btips b, Ctips c);
Atips operators = (StarprezultaataTips s);
excuse moi French.
| From: | kemune |
Date: | March 6th, 2007 - 10:34 pm |
---|
| | | (Link) |
|
pie tam var definēt divos veidos:
1) C stilā kā funkciju:
StarprezultaataTips operators + (Btips b, Ctips c);
2) C++ stilā kā klases memberi:
StarprezultaataTips Btips::operators + (Ctips c);
From: | hessin |
Date: | March 7th, 2007 - 01:36 am |
---|
| | | (Link) |
|
// overload/pārslogošana man liekas pieņemama tāpēc, ka uztveru to kā piemēram, "+" semantikas pārlikšanu, pārkrāmēšanu, pārlādēšanu citā kastītē, cita kontekstā
Hmm.. kāda "+" ir semantika? Kādā kontekstā? mēs taču nerunājam par aritmētiku?
From: | hessin |
Date: | March 9th, 2007 - 01:18 am |
---|
| | | (Link) |
|
Neesmu tik daudz programmējusi,
bet overload piemērs ar klasisko + zīmi pēc manas interpretācijas
1. konteksts ir aritmētiski skaitļi , operācija +(a,b) atgriež a un b summu (semantika);
2. konteksts ir simbolu virknes - pirmais simbolam galā pielikts klāt otrs
3. kaut kādas pašdefinēta klases - pārdefinējot + tiek piešķirta kaut kāda cita semantika, lai vai kāda 2 klasēm tā varētu būt ..
From: | (Anonymous) |
Date: | March 12th, 2007 - 07:25 pm |
---|
| | | (Link) |
|
Manuprāt metožu overloadingam nav īpaši liela sakara ar tipu polimorfismu.
Par polimorfismu iekš wikipēdijas rakstīts: "polymorphism means allowing a single definition to be used with different types of data". Overloadings savukārt ir vienkārši veids, kā zem viena nosaukuma paslēpt vairākas pavisam atšķirīgas funkcijas. Un operatori vien tās pašas funkcijas ir, tikai ar predefinētu nosaukumu un argumentu skaitu, kā arī jocīgu izsaukuma sintaksi.
Piekrītu, ka overloadings ir tas pats kas overridings. Ja necenšās īpaši nošķirt instances parametru no pārējiem funkcijas parametriem, tas pat sanāk diezgan acīmredzami.
Mwc