Getter (ohjelmointi)

Lukumenetelmä , getter ( eng.  getter  - vastaanottaja) - (ohjelmoinnissa) erityinen menetelmä , jonka avulla voit saada tietoja, joihin pääsy on suoraan rajoitettu. Se on yksi olio-ohjelmoinnin tekniikoista , joka auttaa toteuttamaan joustavan kapselointimekanismin . Yhdistettynä setterin kanssa sitä voidaan käyttää ominaisuuksien ja menetelmien järjestämiseen kielillä , joissa niitä ei tueta.

Esimerkkejä

Java

luokka Foo { yksityiset int tiedot ; yksityinen boolen lippu ; public void setData ( int data ) { this . data = data ; } public int getData () { palauttaa tiedot ; } public void setFlag ( looginen lippu ) { this . lippu = lippu ; } // Boolen ominaisuuksien etuliitettä on suositeltavaa mieluummin kuin saada public boolean isFlag () { return flag ; } }

C++

luokka Foo { yksityinen : int m_data ; julkinen : void setData ( int data ) { m_data = data ; } int getData () const { palauttaa m_data ; } }

Delphi

tyyppi TFoo = luokka yksityinen FData : Kokonaisluku ; julkinen toiminto GetData : Kokonaisluku ; menettely SetData ( const ANewData : Integer ) ; ominaisuus Data : Kokonaisluku lue GetData kirjoittaa SetData ; loppu ; toiminto TFoo . GetData : Kokonaisluku ; alkaa Tulos := FData ; loppu ; menettely TFoo . SetData ( const ANewData : Integer ) ; begin FData := ANewData ; loppu ;

Tässä esimerkissä pääsy piilotettuun kenttään FDatatarjotaan menetelmillä SetData ( setter ) ja GetData( getter )

Ruby

class Foo attr_accessor :bar # Ruby syntaktinen sokeri automaattisesti # luo getterin ja asettajan palkin muuttujan päälle foo = Foo . uusi foo . bar = 42 # call foo.bar=(42) (asettaja) foo . bar # soita foo.bar (getter)

Javascript

var Foo = funktio ( bar ) { this . baari = baari _ }; foo . prototyyppi = { get bar () { konsoli . loki ( 'bar getter' ); palauta tämä . _bar ; }, aseta palkki ( bar ) { konsoli . loki ( 'palkin asettaja' ); tämä . _bar = palkki ; } }; var foo = uusi Foo ( 15 ); foo . bar = 123 ; // baarin asetinkonsoli . loki ( foo . bar ); // bar getter, 123

PHP

PHP:llä ei ole suoraa mekanismia getterien käyttämiseen, joten ne toteutetaan "magic" __get() -menetelmällä

<?php class Foo { yksityinen $data ; public function __get ( $nimi ) { $method = 'get' . ucfirst ( $nimi ); if ( method_exists ( $this , $method )) { return $this -> $method (); } } public function getData () { return $this -> data ; } }

C#

C#:ssa ominaisuusmekanismissa käytetään gettereitä ja settereitä . Getteri vastaa hakusanaa, setteri joukkoa. Versio 3 esitteli automaattisen getterin.

class Foo { yksityinen int id ; yksityinen merkkijononimi ; _ public int ID { get { return id ; } } julkinen merkkijono Nimi { get { return name ; } set { this . nimi = arvo ; } } julkinen merkkijono SomeProperty { get ; asettaa ; } }

VB.NET

VB.NET:ssä getterin luomiseksi sinun on määritettävä ReadOnly-muunnin, jos et käytä setteriä. Automaattisesti toteutettuja ominaisuuksia on ilmestynyt VB 10.0:sta lähtien, eli ominaisuustoteutusta ei tarvitse kirjoittaa, ilmoitus riittää.

Public Class Foo Private m_Data As Integer 'Yksityinen kenttä tiedoilla Julkisen omaisuuden viesti kokonaislukuna "automaattisesti toteutettu ominaisuus VB 10.0:sta lähtien Julkinen vain luku -omaisuuden tiedot kokonaislukuna ' Vain luku - julkinen omaisuus Hae palautus m_Data Lopeta Hae End Omaisuuden loppuluokka

Python

Pythonissa luokan getter ja setter voidaan tehdä @property decoratorilla, __-alkuiset attribuutit merkitään käytettävissä oleviksi vain objektin sisällä.

luokka Foo : def __init__ ( itse , data = Ei mitään ): itse . __data = data @property def data ( self ): palauta itse . __data @data . setter def data ( itse , arvo ): itse . __data = arvo

Katso myös

Muistiinpanot