BREAKING NEWS
🚀 Kaweesha launched the new AI Tech Blog! 💻 Python & Java Tutorials are now live. 🎮 Game Development Guide: Building 2D Games with Godot. 🌐 Web Hosting secrets revealed - Check the latest post!

Python Sinhala - Part 09: සොෆ්ට්වෙයාර් ඉංජිනේරුවෙක් වෙන්න නම් මේක දැනගන්න! (OOP - Classes & Objects) 🏭🚗

Python Object Oriented Programming OOP Class and Object explanation Sinhala Tutorial Part 09

මෙච්චර කල් අපි කෝඩ් ලිව්වේ නිකන් පේළියෙන් පේළියටනේ (Procedural Programming). පොඩි පොඩි වැඩ වලට ඒක හොඳයි. හැබැයි ඔයාට "Facebook" වගේ ලොකු සිස්ටම් එකක් හදන්න ඕන වුනාම, දත්ත කෝටි ගාණක් එක්ක පටලගන්නේ නැතුව වැඩ කරන්න අමාරුයි.

අන්න ඒකට විසඳුම තමයි OOP (Object Oriented Programming). සරලවම කිව්වොත්, ලෝකේ තියෙන දේවල් (මිනිස්සු, වාහන, බැංකු ගිණුම්) ඒ විදියටම කෝඩ් එක ඇතුලේ නිර්මාණය කරන තාක්ෂණය තමයි මේ.

අද අපි බලමු කොහොමද Python වල Class සහ Object කියන යෝධයෝ දෙන්නා එක්ක වැඩ කරන්නේ කියලා. 👇

1. Blueprint vs House (සැලැස්ම සහ ගෙදර) 🏠

OOP තේරුම් ගන්න ලේසිම විදිය මේකයි. හිතන්න ඔයාට ගෙවල් 100ක් හදන්න ඕනේ.

1. Class (පැන්සලෙන් ඇඳපු ප්ලෑන් එක):
ගෙදරක තියෙන්න ඕන දේවල් (කාමර ගාණ, පාට, දොරවල්) ගැන විස්තරේ විතරයි මේකේ තියෙන්නේ. මේක ඇතුලේ කාටවත් ඉන්න බෑ. මේක නිකන් කොලයක් විතරයි.
2. Object (ඇත්තටම හදපු ගෙදර):
අර ප්ලෑන් එක (Class) බලලා, සිමෙන්ති ගඩොල් දාලා හදපු ඇත්ත ගෙදර. මේක ඇතුලේ මිනිස්සුන්ට ඉන්න පුළුවන්. එක ප්ලෑන් එකකින් අපිට ගෙවල් (Objects) ඕන තරම් හදන්න පුළුවන්.

2. Class එකක් ලියන හැටි ✍️

අපි "කාර්" එකක් හදන්න ප්ලෑන් (Class) එකක් ගහමු.

class Car:
    brand = "Toyota"
    color = "White"

    def drive(self):
        print("Beep Beep! වාහනේ ඉස්සරහට යනවා... 🚗💨")

දැන් අපි මේ ප්ලෑන් එකෙන් ඇත්ත කාර් (Objects) දෙකක් හදමු.

# Objects සෑදීම
car1 = Car()
car2 = Car()

# කාර් එකේ බ්රෑන්ඩ් එක බලමු
print(car1.brand) # Output: Toyota

# කාර් එක පදින්න කියමු
car1.drive() # Output: Beep Beep!...

3. The Magic of `__init__` & `self` 🪄

උඩ උදාහරණයේ හැම කාර් එකම "Toyota" සහ "White" වුනානේ. ඒක හරියන්නේ නෑ. අපිට ඕන එක එක කාර් එක එක පාටින් හදන්න. අන්න ඒකට තමයි Constructor (`__init__`) පාවිච්චි කරන්නේ.

මොකක්ද මේ `self`? 🤔
self කියන්නේ "මම" කියන එකයි. කාර් එකක් හදද්දි "මගේ පාට රතු", "මගේ බ්රෑන්ඩ් එක Honda" කියලා තමන්වම හඳුන්වා ගන්න තමයි self පාවිච්චි කරන්නේ. (Code එක ඇතුලේ self අනිවාර්යයි).
class Car:
    # මේක තමයි මැජික් ෆන්ක්ෂන් එක. Object එක හදන වෙලාවෙම මේක වැඩ කරනවා.
    def __init__(self, brand, color):
        self.brand = brand # මගේ බ්රෑන්ඩ් එක = එළියෙන් දුන්න නම
        self.color = color # මගේ පාට = එළියෙන් දුන්න පාට

    def show_info(self):
        print(f"මේක {self.color} පාට {self.brand} කාර් එකක්.")

දැන් බලන්න වෙනස:

car1 = Car("Toyota", "Red")
car2 = Car("Benz", "Black")

car1.show_info() # Output: මේක Red පාට Toyota කාර් එකක්.
car2.show_info() # Output: මේක Black පාට Benz කාර් එකක්.

Mega Project: Bank Account System 🏦💰

දැන් අපි OOP පාවිච්චි කරලා ඇත්ත බැංකු පද්ධතියක් හදමු. මේකෙන් සල්ලි දාන්න (Deposit), ගන්න (Withdraw) සහ බැලන්ස් බලන්න පුළුවන්.

💻 The Banking Code

class BankAccount:
    def __init__(self, name, balance):
        self.name = name
        self.balance = balance
        print(f"✅ {name} ගේ ගිණුම සෑදුනා! ආරම්භක මුදල: Rs.{balance}")

    # සල්ලි තැන්පත් කිරීම
    def deposit(self, amount):
        self.balance += amount
        print(f"💰 Rs.{amount} තැන්පත් කළා. නව ශේෂය: Rs.{self.balance}")

    # සල්ලි ගැනීම (withdraw)
    def withdraw(self, amount):
        if amount > self.balance:
            print("⚠️ ප්‍රමාණවත් මුදලක් නෑ! (Insufficient Funds)")
        else:
            self.balance -= amount
            print(f"💸 Rs.{amount} ලබා ගත්තා. ඉතිරි ශේෂය: Rs.{self.balance}")

# --- සිස්ටම් එක පාවිච්චි කරමු ---
# කවීෂට අලුත් එකවුන්ට් එකක් හදමු
kavisha_acc = BankAccount("Kavisha", 5000)

kavisha_acc.deposit(2000) # 2000ක් දානවා (දැන් 7000යි)
kavisha_acc.withdraw(1000) # 1000ක් ගන්නවා (දැන් 6000යි)
kavisha_acc.withdraw(10000) # 10000ක් ඉල්ලනවා (Error එන්න ඕනේ)

අවසාන වශයෙන්... 🏁

OOP කියන්නේ ටිකක් ගැඹුරු මාතෘකාවක් වුනාට, මේක තමයි ලොකු Project වල රහස. ඔයා මේ හදපු Bank Class එක තව දියුණු කරලා, එකවුන්ට් 100ක් වුනත් ලේසියෙන් පාලනය කරන්න පුළුවන්. අද අපි කතා කළේ මූලිකම හරිය විතරයි.

ඊළඟ කොටසින්: Python වලින් Desktop Apps (GUI) හදන්නේ කොහොමද? (Tkinter Basics) 🖥️🖱️
දිගටම KP Tech Gear සමඟ රැඳී සිටින්න! 👇

Author

About

Tech enthusiast, Python/Java Developer, and Gamer. Sharing knowledge about coding and modern technology.

Discussion

Kaweesha AI ×
Hello Kaweesha! I am ready to help with Python, Java, or Hosting queries. 🤖