<jupyter_start><jupyter_text>HomeWork Weekly (OOP) 3-6 Python > Python adalah bahasa pemrograman multi-paradigma. Artinya, mendukung pendekatan pemrograman yang berbeda. Salah satu pendekatan populer untuk memecahkan masalah pemrograman adalah dengan membuat objek.  Ini dikenal sebagai Pemrograman Berorientasi Objek (OOP). Suatu objek memiliki dua karakteristik: atribut dan method  Class Kelas adalah cetak biru untuk objek.Kita dapat menganggap kelas sebagai sketsa suatu benda dengan label dan karakteristik suatu benda. Ini berisi semua detail tentang nama, warna, ukuran dll. Dalam kelas, Kita dapat membuat tipe data baru selain tipe data defaut seperti int, String, boolean, dll. Berdasarkan uraian ini, kita dapat mempelajari tentang burung beo. Di sini, burung beo adalah obyek.Contoh lain adalah bilangan kompleks, bilangan kompleks tidak cocok apabila memakai tipe data Integer maupun String. Oleh karena itu didalam class dapat membuat Tipe data baru, yaitu bilangan kompleks.Berikut implementasi dalam syntax :<jupyter_code>class Bilkom:
    pass<jupyter_output><empty_output><jupyter_text>Object    Adalah instance dari sebuah kelas. Ketika kelas didefinisikan, hanya deskripsi untuk objek yang ditentukan. Oleh karena itu, tidak ada memori atau penyimpanan yang dialokasikan.   Contoh untuk objek kelas Bilkom (bilangan komponen) :<jupyter_code>data1 = Bilkom()<jupyter_output><empty_output><jupyter_text>Disini data1 merupakan objek kelas Bilkom  Cara membangun class dan object dalam kelas Bilkom<jupyter_code>class Bilkom:
    def __init__(self, a, b):
        self.real = a
        self.im = b
        # return data
    
    def display(self):
        print(self.real, "+", self.im, "i")
        # temp = str(self.real) + '+' +str(self.im) + "i"
        # return temp
data = Bilkom(4, 6)
data.display()
print(type(data))   #mengecek tipe data bilangan komponen<jupyter_output>4 + 6 i
<class '__main__.Bilkom'><jupyter_text>Method Metode adalah fungsi yang didefinisikan di dalam tubuh kelas. Mereka digunakan untuk mendefinisikan perilaku suatu objek. Implementasi Method dalam class Bilkom<jupyter_code>class Bilkom:
    def __init__(self, a, b):
        self.real = a
        self.im = b
        # return data
    
    def display(self):
        print(self.real, "+", self.im, "i")
        # temp = str(self.real) + '+' +str(self.im) + "i"
        # return temp

    def __str__(self):
        return str(self.real) + " + " +str(self.im) + " i "
data = Bilkom(4, 6)
data.display()<jupyter_output>4 + 6 i<jupyter_text>Di dalam syntax tersebut, function display dinamakan method apabila dalam OOP, object melakukan instance dan memanggil method display untuk menampilkan bilangan kompleks.  CONSTRUCTOR Metode pertama __init __ () adalah metode khusus, yang disebut konstruktor kelas atau metode inisialisasi yang dipanggil Python ketika membuat instance baru dari kelas ini. Implementasi Syntax constructor dalam class Bilkom<jupyter_code>def __init__(self, a, b):
        self.real = a
        self.im = b
        # return data
class Bilkom:
    def __init__(self, a, b):
        self.real = a
        self.im = b
        # return data
    
    def display(self):
        print(self.real, "+", self.im, "i")
        # temp = str(self.real) + '+' +str(self.im) + "i"
        # return temp

    def __str__(self):
        return str(self.real) + " + " +str(self.im) + " i "
data = Bilkom(5, 3)
data.display()<jupyter_output>5 + 3 i<jupyter_text>Overriding Methods Adalah ketika suatu class child yang turunan dari class parent. mempunyai beberapa method dengan nama yang sama dengan yang dipunya si parent, tetapi dengan implementasi yang berbeda.<jupyter_code>class Bilkom:
    def __init__(self, a, b):
        self.real = a
        self.im = b
        # return data
    
    def display(self):
        print(self.real, "+", self.im, "i")

    def __str__(self):
        temp = str(self.real) + '+' +str(self.im) + "i"
        return temp

    # Step 1
    def pertambahan(self, obj1, obj2):
        self.real =obj1.real + obj2.real
        self.im = obj1.im + obj2.im

    # Step 2
    def addKompleks(self, obj):
        a = self.real + obj.real
        b = self.im + obj.im
        return Bilkom(a, b)

# # Dengan sekali pemanggilan dengan menggunakan method addKompleks()
data1 = Bilkom(4,6)
data2 = Bilkom(2,5)
jumlah = data1.addKompleks(data2)
print(jumlah)
# data1.display()
# data2.display()

print("_______")

# mengoperasikan bilangan komponen dengan override 
data = Bilkom(4,6)
data1 = Bilkom(3,2)
data1.pertambahan(data, data1)
print(data1)<jupyter_output>6+11i
_______
7+8i<jupyter_text>Implementasi Override dalam class Bilkom<jupyter_code>def __str__(self):
        temp = str(self.real) + '+' +str(self.im) + "i"
        return temp<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09454394002498959, 'fraction_numerical': 0.009787588504789672, 'mean_word_length': 3.604985618408437, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '333671', 'license': 'Apache-2.0', 'n_tokens_mistral': 1822, 'n_tokens_neox': 1761, 'n_words': 489, 'path': 'Minggu 4-6/Class.ipynb', 'repo_name': 'DendyJM/Catatan_Struktur_Data', 'size': '4802'}