Getter (programování)

Metoda čtení , getter ( angl.  getter  - recipient) - (v programování) speciální metoda umožňující získat data, ke kterým je přímo omezen přístup. Je to jedna z technik objektově orientovaného programování , která pomáhá implementovat flexibilní mechanismus zapouzdření . Ve spojení se setterem jej lze použít k uspořádání vlastností a metod v jazycích , kde nejsou podporovány.

Příklady

Java

třída Foo { soukromá int data ; soukromý booleovský příznak ; public void setData ( int data ) { this . data = data ; } public int getData () { vrátit data ; } public void setFlag ( booleovský příznak ) { this . vlajka = vlajka ; } // Doporučuje se předponovat booleovské vlastnosti pomocí is, spíše než get public boolean isFlag () { return flag ; } }

C++

třída Foo { soukromý : int m_data ; veřejnost : void setData ( int data ) { m_data = data ; } int getData () const { return m_data ; } }

Delphi

typ TFoo = class private FData : Integer ; public function GetData : Integer ; procedura SetData ( const ANewData : Integer ) ; vlastnost Data : Integer čtení GetData zápis SetData ; konec ; funkce Tfoo . GetData : Integer ; begin Vysledek := FData ; konec ; postup Tfoo . SetData ( const ANewData : Integer ) ; begin FData := ANewData ; konec ;

V tomto příkladu je přístup ke skrytému poli FDataposkytován prostřednictvím metod SetData ( setter ) a GetData( getter )

Ruby

class Foo attr_accessor :bar # Rubínový syntaktický cukr k automatickému # vytvoření getteru a setteru pro konec proměnné baru foo = foo . nové foo . bar = 42 # call foo.bar=(42) (setter) foo . bar # call foo.bar (getter)

Javascript

var Foo = function ( bar ) { this . bar = bar _ }; foo . prototype = { get bar () { console . log ( 'bar getter' ); vrátit toto . _bar ; }, set bar ( bar ) { console . log ( 'nastavovač' ); toto . _bar = bar ; } }; var foo = nový Foo ( 15 ); foo . bar = 123 ; // konzole pro nastavení barů . log ( foo . bar ); // bar getter, 123

PHP

PHP nemá přímý mechanismus pro použití getterů, takže jsou implementovány pomocí metody „magic“ __get()

<?php class Foo { private $data ; public function __get ( $name ) { $method = 'get' . ucfirst ( $jméno ); if ( metoda_existuje ( $this , $metoda )) { return $this -> $metoda (); } } public function getData () { return $this -> data ; } }

C#

V C# se gettry a settery používají v mechanismu vlastností . Getter odpovídá klíčovému slovu get, setter množině. Verze 3 zavedla automatický getter.

class Foo { private int id ; soukromý název řetězce ; _ public int ID { get { return id ; } } public string Name { get { return name ; } nastavit { toto . jméno = hodnota ; } } public string SomeProperty { get ; nastavit ; } }

VB.NET

Chcete-li ve VB.NET vytvořit getter, musíte zadat modifikátor ReadOnly, pokud nepoužíváte setter. Od VB 10.0 se objevují automaticky implementované vlastnosti, to znamená, že není potřeba psát implementaci vlastnosti, stačí deklarace.

Public Class Foo Private m_Data As Integer 'Soukromé pole s daty Zpráva veřejného majetku jako celé číslo 'Automaticky implementovaný majetek od VB 10.0 Public ReadOnly Property Data As Integer 'Veřejná vlastnost pouze pro čtení Get Return m_Data End Get End Property End Class

Python

V Pythonu lze getter a setter třídy vytvořit pomocí dekorátoru @property, atributy začínající __ jsou označeny jako dostupné pouze v rámci objektu.

třída Foo : def __init__ ( self , data = None ): self . __data = data @property def data ( self ): return self . __data @data . setter def data ( self , value ): self . __data = hodnota

Viz také

Poznámky