Sobes.tech
Middle

Go tilida ob'ektga yo'naltirilgan dasturlash (OOP) konseptlari qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Go'da boshqa tillarda (Java, C++) keng tarqalgan klasslar, meros va virtual metodlar kabi an'anaviy tushunchalar mavjud emas. Ob'ektga yo'naltirilgan dasturlash quyidagi usullar bilan amalga oshiriladi:

  • Strukturalar (Structs): Ma'lumotlarni (maydonlarni) guruhlaydi.
    type Person struct {
    	Name string
    	Age  int
    }
    
  • Metodlar: Birga bog'langan qabul qiluvchi (struktur yoki boshqa tur). Strukturalarga xususiyatlar qo'shishga imkon beradi.
    func (p Person) Greet() string {
    	return "Hello, my name is " + p.Name
    }
    
    • Qabul qiluvchi qiymat bilan: Metod strukturaning nusxasi bilan ishlaydi. Ichki o'zgarishlar asl struktura ta'sir qilmaydi.
    • Qabul qiluvchi ko'rsatkich bilan: Metod asl struktura orqali ko'rsatkich bilan ishlaydi. Ichki o'zgarishlar asl struktura ta'sir qiladi.
  • Interfeyslar: Bir tur uchun metodlar imzolarining to'plamini belgilaydi. "O'rdak tipini" (duck typing) orqali polimorfizmni ta'minlaydi. Bir tur, agar uning barcha metodlarini amalga oshirsa, interfeysni amalga oshiradi.
    type Greeter interface {
    	Greet() string
    }
    
    func SayHello(g Greeter) string {
    	return g.Greet()
    }
    
  • Qayta joylashtirish (Embedding): Bir struktura boshqa struktura yoki interfeysni "joylashtirish" imkonini beradi. Bu an'anaviy meros emas, balki kompozitsiya. Joylashtirilgan struktura nomsiz maydon bo'lib, uning maydonlari va metodlariga to'g'ridan-to'g'ri murojaat qilish mumkin.
    type Employee struct {
    	Person // joylashtirilgan struktura
    	ID string
    }
    
    // Employee endi Name va Age maydonlariga ega va Greet() metodini chaqirish mumkin
    
    e := Employee{
    	Person: Person{Name: "Alice", Age: 30},
    	ID:     "E123",
    }
    fmt.Println(e.Greet()) // Personning Greet() metodini Employee orqali chaqirish
    
OOP Kontseptsiyasi Go'da amalga oshirilishi Izohlar
Klasslar Structs Aniq class kalit so'zi mavjud emas
Inkapsulyatsiya Eksport qilinadigan (katta harf bilan boshlanadi) / eksport qilinmaydigan (kichik harf bilan boshlanadi) maydonlar/metodlar Paket darajasida ko'rinishni boshqarish
Meros Embedding Hierarxik meros o'rniga kompozitsiya
Polimorfizm Interfeyslar Duck typing, interfeyslarning noaniq amalga oshirilishi