Objektno usmerjeno programiranje (OOP) je programska paradigma, ki temelji na objektih kot osrednjem konceptu. V OOP je koda oblikovana na podlagi funkcionalnosti, kar omogoča vzdrževanje kode, abstrakcijo, ponovno uporabo, učinkovitost in številne funkcionalnosti na objektu.
Objekt ima atribute (spremenljivke), ki opredeljujejo njegove značilnosti, lastnosti in metode (funkcije), ki opredeljujejo dejanja (postopke) in obnašanja predmeta.
Objektno usmerjeno programiranje v Go se razlikuje od drugih jezikov. Objektno usmerjeni koncepti se izvajajo v Go z uporabo struktur, vmesnikov in tipov po meri.
Prilagajanje vrst v Go
Tipi po meri olajšajo združevanje in prepoznavanje podobne kode za ponovno uporabo.
Koda za deklariranje tipov po meri je:
tip typeName dataType
Ko ustvarite tip po meri in dodelite spremenljivko, lahko preverite tip z odražati. Tip() ki sprejme spremenljivko in vrne tip spremenljivke.
uvoz( "fmt"
"odsevajo")
tip dve int// ustvari tip "dva"
var številka dve // spremenljivka tipa "dva"
fmt. Println (reflect. Vrsta (število))
The številko spremenljivka je vrsta dve ki je celo število. Lahko greste še dlje, da ustvarite več vrste po meri.
Ustvarjanje struktur v Go
Strukture (strukture) so načrti za objektno usmerjeno programiranje v Go. Strukture so uporabniško definirane zbirke polj.
Struktura lahko vsebuje različne tipe podatkov, vključno z sestavljenimi tipi in metodami.
Strukturo lahko ustvarite s to sintakso:
tip Ime strukture struct {
// nekaj kode
}
Običajno so imena struktur običajno napisana z velikimi črkami in velikimi črkami kamel zaradi berljivosti.
Tip strukture prevzame imena polj in podatkovne tipe. Strukture lahko sprejmejo kateri koli tip podatkov Go, vključno s tipi po meri.
tip Uporabnik struct {
polje 1 vrvica
polje2 int
fieldMap zemljevid[vrvica]int
}
Tip strukture lahko ustvarite tako, da strukturo dodelite kot spremenljivko.
primer := uporabnik{
// nekaj kode
}
Primerek strukture se lahko napolni s polji ob inicializaciji, kot je definirano ob inicializaciji, ali nastavljen na nič.
primer := uporabnik{
polje 1: "a vrvica polje",
polje 2: 10,
zemljevid polja: zemljevid[vrvica]int{},
}
Dostop do strukturnih elementov
Do polj primerka strukture lahko dostopate s pikčastim zapisom polja.
fmt. Println("Dostop do polja vrednosti", instance.field2)
To daje rezultat polje2 primerka strukture.
Dodeljevanje metod strukturam
Funkcije (metode) so dodeljene vrstam strukture z navedbo imena sprejemnika in imena strukture pred imenom funkcije, kot je prikazano v spodnji sintaksi.
func(StructName prejemnika)Ime funkcije() {
// nekaj kode
}
Metoda Ime funkcije se lahko uporablja samo na podani vrsti strukture.
Implementacija dedovanja v Go
Dedovanje je sposobnost objektov in tipov za dostop in uporabo metod in atributov drugih objektov. Go nima dedovanja kot funkcije, lahko pa uporabite kompozicije. V Go sestava vključuje sklicevanje na nadstrukturo (strukturo, ki jo je treba podedovati) v podstrukturu z zagotavljanjem imena nadstruktura podstrukturu.
Z uporabo zgornjega primera strukture:
tip Uporabnik struct {
polje 1 vrvica
polje2 int
fieldMap zemljevid[vrvica]int
}
tip Uporabnik 2 struct {
Uporabnik
}
Z mimo Uporabnik ime strukture v Uporabnik 2 struktura, Uporabnik 2 struct lahko dostopa do vseh metod in atributov Uporabnik struct ob instanciji, razen da se uporabljajo tehnike abstrakcije.
sin := Uporabnik2{
Uporabnik{
polje 1: "dojenček",
polje 2: 0,
zemljevid polja: nič,
},
}
fmt. Println (son.field2)
The sin zgornja spremenljivka je primer Uporabnik 2 struct. Kot je razvidno iz primera, je sin spremenljivka lahko dostopa do vrednosti tipa Uporabnik in jih ustvari in jih uporablja.
Enkapsuliranje polj tipa v Go
Enkapsulacija, znana tudi kot »skrivanje informacij«, je a tehnika združevanja metod in atributov predmeta v enote za omejitev uporabe in dostopa, razen določenih (omogočanje pravic za branje/pisanje).
Enkapsulacija se izvaja v Go z uporabo izvoženih in neizvoženih identifikatorjev v paketih.
Izvoženi identifikatorji (branje in pisanje)
Izvoženi identifikatorji se izvozijo iz njihovih definiranih paketov in dostopa do drugih programov. Če identifikator polja uporabite velike začetnice, se izvozi polje fo.
tip Uporabnik struct {
Polje 1 vrvica
Polje 2 int
Zemljevid polja zemljevid[vrvica]int
}
tip Uporabnik 2 struct {
Uporabnik
}
Neizvoženi identifikatorji (samo za branje)
Neizvoženi identifikatorji niso izvoženi iz definiranega paketa in so običajno majhni.
tip Uporabnik struct {
polje 1 vrvica
polje2 int
fieldMap zemljevid[vrvica]int
}
tip Uporabnik 2 struct {
Uporabnik
}
Koncept izvoženih in neizvoženih identifikatorjev velja tudi za metode predmeta.
Polimorfizem v Go
Polimorfizem je tehnika, ki se uporablja za dajanje različnih oblik predmetu zaradi fleksibilnosti.
Go izvaja polimorfizem z uporabo vmesnikov. Vmesniki so tipi po meri, ki se uporabljajo za definiranje podpisov metod.
Deklaracija vmesnikov
Deklariranje vmesnikov je podobno deklariranju struktur. Vendar pa so vmesniki deklarirani z uporabo vmesnik ključno besedo.
tip InterfaceName vmesnik{
//nekatere metode
}
Deklaracije vmesnika vsebujejo metode, ki jih je treba izvajati s tipi strukture.
Implementacija vmesnikov v strukturah
Tipe, ki izvajajo vmesnik, je treba deklarirati, nato pa metode tipa izvajajo vmesnik.
// Vmesnik
tip Barva vmesnik{
barva () vrvica
}
// Deklariranje struktur
tip Zelena struct {
// neka koda, specifična za strukturo
}
tip modra struct {
// neka posebna koda
}
Zgornji delček kode ima a Barva vmesnik, deklariran z a Barva metodo, ki jo izvaja Zelena in modra vrste struktur.
Vmesniki se izvajajo tako, da se metode dodelijo tipom strukture in nato poimenujejo metodo z metodo vmesnika, ki se izvaja.
func(g zelena)Barva()vrvica {
vrnitev "pobarvano zeleno"
}
func(b modra)Barva()vrvica {
vrnitev "pobarvano modro"
}
Metodo Paint izvajata zelena in modra vrsta, ki lahko zdaj kličeta in uporabljata Barva metoda.
čopič := zelena{}
fmt. Println (čopič. Barva ())
Na konzoli je natisnjeno zeleno, ki potrjuje, da je bil vmesnik uspešno implementiran.
Abstrahiranje polj v Go
Abstrakcija je proces skrivanja nepomembnih metod in atributov neke vrste, kar olajša zaščito delov programa pred nenormalno, nenamerno uporabo.
Go nima abstrakcije, ki je implementirana takoj; vendar se lahko premaknete skozi implementacijo abstrakcije z uporabo vmesnikov.
// ljudje lahko tečejo
tip Človek vmesnik {
teči () vrvica
}
// Fant je človek z nogami
tip Fant struct {
Noge vrvica
}
// metoda na boy izvaja metodo zagona vmesnika Human
func(h fant)teči()vrvica {
vrnitev h. Noge
}
Zgornja koda ustvari a Človek vmesnik z a teči vmesnik, ki vrne niz. The Fant tip izvaja teči metoda Človek vmesnik in vrne niz ob istanci.
Eden od načinov za implementacijo abstrakcije je, da struktura podeduje vmesnik, katerega metode je treba abstrahirati. Obstaja veliko drugih pristopov, vendar je ta najlažji.
tip Oseba struct {
ime vrvica
starost int
Status Človek
}
funcglavni() {
oseba1 := &Fant{Noge: "dve nogi"}
oseba2 := &Oseba{ // primer osebe
Ime: "amina",
starost: 19,
Status: oseba 1,
}
fmt. Println (oseba. Status.run())
}
The Oseba struct podeduje Človek vmesnik in lahko dostopa do vseh njegovih metod s spremenljivko Stanje podedovanje vmesnika.
Pri instanciji s sklicevanjem (z uporabo kazalca) se primerek Oseba struct Oseba 2 se sklicuje na primer Fant struct Oseba 1 in dobi dostop do metod.
Na ta način lahko določite posebne metode, ki jih je treba izvajati glede na tip.
OOP proti funkcionalnemu programiranju
Objektno usmerjeno programiranje je pomembna paradigma, saj vam omogoča večji nadzor nad vašim programom in spodbuja ponovno uporabo kode na načine, ki jih funkcionalno programiranje ne.
Zaradi tega funkcionalno programiranje ni slaba izbira, saj je funkcionalno programiranje lahko koristno in boljše za nekatere primere uporabe.
Kaj je objektno usmerjeno programiranje? Osnove, razložene z laičnimi izrazi
Preberite Naprej
Povezane teme
- Programiranje
- Objektno usmerjeno programiranje
O avtorju

Goodness je tehnični pisatelj, razvijalec zaledja in analitik podatkov, ki poenostavlja različne tehnološke teme, ko raziskuje to fascinantno področje.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!
Kliknite tukaj, da se naročite