Objektovo orientované programovanie (OOP) je paradigma programovania založená na objektoch ako ústrednom koncepte. V OOP je kód formátovaný na základe funkčnosti, čo umožňuje údržbu kódu, abstrakciu, opätovnú použiteľnosť, efektivitu a množstvo funkcií na objekte.

Objekt má atribúty (premenné), ktoré definujú jeho charakteristiky, vlastnosti a metódy (funkcie), ktoré definujú akcie (postupy) a správanie objektu.

Objektovo orientované programovanie v Go sa líši od iných jazykov. Objektovo orientované koncepty sú implementované v Go pomocou štruktúr, rozhraní a vlastných typov.

Prispôsobenie typov v Go

Vlastné typy uľahčujú zoskupovanie a identifikáciu podobného kódu na opätovné použitie.

Kód na deklarovanie vlastných typov je:

typu typeName dataType 

Pri vytváraní vlastného typu a priraďovaní premennej môžete typ skontrolovať pomocou odrážať. Typ() ktorý prevezme premennú a vráti typ premennej.

importovať("fmt"
"reflektovať")
typu dva int// vytvorí typ "dva"
var číslo dva // premenná typu "dva"
fmt. Println (reflektovať. TypeOf (číslo))
instagram viewer

​​​

The číslo premenná je typ dva čo je celé číslo. Môžete ísť ďalej a vytvoriť viac vlastného typu.

Vytváranie štruktúr v Go

Štruktúry (štruktúry) sú plány pre objektovo orientované programovanie v Go. Štruktúry sú používateľom definované kolekcie polí.

Štruktúra môže obsahovať rôzne typy údajov vrátane zložených typov a metód.

Štruktúru môžete vytvoriť pomocou tejto syntaxe:

typu StructName štrukturovať {
// nejaký kód
}

Názvy štruktúr sú zvyčajne veľké a veľké, aby boli čitateľné.

Typ struct preberá názvy polí a dátové typy. Štruktúry môžu obsahovať akýkoľvek typ údajov Go vrátane vlastných typov.

typu Používateľ štrukturovať {
pole1 reťazec
pole2 int
mapa poľa mapa[reťazec]int
}

Typ štruktúry môžete vytvoriť priradením štruktúry ako premennej.

inštancia := Používateľ{
// nejaký kód
}

Inštancia štruktúry môže byť naplnená poľami pri vytváraní inštancie, ako je definované pri inicializácii, alebo môže byť nastavená na hodnotu null.

inštancia := Používateľ{
pole 1: "a reťazec lúka",
pole 2: 10,
mapa poľa: mapa[reťazec]int{},
}

Prístup k prvkom štruktúry

K poliam inštancie štruktúry môžete pristupovať pomocou bodkového zápisu poľa.

fmt. Println("Prístup k poľu hodnoty", instance.field2)

Výsledkom je pole2 inštancie inštancie struct.

Priraďovanie metód k štruktúram

Funkcie (metódy) sa priraďujú k typom štruktúr zadaním názvu prijímača a názvu štruktúry pred názvom funkcie, ako je uvedené v syntaxi nižšie.

func(názov štruktúry prijímača)functionName() {
// nejaký kód
}

Metóda functionName možno použiť iba na špecifikovanom type štruktúry.

Implementácia dedičnosti v Go

Dedičstvo je schopnosť objektov a typov pristupovať a používať metódy a atribúty iných objektov. Go nemá dedičnosť ako funkciu, ale môžete použiť kompozície. V Go znamená zloženie odkazovanie na superštruktúru (štruktúru, ktorá sa má zdediť) v podštruktúre poskytnutím názvu nadstavby podštruktúre.

Pomocou vyššie uvedeného príkladu štruktúry:

typu Používateľ štrukturovať {
pole1 reťazec
pole2 int
mapa poľa mapa[reťazec]int
}
typu Používateľ2 štrukturovať {
Používateľ
}

Prejdením cez Používateľ struct name do Používateľ2 štruktúra, Používateľ2 struct má prístup ku všetkým metódam a atribútom Používateľ struct na inštanciáciu okrem abstrakcie techniky sú použité.

syn := Používateľ2{
Používateľ{
pole 1: "dieťa",
pole 2: 0,
mapa poľa: nula,
},
}
fmt. Println (son.field2)

The syna vyššie uvedená premenná je inštanciou Používateľ2 štrukturovať. Ako je vidieť v príklade, syna premenná môže pristupovať a inštanciovať hodnoty typu Používateľ a používať ich.

Zapuzdrenie polí typu v Go

Zapuzdrenie, tiež známe ako „skrývanie informácií“, je a technika spájania metód a atribútov objektu do jednotiek na obmedzenie používania a prístupu okrem špecifikácií (umožnenie privilégií na čítanie/zápis).

Zapuzdrenie je implementované v Go pomocou exportovaných a neexportovaných identifikátorov v balíkoch.

Exportované identifikátory (čítanie a zápis)

Exportované identifikátory sa exportujú z ich definovaných balíkov a prístupu k iným programom. Pri použití veľkých písmen v identifikátore poľa sa exportuje pole fo.

typu Používateľ štrukturovať {
Pole1 reťazec
Pole2 int
FieldMap mapa[reťazec]int
}
typu Používateľ2 štrukturovať {
Používateľ
}

Neexportované identifikátory (iba na čítanie)

