Object Oriented Python - Pendahuluan

Bahasa pemrograman muncul secara konstan, dan begitu pula metodologi yang berbeda. Pemrograman berorientasi objek adalah salah satu metodologi yang telah menjadi sangat populer selama beberapa tahun terakhir.

Bab ini membahas tentang fitur-fitur bahasa pemrograman Python yang menjadikannya sebagai bahasa pemrograman berorientasi objek.

Skema Klasifikasi Pemrograman Bahasa

Python dapat dikarakterisasi di bawah metodologi pemrograman berorientasi objek. Gambar berikut menunjukkan karakteristik berbagai bahasa pemrograman. Amati fitur Python yang membuatnya berorientasi objek.

Kelas Bahasa Kategori Bahasa
Paradigma Pemrograman Prosedural C, C ++, C #, Objective-C, java, Go
Scripting CoffeeScript, JavaScript, Python, Perl, Php, Ruby
Fungsional Clojure, Eralang, Haskell, Scala
Kelas Kompilasi Statis C, C ++, C #, Objective-C, java, Go, Haskell, Scala
Dinamis CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang
Ketik Kelas Kuat C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala
Lemah C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php
Kelas Memori Dikelola Lainnya
Tidak terkelola C, C ++, C #, Objective-C

Apa itu Pemrograman Berorientasi Objek?

Object Orientedberarti diarahkan ke objek. Dengan kata lain, itu berarti secara fungsional diarahkan pada pemodelan objek. Ini adalah salah satu dari banyak teknik yang digunakan untuk memodelkan sistem yang kompleks dengan mendeskripsikan kumpulan objek yang berinteraksi melalui data dan perilakunya.

Python, sebuah pemrograman Berorientasi Objek (OOP), adalah cara pemrograman yang berfokus pada penggunaan objek dan kelas untuk merancang dan membangun aplikasi .. Pilar utama Pemrograman Berorientasi Objek (OOP) adalah Inheritance, Polymorphism, Abstraction, iklan Encapsulation.

Object Oriented Analysis (OOA) adalah proses memeriksa masalah, sistem atau tugas dan mengidentifikasi objek dan interaksi di antara mereka.

Mengapa Memilih Pemrograman Berorientasi Objek?

Python dirancang dengan pendekatan berorientasi objek. OOP menawarkan keuntungan sebagai berikut -

  • Menyediakan struktur program yang jelas, yang memudahkan untuk memetakan masalah dunia nyata dan solusinya.

  • Memfasilitasi pemeliharaan dan modifikasi kode yang ada dengan mudah.

  • Meningkatkan modularitas program karena setiap objek ada secara independen dan fitur baru dapat ditambahkan dengan mudah tanpa mengganggu yang sudah ada.

  • Menyajikan kerangka kerja yang baik untuk pustaka kode di mana komponen yang disediakan dapat dengan mudah diadaptasi dan dimodifikasi oleh pemrogram.

  • Memberikan kode dapat digunakan kembali

Pemrograman Berorientasi Objek vs Prosedural

Pemrograman berbasis prosedural berasal dari pemrograman struktural berdasarkan konsep functions/procedure/routines. Sangat mudah untuk mengakses dan mengubah data dalam pemrograman berorientasi prosedural. Di sisi lain, Pemrograman Berorientasi Objek (OOP) memungkinkan dekomposisi masalah menjadi sejumlah unit yang disebutobjectsdan kemudian membangun data dan fungsi di sekitar objek ini. Ini lebih menekankan pada data daripada prosedur atau fungsi. Juga di OOP, data disembunyikan dan tidak dapat diakses oleh prosedur eksternal.

Tabel pada gambar berikut menunjukkan perbedaan utama antara pendekatan POP dan OOP.

Perbedaan antara Prosedural Oriented Programming (POP) vs. Pemrograman Berorientasi Objek (OOP).

Pemrograman Berorientasi Prosedural Pemrograman berorientasi objek
Berdasarkan Di Pop, seluruh fokus ada pada data dan fungsi Ups didasarkan pada skenario dunia nyata. Seluruh program dibagi menjadi beberapa bagian kecil yang disebut objek
Dapat digunakan kembali Penggunaan kembali Kode Terbatas Kode digunakan kembali
Pendekatan Pendekatan atas ke bawah Desain Berfokus pada Objek
Akses penentu Tidak ada Publik, pribadi, dan Dilindungi
Perpindahan data Data dapat bergerak bebas dari fungsi ke fungsi dalam sistem Di Ups, data dapat berpindah dan berkomunikasi satu sama lain melalui fungsi anggota
Akses data Dalam pop, sebagian besar fungsi menggunakan data global untuk berbagi yang dapat diakses secara bebas dari satu fungsi ke fungsi lainnya di sistem Di Ups, data tidak dapat bergerak bebas dari satu metode ke metode lainnya, dapat disimpan secara publik atau pribadi sehingga kami dapat mengontrol akses data
Menyembunyikan Data Dalam pop, begitu spesifik cara untuk menyembunyikan data, jadi sedikit kurang aman Ini menyediakan penyembunyian data, jauh lebih aman
Kelebihan beban Tidak memungkinkan Fungsi dan Kelebihan Operator
Contoh-Bahasa C, VB, Fortran, Pascal C ++, Python, Java, C #
Abstraksi Menggunakan abstraksi pada tingkat prosedur Menggunakan abstraksi pada level kelas dan objek

