Objektorientētā programmēšana (OOP) ir programmēšanas paradigma, kuras pamatā ir objekti kā centrālais jēdziens. OOP kods tiek formatēts, pamatojoties uz funkcionalitāti, nodrošinot koda uzturēšanu, abstrakciju, atkārtotu izmantošanu, efektivitāti un daudzas objekta funkcionalitātes.
Objektam ir atribūti (mainīgie), kas nosaka tā raksturlielumus, īpašības un metodes (funkcijas), kas nosaka objekta darbības (procedūras) un uzvedību.
Objektorientētā programmēšana programmā Go atšķiras no citām valodām. Uz objektu orientētas koncepcijas tiek ieviestas programmā Go, izmantojot struktūras, saskarnes un pielāgotus veidus.
Veidu pielāgošana pakalpojumā Go
Pielāgotie veidi ļauj viegli grupēt un identificēt līdzīgu kodu atkārtotai izmantošanai.
Pielāgotu veidu deklarēšanas kods ir:
veids typeName dataType
Izveidojot pielāgotu veidu un piešķirot mainīgo, varat pārbaudīt veidu, izmantojot atspoguļot. TypeOf() kas uzņem mainīgo un atgriež mainīgā veidu.
imports("fmt"
"atspoguļot")
veids divi starpt// izveido veidu "divi"
var numur divi // "divi" tipa mainīgais
fmt. Println (atspoguļot. TypeOf (skaitlis))
The numuru mainīgais ir veids divi kas ir vesels skaitlis. Varat doties tālāk, lai izveidotu vairāk pielāgotā veida.
Struktūru izveide lietotnē Go
Struktūras (struktūras) ir uz objektu orientētas programmēšanas projekti Go. Struktūras ir lietotāja definētas lauku kolekcijas.
Struktūra var saturēt dažādus datu tipus, tostarp savienojumu veidus un metodes.
Varat izveidot struktūru, izmantojot šo sintaksi:
veids Struktūras nosaukums struktūra {
// kāds kods
}
Parasti struktūru nosaukumi lasāmības labad parasti tiek rakstīti ar lielajiem burtiem un kamieļa burtiem.
Struktūras tips uzņem lauku nosaukumus un datu tipus. Struktūrām var būt jebkura veida Go datu tips, tostarp pielāgotie veidi.
veids Lietotājs struktūra {
lauks1 virkne
lauks2 starpt
lauka karte karte[virkne]starpt
}
Struktūras tipu var izveidot, piešķirot struktūru kā mainīgo.
instance := Lietotājs{
// kāds kods
}
Struktūras gadījumu var aizpildīt ar instantiācijas laukiem, kā noteikts inicializācijas laikā, vai iestatīt uz nulli.
instance := Lietotājs{
lauks1: "a virkne lauks",
lauks2: 10,
lauka karte: karte[virkne]starpt{},
}
Piekļuve struktūras elementiem
Struktūras instances laukiem var piekļūt, izmantojot lauka punktu apzīmējumu.
fmt. Println("Piekļuve vērtības laukam", instance.field2)
Tas izvada lauks2 no instantierētās struktūras instances.
Metožu piešķiršana konstrukcijām
Funkcijas (metodes) tiek piešķirtas struktūru veidiem, norādot uztvērēja nosaukumu un struktūras nosaukumu pirms funkcijas nosaukuma, kā parādīts sintaksē tālāk.
func(uztvērēja struktūras nosaukums)funkcijas nosaukums() {
// kāds kods
}
Metode funkcijas nosaukums var izmantot tikai norādītajam struktūras veidam.
Mantojuma ieviešana programmā Go
Mantojums ir objektu un tipu spēja piekļūt un izmantot citu objektu metodes un atribūtus. Go nav mantojuma funkcijas, bet jūs varat izmantot kompozīcijas. Programmā Go kompozīcija ietver atsauci uz virsstruktūru (mantojamo struktūru) apakšstruktūrā, norādot apakšstruktūrai virsbūves nosaukumu.
Izmantojot iepriekš minēto struktūras piemēru:
veids Lietotājs struktūra {
lauks1 virkne
lauks2 starpt
lauka karte karte[virkne]starpt
}
veids Lietotājs2 struktūra {
Lietotājs
}
Paejot garām Lietotājs struktūras nosaukumu Lietotājs2 struktūra, Lietotājs2 struct var piekļūt visām metodēm un atribūtiem Lietotājs instantiācijas struktūra, izņemot abstrakcijas metodes.
dēls := Lietotājs2{
Lietotājs{
lauks1: "mazulis",
lauks2: 0,
lauka karte: nulle,
},
}
fmt. Println (son.field2)
The dēls Mainīgais iepriekš ir instantiācija Lietotājs2 struktūra. Kā redzams piemērā, dēls mainīgais var piekļūt un izveidot Lietotāja tipa vērtības un tās izmantot.
Tipa lauku iekapsulēšana programmā Go
Iekapsulēšana, kas pazīstama arī kā “informācijas slēpšana”, ir a paņēmiens objekta metožu un atribūtu apvienošanai vienībās lai ierobežotu lietošanu un piekļuvi, izņemot norādītos (iespējojot lasīšanas/rakstīšanas tiesības).
Iekapsulēšana tiek ieviesta programmā Go, izmantojot eksportētos un neeksportētos identifikatorus pakotnēs.
Eksportētie identifikatori (lasīt un rakstīt)
Eksportētie identifikatori tiek eksportēti no to definētajām pakotnēm un piekļuves citām programmām. Lielo burtu ievadīšana lauka identifikatorā tiek eksportēts lauks fo.
veids Lietotājs struktūra {
1. lauks virkne
2. lauks starpt
Lauka karte karte[virkne]starpt
}
veids Lietotājs2 struktūra {
Lietotājs
}
Neeksportēti identifikatori (tikai lasāmi)
Neeksportētie identifikatori netiek eksportēti no definētās pakotnes un parasti tiek lietoti ar mazajiem burtiem.
veids Lietotājs struktūra {
lauks1 virkne
lauks2 starpt
lauka karte karte[virkne]starpt
}
veids Lietotājs2 struktūra {
Lietotājs
}
Eksportēto un neeksportēto identifikatoru jēdziens attiecas arī uz objekta metodēm.
Polimorfisms Go
Polimorfisms ir paņēmiens, ko izmanto, lai objektam piešķirtu dažādas formas elastības nodrošināšanai.
Go īsteno polimorfismu, izmantojot saskarnes. Saskarnes ir pielāgoti veidi, ko izmanto, lai definētu metožu parakstus.
Saskarņu deklarēšana
Interfeisu deklarēšana ir līdzīga konstrukciju deklarēšanai. Tomēr saskarnes tiek deklarētas, izmantojot saskarne atslēgvārds.
veids Interfeisa nosaukums saskarne{
//dažas metodes
}
Interfeisa deklarācijās ir ietvertas metodes, kas jāīsteno, izmantojot struktūru tipus.
Saskarņu ieviešana struktūrās
Ir jādeklarē veidi, kas ievieš saskarni, pēc tam tipa metodes ievieš saskarni.
// Interfeiss
veids Krāsa saskarne{
Krāsa () virkne
}
// Struktūru deklarēšana
veids Zaļš struktūra {
// kāds struktūrai specifisks kods
}
veids Zils struktūra {
// kāds konkrēts kods
}
Iepriekš minētajā koda fragmentā ir a Krāsa saskarne deklarēta ar a Krāsa metode, kas jāievieš Zaļš un Zils konstrukciju veidi.
Saskarnes tiek ieviestas, piešķirot metodes struktūru tipiem un pēc tam nosaucot metodi pēc ieviešamās saskarnes metodes.
func(g zaļš)Krāsa()virkne {
atgriezties "krāsots zaļā krāsā"
}
func(b zils)Krāsa()virkne {
atgriezties "krāsots zilā krāsā"
}
Krāsošanas metodi ievieš zaļais un zilais tips, kas tagad var izsaukt un izmantot Krāsa metodi.
ota := zaļa{}
fmt. Println (ota. Krāsa())
Uz konsoles tiek uzdrukāts uzraksts “Nokrāsots zaļā krāsā”, apstiprinot, ka saskarne ir veiksmīgi ieviesta.
Abstrahēšanas lauki Go
Abstrakcija ir kāda veida nesvarīgu metožu un atribūtu slēpšanas process, atvieglojot programmas daļu aizsardzību pret neparastu, neparedzētu izmantošanu.
Go nav abstrakcija ieviesta uzreiz; tomēr, izmantojot saskarnes, varat ieviest abstrakciju.
// cilvēki var skriet
veids Cilvēks saskarne {
palaist () virkne
}
// Puika ir cilvēks ar kājām
veids Puika struktūra {
Kājas virkne
}
// metode zēnam īsteno cilvēka saskarnes palaišanas metodi
func(h zēns)palaist()virkne {
atgriezties h. Kājas
}
Iepriekš minētais kods izveido a Cilvēks saskarne ar a palaist interfeiss, kas atgriež virkni. The Puika tips īsteno palaist metode Cilvēks interfeisu un atgriež virkni instantiācijā.
Viens no veidiem, kā īstenot abstrakciju, ir likt struktūrai mantot saskarni, kuras metodes ir abstrahējamas. Ir daudzas citas pieejas, taču šī ir vienkāršākā.
veids Persona struktūra {
Vārds virkne
Vecums starpt
Cilvēka statuss
}
funcgalvenais() {
persona1 := &Zēns{Kājas: "divas kājas"}
persona2 := &Persona{ // personas gadījums
Nosaukums: "amīna",
Vecums: 19,
Statuss: persona1,
}
fmt. Println (person. Status.run())
}
The Persona struktūra manto Cilvēks saskarni un var piekļūt visām tā metodēm, izmantojot mainīgo Statuss interfeisa mantošana.
Instantiācijā ar atsauci (izmantojot rādītāju), gadījuma gadījums Persona struktūra Persona2 atsaucas uz gadījumu Puika struktūra Persona1 un iegūst piekļuvi metodēm.
Tādā veidā jūs varat norādīt konkrētas metodes, kas jāievieš pēc veida.
OOP pret funkcionālo programmēšanu
Objektorientētā programmēšana ir svarīga paradigma, jo tā sniedz jums lielāku kontroli pār programmu un veicina koda atkārtotu izmantošanu tā, kā funkcionālā programmēšana to nedara.
Tas nepadara funkcionālo programmēšanu par sliktu izvēli, jo funkcionālā programmēšana var būt noderīga un labāka dažos lietošanas gadījumos.
Kas ir objektorientētā programmēšana? Pamati, kas izskaidroti neprofesionāļu terminos
Lasiet Tālāk
Saistītās tēmas
- Programmēšana
- Objektorientētā programmēšana
Par autoru
Goodness ir tehnisks rakstnieks, aizmugursistēmas izstrādātājs un datu analītiķis, kurš, pētot šo aizraujošo jomu, vienkāršo dažādas tehnoloģiju tēmas.
Abonējiet mūsu biļetenu
Pievienojieties mūsu biļetenam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu