{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Praktikum 11 - Object & Class\n", "## Tujuan & Manfaat\n", "Pada praktikum 11 - Object & Class, mahasiswa diharapkan:\n", " 1. Mahasiswa mengerti syntax operator pada python\n", " 2. Mahasiswa dapat menjalankan program python menggunakan IDE, maupun di command prompt atau terminal\n", " 3. Mahasiswa mengerti konsep dari Object & Class\n", " 4. Mahasiswa dapat menerapkan dalam program" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python telah menjadi bahasa berorientasi objek sejak bahasa Python sendiri dibuat. Untuk membuat dan menggunakan kelas dan objek pada Python benar-benar mudah. Pada tutorial ini Anda akan dibantu untuk menjadi ahli dalam penggunaan pemrograman berorientasi objek Python.\n", "\n", "Jika Anda tidak memiliki pengalaman sebelumnya dengan pemrograman berorientasi objek (OOP), Anda mempelajarinya terlebih dahulu agar Anda dapat memahami konsep dasarnya.\n", "\n", "Jika memang sudah mengerti konsep dasar OOP berikut ini adalah pengenalan dari Object-Oriented Programming (OOP) untuk membantu Anda.\n", "\n", "### Istilah Dalam OOP\n", "\n", "| Istilah | Penjelasan |\n", "| --- | --- |\n", "| Class\t | Prototipe yang ditentukan pengguna untuk objek yang mendefinisikan seperangkat atribut yang menjadi ciri objek kelas apa pun. Atribut adalah data anggota (variabel kelas dan variabel contoh) dan metode, diakses melalui notasi titik. | \n", "| Class variable | \tSebuah variabel yang dibagi oleh semua contoh kelas. Variabel kelas didefinisikan dalam kelas tapi di luar metode kelas manapun. Variabel kelas tidak digunakan sesering variabel contoh. | \n", "| Data member | \tVariabel kelas atau variabel contoh yang menyimpan data yang terkait dengan kelas dan objeknya. | \n", "| Function overloading | \tPenugasan lebih dari satu perilaku ke fungsi tertentu. Operasi yang dilakukan bervariasi menurut jenis objek atau argumen yang terlibat. | \n", "| Instance variable\t | Variabel yang didefinisikan di dalam sebuah metode dan hanya dimiliki oleh instance kelas saat ini. | \n", "| Inheritance\t | Pengalihan karakteristik kelas ke kelas lain yang berasal darinya. | \n", "| Instance\t | Objek individu dari kelas tertentu. Obyek obj yang termasuk dalam Lingkaran kelas, misalnya, adalah turunan dari Lingkaran kelas. | \n", "| Instantiation\t | Penciptaan sebuah instance dari sebuah kelas. | \n", "| Method | \tJenis fungsi khusus yang didefinisikan dalam definisi kelas. | \n", "| Object | \tContoh unik dari struktur data yang didefinisikan oleh kelasnya. Objek terdiri dari kedua anggota data (variabel kelas dan variabel contoh) dan metode. | \n", "| Operator overloading | \tPenugasan lebih dari satu fungsi ke operator tertentu. | \n", "\n", "\n", "### Membuat Class Python\n", "\n", "Statement class digunakan untuk membuat definisi kelas baru. Nama kelas segera mengikuti kelas kata kunci diikuti oleh titik dua sebagai berikut.\n", "\n", "`class ClassName:` `'Optional class documentation string'` `class_suite`\n", "\n", "Dibawah ini adalah contoh cara membuat class dan penggunaanya :" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "class Employee:\n", " 'Common base class for all employees'\n", " empCount = 0\n", " def __init__(self, name, salary):\n", " self.name = name\n", " self.salary = salary\n", " Employee.empCount += 1 \n", " def displayCount(self):\n", " print(\"Total Employee %d\" %Employee.empCount)\n", " def displayEmployee(self):\n", " print(\"Name : \", self.name, \", Salary: \", self.salary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Membuat Instance Objects\n", "\n", "Untuk membuat instances kelas, Anda memanggil class menggunakan nama class dan meneruskan argumen apa pun yang metode __init__ terima." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#This would create first object of Employee class\n", "emp1 = Employee(\"Zara\", 2000)\n", "#This would create second object of Employee class\n", "emp2 = Employee(\"Manni\", 5000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mengakses Atribut\n", "\n", "Anda mengakses atribut objek menggunakan dot operator dengan objek. Variabel kelas akan diakses dengan menggunakan nama kelas sebagai berikut :" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name : Zara , Salary: 2000\n", "Name : Manni , Salary: 5000\n", "Total Employee 2\n" ] } ], "source": [ "emp1.displayEmployee()\n", "emp2.displayEmployee()\n", "print (\"Total Employee %d\" % Employee.empCount)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Contoh lengkapnya, silahkan lihat kode dibawah ini." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name : Zara , Salary: 2000\n", "Name : Manni , Salary: 5000\n", "Total Employee 2\n" ] } ], "source": [ "class Employee:\n", " 'Common base class for all employees'\n", " empCount = 0\n", " \n", " def __init__(self, name, salary):\n", " self.name = name\n", " self.salary = salary\n", " Employee.empCount += 1\n", " \n", " def displayCount(self):\n", " print(\"Total Employee %d\" % Employee.empCount)\n", " \n", " def displayEmployee(self):\n", " print (\"Name : \", self.name, \", Salary: \", self.salary)\n", "\n", "\n", "#This would create first object of Employee class\"\n", "emp1 = Employee(\"Zara\", 2000)\n", "#This would create second object of Employee class\"\n", "emp2 = Employee(\"Manni\", 5000)\n", "emp1.displayEmployee()\n", "emp2.displayEmployee()\n", "print (\"Total Employee %d\" % Employee.empCount)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Helo nama saya: Budi\n", "Umur saya: 19\n" ] } ], "source": [ "class Person:\n", " def __init__(self, name, age):\n", " self.name = name\n", " self.age = age\n", " \n", " def myfunc(self):\n", " print(\"Helo nama saya: \",self.name)\n", " print(\"Umur saya: \",self.age)\n", "\n", "p1 = Person(\"Budi\",19)\n", "p1.myfunc()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Latihan\n", "**Catatan:** gunakan **python versi 3.x** atau di atas nya\n", "1. Jalankan program di atas di komputer anda, menggunakan pycharm, jupyter-notebook, jupyter-lab atau google colab\n", "2. Buatlah program menggunakan **object & class** dengan skenario sebagai berikut:\n", "\n", " a. Program detail personal dengan source code berikut\n", " ```\n", " # Class for Computer Science Student \n", " class Person: \n", "\n", " # Class Variable \n", " person = 'Person' \n", " \n", " # The init method or constructor \n", " def __init__(self, rambut, warna): \n", "\n", " # Instance Variable \n", " self.....??\n", " self.....??\n", "\n", " # Objects \n", " Budi = Person(\"Ikal\", \"Hitam\") \n", " Michael = ....? \n", "\n", " print('Budi details:') \n", " print('Rambut: ', Budi.rambut) \n", " print('Warna Rambut: ', Budi.warna) \n", "\n", " print('\\nMichael details:') \n", " print('Rambut: '....? \n", " print('Warna Rambut: '....?\n", " ```\n", " sehingga output nya dapat ditampilkan sebagai berikut:\n", " ![modul-11a](img/11a.png)\n", "\n", " b. Ubahlah soal program di modul praktikum 10 (program a,b,c,d) menjadi format object & class" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Format Laporan Praktikum\n", "1. Buatlah laporan program nomor 1 yang anda kerjakan di atas & nomor 2, dengan menggunakan pycharm, jupyter-lab, atau jupyter-notebook, dengan format laporan menampilkan \n", " - Pendahuluan\n", " - Tujuan dan manfaat\n", " - Program\n", " - Analisis program\n", " - Referensi\n", "2. Upload file laporan praktikum kalian ke google classroom dengan format nama file **nim_anda_praktikum-11.pdf** -> **09081001009_praktikum-11.pdf**\n", "\n", "## Referensi :\n", "1. Real Python - https://realpython.com\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }