Objektno orijentirano programiranje (OOP) je programska paradigma koja se temelji na objektima kao središnjem konceptu. U OOP-u, kod se formatira na temelju funkcionalnosti, što omogućuje održavanje koda, apstrakciju, ponovnu upotrebu, učinkovitost i brojne funkcionalnosti na objektu.
Objekt ima atribute (varijable) koji definiraju njegove karakteristike, svojstva i metode (funkcije) koje definiraju radnje (postupke) i ponašanja objekta.
Objektno orijentirano programiranje u Gou razlikuje se od ostalih jezika. Objektno orijentirani koncepti implementirani su u Go koristeći strukture, sučelja i prilagođene tipove.
Prilagođavanje vrsta u Go
Prilagođeni tipovi olakšavaju grupiranje i prepoznavanje sličnog koda za ponovnu upotrebu.
Kôd za deklariranje prilagođenih tipova je:
tip typeName dataType
Prilikom izrade prilagođenog tipa i dodjele varijable, možete provjeriti vrstu pomoću odraziti. Vrsta() koji uzima varijablu i vraća tip varijable.
uvoz( "fmt"
"reflektirati")
tip dva int// stvara tip "dva"
var broj dva // varijabla tipa "dva"
fmt. Println (reflekt. Vrsta (broj))
The broj varijabla je vrsta dva što je cijeli broj. Možete ići dalje da biste stvorili više prilagođene vrste.
Stvaranje struktura u Go
Strukture (strukture) su nacrti za objektno orijentirano programiranje u Go. Strukture su korisnički definirane zbirke polja.
Struktura može sadržavati različite tipove podataka, uključujući vrste i metode složenih.
Možete stvoriti strukturu koristeći ovu sintaksu:
tip Ime strukture strukturirati {
// neki kod
}
Konvencionalno, nazivi struktura obično se pišu velikim slovima i velikim slovima radi čitljivosti.
Tip strukture preuzima nazive polja i tipove podataka. Strukture mogu prihvatiti bilo koju vrstu podataka Go, uključujući prilagođene vrste.
tip Korisnik strukturirati {
polje1 niz
polje2 int
fieldMap karta[niz]int
}
Možete instancirati tip strukture dodjeljivanjem strukture kao varijable.
instanca := korisnik{
// neki kod
}
Instanca strukture može se popuniti poljima pri instanciji kako je definirano pri inicijalizaciji ili postaviti na null.
instanca := korisnik{
polje 1: "a niz polje",
polje 2: 10,
karta polja: karta[niz]int{},
}
Pristup elementima strukture
Možete pristupiti poljima instance strukture pomoću oznake točke u polju.
fmt. Println("Pristup polju vrijednosti", instance.field2)
Ovo daje izlaz polje2 instancirane strukture.
Dodjeljivanje metoda strukturama
Funkcije (metode) se dodjeljuju tipovima strukture navođenjem naziva primatelja i naziva strukture prije naziva funkcije kao što je prikazano u sintaksi ispod.
func(naziv strukture primatelja)naziv funkcije() {
// neki kod
}
Način naziv funkcije može se koristiti samo na specificiranom tipu strukture.
Implementacija nasljeđivanja u Go
Nasljedstvo je sposobnost objekata i tipova da pristupe i koriste metode i atribute drugih objekata. Go nema Nasljedstvo kao značajku, ali možete koristiti kompozicije. U Go, kompozicija podrazumijeva upućivanje na nadstrukturu (strukturu koja se nasljeđuje) u podstrukturu davanjem imena superstruktura podstrukturu.
Koristeći gornji primjer strukture:
tip Korisnik strukturirati {
polje1 niz
polje2 int
fieldMap karta[niz]int
}
tip Korisnik2 strukturirati {
Korisnik
}
Prolazeći kroz Korisnik ime strukture u Korisnik2 struktura, Korisnik2 struct može pristupiti svim metodama i atributima Korisnik struct na instanciranju osim što se koriste tehnike apstrakcije.
sin := Korisnik2{
Korisnik{
polje 1: "beba",
polje 2: 0,
karta polja: nula,
},
}
fmt. Println (sin.field2)
The sin gornja varijabla je instancija Korisnik2 strukturirati. Kao što se vidi u primjeru, sin varijabla može pristupiti i instancirati vrijednosti tipa User i koristiti ih.
Enkapsuliranje polja tipa u Go
Enkapsulacija, također poznata kao "skrivanje informacija", je a tehnika povezivanja metoda i atributa objekta u jedinice ograničiti korištenje i pristup osim navedenih (omogućavanje privilegija čitanja/pisanja).
Enkapsulacija je implementirana u Go koristeći izvezene i neizvezene identifikatore u paketima.
Izvezeni identifikatori (čitanje i pisanje)
Izvezeni identifikatori se izvoze iz njihovih definiranih paketa i pristupa drugim programima. Upotreba velikih slova u identifikatoru polja izvozi polje fo.
tip Korisnik strukturirati {
Polje1 niz
Polje2 int
Karta polja karta[niz]int
}
tip Korisnik2 strukturirati {
Korisnik
}
Neizvezeni identifikatori (samo za čitanje)
Neizvezeni identifikatori se ne izvoze iz definiranog paketa i obično se pišu malim slovima.
tip Korisnik strukturirati {
polje1 niz
polje2 int
fieldMap karta[niz]int
}
tip Korisnik2 strukturirati {
Korisnik
}
Koncept izvezenih i neizvezenih identifikatora također se primjenjuje na metode objekta.
Polimorfizam u Go
Polimorfizam je tehnika koja se koristi za davanje različitih oblika objektu radi fleksibilnosti.
Go implementira polimorfizam koristeći sučelja. Sučelja su prilagođeni tipovi koji se koriste za definiranje potpisa metoda.
Deklariranje sučelja
Deklariranje sučelja slično je deklariranju struktura. Međutim, sučelja se deklariraju pomoću sučelje ključna riječ.
tip InterfaceName sučelje{
//neke metode
}
Deklaracije sučelja sadrže metode koje treba implementirati tipovima strukture.
Implementacija sučelja u strukturama
Tipovi koji implementiraju sučelje moraju biti deklarirani nakon čega metode tipa implementiraju sučelje.
// Sučelje
tip Boja sučelje{
Boja() niz
}
// Deklariranje struktura
tip Zelena strukturirati {
// neki kod specifičan za strukturu
}
tip Plava strukturirati {
// neki specifični kod
}
Gornji isječak koda ima a Boja sučelje deklarirano s a Boja metoda koju treba implementirati Zelena i Plava vrste struktura.
Sučelja se implementiraju dodjeljivanjem metoda tipovima strukture, a zatim imenovanjem metode metodom sučelja koja će se implementirati.
func(g zeleno)Boja()niz {
povratak "farbano zeleno"
}
func(b plava)Boja()niz {
povratak "farbano plavo"
}
Metodu Paint implementiraju zeleni i plavi tipovi koji sada mogu pozvati i koristiti Boja metoda.
četka := zelena{}
fmt. Ispis (kist. Boja())
Na konzoli je otisnuto "obojeno zeleno" što potvrđuje da je sučelje uspješno implementirano.
Apstraktna polja u Go
Apstrakcija je proces skrivanja nevažnih metoda i atributa tipa, što olakšava zaštitu dijelova programa od nenormalne, nenamjerne upotrebe.
Go nema apstrakciju implementiranu odmah; međutim, možete proći kroz implementaciju apstrakcije pomoću sučelja.
// ljudi mogu trčati
tip ljudski sučelje {
trčanje() niz
}
// Dječak je čovjek s nogama
tip Dječak strukturirati {
Noge niz
}
// metoda na dječaku implementira metodu pokretanja ljudskog sučelja
func(h Dječak)trčanje()niz {
povratak h. Noge
}
Gornji kod stvara a ljudski sučelje s a trčanje sučelje koje vraća string. The Dječak tip implementira trčanje metoda od ljudski sučelje i vraća niz pri instanciranju.
Jedan od načina implementacije apstrakcije je tako da struktura nasljeđuje sučelje čije metode treba apstrahirati. Postoji mnogo drugih pristupa, ali ovaj je najlakši.
tip Osoba strukturirati {
Ime niz
Dob int
Status Ljudski
}
funcglavni() {
osoba1 := &Dječak{Noge: "dvije noge"}
osoba2 := &Osoba{ // instanca osobe
Ime: "amina",
Dob: 19,
Status: osoba1,
}
fmt. Println (osoba. Status.run())
}
The Osoba struct nasljeđuje ljudski sučelje i može pristupiti svim svojim metodama pomoću varijable Status nasljeđivanje sučelja.
Kod instanciranja referencom (pomoću pokazivača), instanca Osoba strukturirati Osoba 2 upućuje na instancu Dječak strukturirati Osoba 1 i dobiva pristup metodama.
Na taj način možete odrediti specifične metode koje će se implementirati prema tipu.
OOP protiv funkcionalnog programiranja
Objektno orijentirano programiranje važna je paradigma jer vam daje veću kontrolu nad vašim programom i potiče ponovnu upotrebu koda na način na koji funkcionalno programiranje ne čini.
Ovo ne čini funkcionalno programiranje lošim izborom, jer funkcionalno programiranje može biti korisno i bolje za neke slučajeve upotrebe.
Što je objektno orijentirano programiranje? Osnove objašnjene laičkim pojmovima
Pročitajte dalje
Povezane teme
- Programiranje
- Objektno orijentirano programiranje
O autoru

Goodness je tehnički pisac, backend developer i analitičar podataka, koji pojednostavljuje različite tehnološke teme dok istražuje ovo fascinantno područje.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu