برنامه نویسی شی گرا (OOP) یک مفهوم اساسی در مهندسی نرم افزار است که به مهندسان نرم افزار اجازه می دهد تا کد را به روشی سازمان یافته تر و ماژولارتر ساختار دهند.

پایتون با نحو واضح و مختصر خود یک زبان عالی برای یادگیری و اجرای اصول OOP است.

در این مقاله، با ساختن یک سیستم بانکداری آنلاین ساده، به اصول اولیه OOP در پایتون خواهیم پرداخت.

مروری بر مفاهیم OOP

قبل از شروع کدنویسی، بیایید مفاهیم کلیدی OOP را درک کنیم:

  • کلاس ها: کلاس ها نقشه هایی برای ایجاد اشیا هستند. آنها صفات (داده ها) و متدها (توابع) را تعریف می کنند که اشیاء آن کلاس خواهند داشت.
  • اشیاء: اشیا نمونه هایی از کلاس ها هستند. آنها موجودیت های دنیای واقعی را نشان می دهند و داده ها و رفتار را محصور می کنند.
  • وراثت: وراثت به یک کلاس (زیر کلاس) اجازه می دهد تا ویژگی ها و متدها را از کلاس دیگر (ابر کلاس) به ارث ببرد. استفاده مجدد از کد را ترویج می کند و از روابط سلسله مراتبی بین کلاس ها پشتیبانی می کند.
  • سازنده: یک سازنده ( __init__() ) نوع خاصی از متد است که به طور خودکار هنگام ایجاد یک شی از یک کلاس فراخوانی می شود. هدف اصلی آن، مقداردهی اولیه شی تازه ایجاد شده، تنظیم مقادیر اولیه برای ویژگی های آن یا انجام هر گونه کار راه اندازی ضروری است.

چگونه یک سیستم بانکداری آنلاین بسازیم

بیایید با ایجاد ساختار اساسی برای سیستم بانکداری آنلاین خود با استفاده از اصول OOP شروع کنیم.

چگونه یک کلاس و سازنده ایجاد کنیم

بیایید یک کلاس ایجاد کنیم و کلاس را با سازنده شروع کنیم:

class Account:
    def __init__(self, name, account_number, balance):
        self.name = name
        self.account_number = account_number
        self.balance = balance

در مثال بالا:

  • این class کلمه کلیدی یک را اعلام می کند Account کلاس
  • این __init__() متد سازنده ای است که با علامت زیرخط دوگانه ویژه در ابتدا و انتهای آن تعریف شده است.
  • self اشاره ای به نمونه کلاس است. این اولین پارامتر از تمام متدهای نمونه در پایتون است.
  • name نام صاحب حساب است.
  • account_number یک شناسه منحصر به فرد برای حساب پس انداز است، و balance پارامترهایی هستند که به سازنده منتقل می شوند.
  • داخل سازنده self.name، self.account_number، و self.balance ویژگی های کلاس هستند Account که با مقادیر مقداردهی اولیه می شوند name، account_number و balance، به ترتیب.
پیشنهاد می‌کنیم بخوانید:  ابزارهای تکرار پایتون: filter()، islice()، map() و zip()

سازنده ها می توانند وظایف مختلفی مانند مقداردهی اولیه ویژگی ها، باز کردن اتصالات، بارگذاری داده ها و موارد دیگر را انجام دهند. آنها برای اطمینان از اینکه اشیاء به درستی تنظیم شده اند و به محض ایجاد آنها برای استفاده آماده هستند، ضروری هستند.

روش ایجاد متدها (توابع)

کار بعدی نوشتن متدهای مختلف برای ما است Account کلاس کاربران باید بتوانند واریز و برداشت کنند.

روش ایجاد روش سپرده گذاری

    def deposit(self, amount):
        self.balance += amount
        print(f"{self.name} Deposited {amount} $. Current balance is: {self.balance}")

در مثال بالا:

  • این deposit این روش به کاربران اجازه می دهد تا وجوهی را به حساب خود اضافه کنند.
  • روش یک پارامتر اضافی می گیرد amount، که مبلغی است که باید واریز شود.
  • در داخل روش، amount با استفاده از به تراز جاری اضافه می شود self.balance += amount.
  • پیامی چاپ می شود که نام سپرده گذار و مبلغ واریز شده را نشان می دهد و موجودی به روز می شود.

روش ایجاد روش برداشت

    def withdraw(self, amount):
        if self.balance >= amount:
            self.balance -= amount
            print(f"{self.name} Withdrew {amount} $. Current balance is: {self.balance}")
        else:
            print("You don't have enough funds to withdraw.")

در مثال بالا:

  • این withdraw این روش به کاربران اجازه می دهد وجوه خود را از حساب خود برداشت کنند.
  • روش همچنین یک amount پارامتر که مقداری است که کاربر ما می خواهد برداشت کند.
  • روش بررسی می کند که آیا موجودی حساب (self.balance) بزرگتر یا برابر با مبلغی است که کاربر ما می خواهد برداشت کند.
  • اگر موجودی کافی باشد، مبلغ برداشت با استفاده از موجودی حذف می شود self.balance -= amount.
  • اگر موجودی کافی نیست، پیامی با این مضمون که “وجوه کافی برای برداشت ندارید.” برای کاربر چاپ می شود.
پیشنهاد می‌کنیم بخوانید:  any() و all() در پایتون با مثال

وراثت چگونه کار می کند

با توضیح وراثت در بالا، بیایید ببینیم که چگونه در کد کار می کند. ما قصد داریم کلاسی بسازیم که به ارث می برد Account کلاس

توجه داشته باشید که Account کلاس کلاس شام است، در حالی که Savings_Account کلاس یک زیر کلاس است که به عنوان کلاس فرزند نیز شناخته می شود.

class Savings_Account(Account):
    def __init__(self, name, account_number, balance, interest_rate):
        super().__init__(name, account_number, balance)
        self.interest_rate = interest_rate

در کد بالا:

  • این __init__ متد سازنده برای Savings_Account کلاس
  • چهار پارامتر را می پذیرد: name که نام صاحب حساب است، account_number، که یک شناسه منحصر به فرد برای حساب پس انداز است، balance، که موجودی اولیه حساب است و interest_rate، که نرخ بهره سالانه (به صورت اعشاری) برای حساب است.
  • این super().__init__(name, account_number, balance) خط سازنده کلاس والد (Account) برای مقداردهی اولیه حساب و موجودی.
  • این self.interest_rate = interest_rate خط نرخ بهره مخصوص حساب پس انداز را تعیین می کند. ارثی نیست

روش ایجاد An add_interest روش

def add_interest(self):
    interest = self.balance * self.interest_rate
    self.deposit(interest)

در مثال بالا:

  • این add_interest روش محاسبه و به مانده حساب اضافه می کند.
  • این روش سود را با ضرب موجودی جاری محاسبه می کند (self.balance) با نرخ بهره (self.interest_rate).
  • نتیجه در ذخیره می شود interest متغیر.
  • در نهایت، self.deposit(interest) خط تماس می گیرد deposit روش (تعریف شده در والد Account کلاس) برای اضافه کردن مبلغ سود به مانده حساب.

روش ایجاد و استفاده از اشیاء

کلاس شما فقط یک الگو است. شما باید یک شی بسازید تا کلاس شما کار کند.

حال، بیایید از کلاس های خود اشیاء ایجاد کنیم و با آنها تعامل کنیم.

account1 = Account("John Doe", "123456", 1000)
account1.deposit(500)
account1.withdraw(200)
print()

savings_account = Savings_Account("John Doe", "789012", 2000, 0.05)
savings_account.deposit(1000)
savings_account.add_interest()
savings_account.withdraw(500)
savings_account.withdraw(1000)
نمونه ای از کلاس حساب

در کد بالا:

  • ما یک نمونه ایجاد کردیم account1 از Account کلاس و عملیات واریز و برداشت انجام شده است.
  • به طور مشابه، ما یک نمونه ایجاد کردیم savings_account از Savings_Account کلاس و عملیات نشان داده شده سپرده، بهره اضافه، و برداشت.

نتیجه

برنامه نویسی شی گرا پارادایم قدرتمندی است که به مهندسان نرم افزار اجازه می دهد کدی بنویسند که قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر باشد.

سادگی پایتون آن را به یک انتخاب عالی برای یادگیری و پیاده سازی مفاهیم OOP تبدیل می کند.

با ساختن یک سیستم بانکداری آنلاین ساده، مفاهیم اولیه کلاس‌ها، اشیاء و وراثت در پایتون را به شما نشان می‌دهم.

کد نویسی مبارک!