Neexportované identifikátory sa z definovaného balíka neexportujú a zvyčajne sa používajú malé písmená.

typu Používateľ štrukturovať {
pole1 reťazec
pole2 int
mapa poľa mapa[reťazec]int
}
typu Používateľ2 štrukturovať {
Používateľ
}

Koncept exportovaných a neexportovaných identifikátorov platí aj pre metódy objektu.

Polymorfizmus v Go

Polymorfizmus je technika používaná na poskytnutie rôznych foriem objektu kvôli flexibilite.

Go implementuje polymorfizmus pomocou rozhraní. Rozhrania sú vlastné typy používané na definovanie podpisov metód.

Deklarovanie rozhraní

Deklarovanie rozhraní je podobné ako deklarovanie štruktúr. Rozhrania sú však deklarované pomocou rozhranie kľúčové slovo.

typu Názov rozhrania rozhranie{
//niektoré metódy
}

Deklarácie rozhrania obsahujú metódy, ktoré majú byť implementované typmi štruktúr.

Implementácia rozhraní v štruktúrach

Typy, ktoré implementujú rozhranie, musia byť deklarované a potom metódy daného typu implementujú rozhranie.

// Rozhranie
typu Farba rozhranie{
Maľovanie () reťazec
}
// Deklarovanie štruktúr
typu zelená štrukturovať {
// nejaký kód špecifický pre štruktúru
}
typu Modrá štrukturovať {
// nejaký špecifický kód
}

Útržok kódu vyššie obsahuje a Farba rozhranie deklarované s a Maľovať metóda, ktorú má implementovať zelená a Modrá typy štruktúr.

Rozhrania sa implementujú priradením metód k typom štruktúr a potom pomenovaním metódy metódou rozhrania, ktorá sa má implementovať.

func(g zelená)Maľovať()reťazec {
vrátiť "maľované na zeleno"
}
func(b modrá)Maľovať()reťazec {
vrátiť "maľované na modro"
}

Metóda Paint je implementovaná typmi Green a Blue, ktoré teraz môžu volať a používať Maľovať metóda.

štetec := zelená{}
fmt. Println (štetec. Maľovať())

Na konzole je vytlačené „Vyfarbené na zeleno“, čím sa overí, že rozhranie bolo úspešne implementované.

Abstrahovanie polí v Go

Abstrakcia je proces skrývania nedôležitých metód a atribútov typu, čo uľahčuje zabezpečenie častí programu pred abnormálnym, neúmyselným použitím.

Go nemá abstrakciu implementovanú hneď od začiatku; môžete sa však prepracovať cez implementáciu abstrakcie pomocou rozhraní.

// ľudia môžu bežať
typu Ľudské rozhranie {
spustiť() reťazec
}
// Chlapec je človek s nohami
typu chlapec štrukturovať {
Nohy reťazec
}
// metóda na chlapcovi implementuje metódu run rozhrania Human
func(h chlapec)bežať()reťazec {
vrátiť h. Nohy
}

Vyššie uvedený kód vytvára a Ľudské rozhranie s a bežať rozhranie, ktoré vracia reťazec. The chlapec typ implementuje bežať metóda z Ľudské rozhranie a vráti reťazec pri vytváraní inštancie.

Jedným zo spôsobov implementácie abstrakcie je, že štruktúra zdedí rozhranie, ktorého metódy majú byť abstrahované. Existuje mnoho ďalších prístupov, ale tento je najjednoduchší.

typu Osoba štrukturovať {
názov reťazec
Vek int
Stav človeka
}
funcHlavná() {
osoba1 := &Chlapec{Nohy: "dve nohy"}
osoba2 := &Osoba{ // inštancia osoby
Meno: "amina",
Vek: 19,
Stav: osoba1,
}
fmt. Println (osoba. Status.run())
}

The Osoba štruktúra zdedí Ľudské a môže pristupovať ku všetkým jeho metódam pomocou premennej Postavenie dedí rozhranie.

Pri vytváraní inštancie odkazom (pomocou ukazovateľa), inštancia súboru Osoba štrukturovať Osoba2 odkazuje na inštanciu chlapec štrukturovať Osoba1 a získa prístup k metódam.

Týmto spôsobom môžete určiť konkrétne metódy, ktoré sa majú implementovať podľa typu.

OOP vs funkčné programovanie

Objektovo orientované programovanie je dôležitou paradigmou, pretože vám dáva väčšiu kontrolu nad vaším programom a podporuje opätovné použitie kódu spôsobmi, ktoré funkčné programovanie neumožňuje.

To neznamená, že funkčné programovanie nie je zlou voľbou, pretože funkčné programovanie môže byť užitočné a lepšie pre niektoré prípady použitia.

Čo je objektovo orientované programovanie? Základy vysvetlené laicky

Prečítajte si ďalej

zdieľamTweetujtezdieľamEmail

Súvisiace témy

  • Programovanie
  • Objektovo orientované programovanie

O autorovi

Ukeje Chukwuemeriwo Dobrota (Uverejnené 2 články)

Goodness je technický spisovateľ, backendový vývojár a dátový analytik, ktorý pri skúmaní tejto fascinujúcej oblasti zjednodušuje rôzne technologické témy.

Viac od Ukeje Chukwuemeriwo Dobrota

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Ak sa chcete prihlásiť na odber, kliknite sem