Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy.
Nekteri by dokonce rekli, ze C++ a Java mrsi cele OOP. :-)
Hlavně nejde o objektové jazyky v pravém slova smyslu (u C++ je to obzvláště markantní, jde o klasické strukturované návrhy, z nějakého nepochopitelného důvodu vecpané do struktur, totiž, ehm, pardon, do class, ale žádný benefit to nepřináší, jen je to celé méně přehledné, hůř se to udržuje a vznikají tam ještě zákeřnější chyby než v C; u Javy je to podobné, ale přeci jen už tam jistý pokrok cítit je, ačkoli o 90% programů se dá říci totéž, co o C++). Stačí si daný program napsat čistě strukturovaně a porovnat s tím „objektovým”. Ale nechci se tu pouštět do flamů.
Zrovna v jednom takovém třicetitisícřádkovém projektíku v C++ potřebuji něco změnit a jeho „objektový” návrh mi to nijak neusnadňuje, ale celé je to kvůli tomu naprosto zbytečně komplikované a nepřehledné – hierarchie tříd umělá, jen kvůli tomu, že se to tak čeká, ve skutečnosti křečovitá, nelogická, neusnadňující znovupoužitelnost kódu, ale komplikující ji, atd. Objektový návrh by vypadal naprosto diametrálně odlišně, počet řádků by byl poloviční a moje týdenní práce by se scvrkla asi tak na půl den.
Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.
No, zni to hezky, ale ma to jeden maly problem. V mnoha jazycich, napriklad Pythonu, jsou funkce take hodnoty (neboli data). Tradicni staticky typovane OOP jazyky mezi tim rozlisuji (a pak se to resi pres paskvily jako delegate atd.), ale neni to univerzalni pravidlo.
Tak tedy jinak. Atribut slouží k uchovávání stavu. Ale taky nepatřím k těm, co by se vyžívali ve slovíčkaření – pokud dané označení nezačíná být až zavádějící. Statická funkce, statická proměnná – to jsou zavedené céčkovské termíny. Statický člen třídy – to je velmi nešťastný název a nešťastně recyklované klíčové slovo, protože má odlišný význam.