Prinsip Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek (OOP) didasarkan pada konsep objects daripada tindakan, dan databukan logika. Agar bahasa pemrograman menjadi berorientasi objek, ia harus memiliki mekanisme untuk memungkinkan bekerja dengan kelas dan objek serta implementasi dan penggunaan prinsip dan konsep berorientasi objek yang mendasar yaitu pewarisan, abstraksi, enkapsulasi, dan polimorfisme.

Mari kita pahami masing-masing pilar pemrograman berorientasi objek secara singkat -

Enkapsulasi

Properti ini menyembunyikan detail yang tidak perlu dan membuatnya lebih mudah untuk mengelola struktur program. Implementasi dan status setiap objek tersembunyi di balik batas yang ditentukan dengan baik dan menyediakan antarmuka yang bersih dan sederhana untuk bekerja dengannya. Salah satu cara untuk melakukannya adalah dengan membuat data menjadi pribadi.

Warisan

Warisan, juga disebut generalisasi, memungkinkan kita untuk menangkap hubungan hierarki antara kelas dan objek. Misalnya, 'buah' adalah generalisasi dari 'jeruk'. Warisan sangat berguna dari perspektif penggunaan kembali kode.

Abstraksi

Properti ini memungkinkan kita untuk menyembunyikan detail dan hanya menampilkan fitur penting dari sebuah konsep atau objek. Misalnya, seseorang yang mengemudikan skuter tahu bahwa saat menekan klakson, suara akan dikeluarkan, tetapi dia tidak tahu tentang bagaimana sebenarnya suara dihasilkan saat klakson ditekan.

Polimorfisme

Polimorfisme berarti banyak bentuk. Artinya, suatu hal atau tindakan hadir dalam berbagai bentuk atau cara. Salah satu contoh polimorfisme yang baik adalah overloading konstruktor di kelas.

Python Berorientasi Objek

Inti dari pemrograman Python adalah object dan OOP, namun Anda tidak perlu membatasi diri untuk menggunakan OOP dengan mengatur kode Anda ke dalam kelas. OOP menambah filosofi desain Python secara keseluruhan dan mendorong cara yang bersih dan pragmatis untuk pemrograman. OOP juga memungkinkan penulisan program yang lebih besar dan kompleks.

Modul vs. Kelas dan Objek

Modul seperti "Kamus"

Saat mengerjakan Modul, perhatikan poin-poin berikut -

  • Modul Python adalah paket untuk merangkum kode yang dapat digunakan kembali.

  • Modul berada dalam folder dengan file __init__.py mengajukan di atasnya.

  • Modul berisi fungsi dan kelas.

  • Modul diimpor menggunakan import kata kunci.

Ingatlah bahwa kamus adalah a key-valuepasangan. Itu artinya jika Anda memiliki kamus dengan kunciEmployeID dan Anda ingin mengambilnya, maka Anda harus menggunakan baris kode berikut -

employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])

Anda harus mengerjakan modul dengan proses berikut -

  • Modul adalah file Python dengan beberapa fungsi atau variabel di dalamnya.

  • Impor file yang Anda butuhkan.

  • Sekarang, Anda dapat mengakses fungsi atau variabel dalam modul itu dengan '.' (dot) Operator.

Pertimbangkan modul bernama employee.py dengan fungsi di dalamnya disebut employee. Kode fungsi diberikan di bawah ini -

# this goes in employee.py
def EmployeID():
   print (“Employee Unique Identity!”)

Sekarang impor modul dan kemudian akses fungsinya EmployeID -

import employee
employee. EmployeID()

Anda dapat memasukkan variabel di dalamnya bernama Age, seperti yang ditunjukkan -

def EmployeID():
   print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”

Sekarang, akses variabel itu dengan cara berikut -

import employee
employee.EmployeID()
print(employee.Age)

Sekarang, mari bandingkan ini dengan kamus -

Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable

Perhatikan bahwa ada pola umum dalam Python -

  • Ambil a key = value wadah gaya

  • Dapatkan sesuatu darinya dengan nama kuncinya

Saat membandingkan modul dengan kamus, keduanya serupa, kecuali berikut ini -

  • Dalam kasus dictionary, kuncinya adalah string dan sintaksnya adalah [key].

  • Dalam kasus module, kuncinya adalah pengenal, dan sintaksnya adalah .key.

Kelas seperti Modul

Module adalah kamus khusus yang dapat menyimpan kode Python sehingga Anda bisa membukanya dengan '.' Operator. Kelas adalah cara untuk mengambil pengelompokan fungsi dan data dan menempatkannya di dalam wadah sehingga Anda dapat mengaksesnya dengan operator '.'.

Jika Anda harus membuat kelas yang mirip dengan modul karyawan, Anda dapat melakukannya menggunakan kode berikut -

class employee(object):
   def __init__(self):
      self. Age = “Employee Age is ##”
   def EmployeID(self):
      print (“This is just employee unique identity”)

Note- Kelas lebih disukai daripada modul karena Anda dapat menggunakannya kembali sebagaimana adanya dan tanpa banyak gangguan. Sedangkan dengan modul, Anda hanya memiliki satu dengan seluruh program.

Objek seperti Mini-impor

Kelas seperti a mini-module dan Anda dapat mengimpor dengan cara yang sama seperti yang Anda lakukan untuk kelas, menggunakan konsep yang disebut instantiate. Perhatikan bahwa saat Anda membuat instance kelas, Anda mendapatkanobject.

Anda dapat membuat instance objek, mirip dengan memanggil kelas seperti fungsi, seperti yang ditunjukkan -

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age

Anda dapat melakukan ini dengan salah satu dari tiga cara berikut -

# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)