Sobes.tech
Intern

Getter ва setter чист?

sobes.tech AI

Ҷавоб аз AI

Геттер (getter) ва сеттер (setter) — ин махсус усулҳо мебошанд, ки дар барномасозии объектӣ-равона истифода мешаванд барои дастрасӣ ва тағир додани арзишҳои майдонҳои хусусӣ (ё ҳимояшуда) дар синф.

Геттер:

  • Дастрасии назоратшударо барои хондани арзиши майдон таъмин мекунад.
  • Одатан ном дорад, ки бо get оғоз мешавад (масалан, getName()).
  • Мумкин аст, ки пеш аз баргардондани арзиш, амалҳои иловагӣ анҷом диҳад (масалан, форматсозӣ ё тасдиқ кардан).

Сеттер:

  • Дастрасии назоратшударо барои навиштани арзиши нав ба майдон таъмин мекунад.
  • Одатан ном дорад, ки бо set оғоз мешавад (масалан, setName()).
  • Мумкин аст, ки пеш аз таъин кардани арзиш, валидацияи маълумотро анҷом диҳад.
  • Имкон медиҳад, ки логика дар вақти тағир додани арзиши майдон амалӣ карда шавад (масалан, огоҳсозӣ ба дигар қисмҳои барнома).

Масалан дар Python:

class Person:
    def __init__(self, name):
        self._name = name # Майдони хусусӣ

    # Геттер
    def get_name(self):
        return self._name

    # Сеттер
    def set_name(self, new_name):
        if isinstance(new_name, str) and len(new_name) > 0:
            self._name = new_name
        else:
            print("Номи нодуруст")

# Истифода
person = Person("Alice")
print(person.get_name()) # Истифодаи геттер

person.set_name("Bob") # Истифодаи сеттер
print(person.get_name())

person.set_name("") # Мисоли истифодаи сеттер бо валидация

Истифодаи геттерҳо ва сеттерҳо ба инкапсулятсия мусоидат мекунад, имкон медиҳад, ки дастрасӣ ва тағир додани маълумот дар дохили объект идора карда шавад, ва ин ба сохтор ва нигоҳдории беҳтари коди кӯмак мекунад.