1 of 49

Pemrograman Berorientasi Objek

Tim Pengampu Pemrograman Berorientasi Objek

Departemen Informatika

Universitas Diponegoro

2 of 49

Pengenalan Kuliah

01

Materi, Kriteria Penilaian, Referensi, Pola Belajar

3 of 49

Deskripsi Mata Kuliah

  • Mata kuliah Pemrograman Berorientasi Objek merupakan seri kelompok pengembangan perangkat lunak dengan fokus pada paradigma berorientasi objek.
  • Solusi persoalan merupakan kumpulan objek yang saling berinteraksi. Setiap objek memiliki sifat dan perilaku khas. Setiap kelas terdiri atas Definisi, Atribut, dan Metode.
  • Mahasiswa menggunakan notasi algoritmik dan UML saat tatap muka, sedangkan di laboratorium digunakan bahasa pemrograman yang relevan, misalnya Java.

4 of 49

Sub CPMK

  1. Mampu menerapkan (C3) konsep enkapsulasi, kelas, dan algoritma siklus hidup objek dengan mendemonstrasikan (P3) dalam bahasa pemrograman tertentu.
  2. Mampu menerapkan (C3) konsep dan konsekuensi pewarisan dengan mengkonstruksi (P4) kelas dalam bahasa pemrograman tertentu.
  3. Mampu menganalisis (C4) polimorfisme dan generik dengan mengembangkan (P4) kasus dalam bahasa pemrograman tertentu.
  4. Mampu mendesain (C6) koleksi objek persisten dengan mendemonstrasikan (P3) penyelesaian permasalahan kompleks.
  5. Mampu memadukan (C6) prinsip rancangan berorientasi objek dengan paradigma lain yang relevan.

​

5 of 49

Materi (Sebelum UTS)

  1. Object Orientation
  2. Object & Class (atribute, method, message passing)
  3. Constructor dan Destructor (default, overloading)
  4. Enkapsulasi dan Information Hiding
  5. Exception dan Assertion
  6. Inheritance (single, multiple, repeated)
  7. Kelas Abstrak dan Interface

6 of 49

Materi (Setelah UTS)

  1. Polimorfisme & Binding
  2. Genericity
  3. Collection
  4. Persistent object
  5. Implementasi Konsep Object Oriented
  6. Multi-paradigm programming
  7. Object-oriented Design Principle

​

7 of 49

Kriteria Penilaian

  • Kuis/Aktivitas Partisipatif
  • Tugas
  • Hasil Proyek/ Tugas Besar
  • Praktikum
  • UTS
  • UAS

​

Semua komponen wajib diikuti oleh mahasiswa :�Baru, Perbaikan, atau Ulang (B/P/U)

​

8 of 49

Referensi

  • Panji Wisnu Wirawan, Indra Waspada, Satriyo Adhy. 2018. Buku Ajar Pemrograman Berorientasi Objek.
  • Vaskaran Sarcar. 2020. Interactive Object-Oriented Programming in Java.
  • Daniel Y. Liang, Introduction into Java Programming Comprehensive Version 10th Edition, 2015, Pearson.
  • Inggriani Liem, Diktat Kuliah Pemrograman Berorientasi Objek, ITB.
  • Herbert Schildt. 2019. Java The Complete Reference, 11th edition.
  • Robert C. Martin. 2013. Agile Software Development, Principles, Patterns, and Practices, 1st edition.
  • Peter Sestoft. 2017. Programming Language Concepts, 2nd edition.

9 of 49

Perkuliahan

  • Materi dan penugasan diberikan di Kulon Undip.
  • Presensi melalui SIAP dilakukan pada saat jam perkuliahan.
    • Ijin atau sakit harus ada surat pengantar.
  • Minimal presensi untuk mengikuti UAS adalah 75%.
  • Pada saat kuliah mahasiswa menyiapkan handphone/ laptop untuk presensi dan mengerjakan kuis di kelas.

​

​

10 of 49

Pola Belajar

  • Belajar mandiri diutamakan :
            • Memiliki & membaca referensi yang telah ditunjukkan maupun referensi lain yang bersesuaian.
    • Eksplorasi mandiri bahasa pemrograman : mencoba sendiri kode-kode yang telah diberikan, maupun contoh-contoh lain dari berbagai referensi.
    • Mengulang kembali praktikum yang telah dikerjakan.
  • Hindari Sistem Kebut Semalam.

​

​

11 of 49

1 SKS artinya …

50 menit/ minggu/ semester

60 menit/ minggu/ semester

60 menit/ minggu/ semester

Tatap

Muka

Penugasan Terstruktur

Kegiatan Mandiri

12 of 49

Tools

  • Java Development Kit (JDK)
            • Berisi kompilator Java (javac), Java Runtime Environment (JRE), dan berbagai alat lainnya untuk pengembangan Java.
  • IDE (Integrated Development Environment) atau Code Editor
            • Contoh IDE: IntelliJ IDEA, Eclipse, NetBeans
            • Contoh Code Editor: VS Code, Sublime Text
  • Java Runtime Environment (JRE)
            • Jika hanya ingin menjalankan aplikasi Java, JRE sudah cukup.

​

​

​

​

13 of 49

Membuat dan Menjalankan Program Java

Writing Code

    • Menggunakan code editor/ IDE
    • Menghasilkan file .java

Compile

    • Menggunakan javac (dalam JDK)
    • Menghasilkan file .class

Run

    • Menggunakan java (dalam JRE)
    • Menampilkan hasil

14 of 49

Object Oriented

02

15 of 49

Pokok Bahasan

  • Review Pemrograman Prosedural
  • Konsep Object Oriented
  • Pemrograman Terstruktur vs. PBO
  • Kelebihan dan Kelemahan PBO
  • Karakteristik PBO

​

​

16 of 49

Review: Paradigma Prosedural (lanj.)

  • Instruksi dieksekusi satu per satu secara sekuensial oleh sebuah pemroses tunggal.
      • Data diperiksa dan dimodifikasi secara sekuensial.
  • Paradigma ini didasari pada strukturisasi data dan manipulasi terhadap data tersebut.

Struktur Data + Algoritma = Program

  • Program besar dapat dibagi menjadi bagian-bagian yang lebih kecil (fungsi/ prosedur).
  • Sebuah fungsi/prosedur dapat berinteraksi dengan lainnya, sehingga dapat menyelesaikan masalah utama.

​

​

​

​

​

​

17 of 49

Review: Paradigma Prosedural (lanj.)

Inggriani Liem, Diktat Kuliah Dasar Pemrogram (Bagian Pemrograman Prosedural), ITB

18 of 49

Review: Abstract Data Type (ADT)

  • ADT adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut.
  • ADT biasanya diimplementasi menjadi dua buah modul, yaitu:
  • Spesifikasi type (sesuai dengan bahasa) dan primitif (sesuai kaidah dalam konteks procedural berupa fungsi/prosedur).
  • Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan selektor dan konstruktor.
  • Terdapat main program yang menggunakan ADT tersebut.

​

​

​

​

​

​

19 of 49

Review: Abstract Data Type (ADT)

Modul

Realisasi File Kode

Definisi dan Spesifikasi Type dan Primitif

File header dengan ekstensi .h

Body/ Realisasi Primitif

File kode dengan esktensi .c

Main Program/Driver

File kode program utama dengan ekstensi .c

20 of 49

Modul Titik

DEKLARASI/DEFINISI & SPESIFIKASI TIPE & PROTOTIPE

type Titik = < x:integer, y:integer >

procedure MakeTitik(output T:Titik)

{I.S: - ; F.S: T terdefinisi }

{Proses mengisi absis dan ordinat dengan 0}

procedure SetAbsis(Input/Output T: Titik, Input newX: integer)

{I.S: T terdefinisi}

{F.S: nilai absis T diubah dengan nilai newX}

BODY/REALISASI PROTOTIPE

procedure MakeTitik(output T:Titik)

Kamus lokal

-

Algoritma

T.x 🡨 0

T.y 🡨 0

procedure SetAbsis(Input/Output T: Titik, Input newX: integer)

{Mengubah nilai komponen absis dari T}

KAMUS LOKAL

ALGORITMA

T.absis 🡨 newX

21 of 49

Program MTitik

{Main program yang menggunakan ADT Titik}

​

KAMUS

use Titik

T1,T2: Titik

​

ALGORITMA

T1 🡨 MakeTitik()

T2 🡨 MakeTitik()

SetAbsis(T1,3)

SetAbsis(T2,-8)

​

​

​

​

Main Program

22 of 49

Objek Oriented

  • Meyer (1997): “Sebuah sistem yang dibangun berdasarkan metoda berorientasi objek adalah sebuah sistem yang komponennya dienkapsulasi menjadi kelompok data dan fungsi, yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut saling berinteraksi satu sama lain.
  • Jacobson: “Any technique based on the concept of object, class, instances and inheritance”.

​

​

23 of 49

Object

24 of 49

Object

  • Objek adalah entitas yang memiliki state, behavior & identity (Booch, 2007).
  • State: semua “sifat” / properti yang dimiliki berikut nilai yang ada padanya.
  • Behavior: bagaimana objek beraksi dan bereaksi, dalam hal perubahan properti dan penyampaian pesan (message passing).
  • Identity: properti dari objek yang membedakannya dengan objek yang lain.

​

25 of 49

Class

  • Class adalah kumpulan objek yang mempunyai atribut dan perilaku serupa.
  • Class adalah blueprint, template, atau prototype.
  • Class mendeskripsikan atribut dan perilaku dari objek-objeknya.
  • Atribut merupakan segala sesuatu yang melekat pada objek. 
  • Contoh:
  • Atribut dari class Titik antara lain: absis dan ordinat.
  • Method merupakan suatu fungsi/behaviour bagaimana suatu objek melakukan tindakan.
  • Contoh:
  • Method dari class Titik adalah geser, rotasi, set absis, set ordinat.

​

26 of 49

Object & Class

Object

Class

Objek adalah abstraksi dari sesuatu yang mewakili sesuatu pada dunia nyata.

Class adalah kumpulan objek yang mempunyai state dan behavior yang sama.

​

Objek adalah instansiasi dari sebuah class.

Class adalah template (blueprint) untuk objek-objeknya.

Objek adalah entitas pada saat runtime (dinamik).

​

Class adalah definisi statik dari entitas.

​

27 of 49

Object �& Class

https://nonlineardata.com/wp-content/uploads/2020/11/Car_Class.png

28 of 49

Object & Class

https://thebabatalks.blogspot.com/2019/08/classes-in-java.html

Identitiy

29 of 49

Class Diagram

  • Model statik UML.
  • Memodelkan kelas dan hubungannya dengan kelas yang lain.
  • Komponen class diagram:
    • Class berisi nama kelas, atribut dan metode
    • Relasi antar class
    • Tools untuk membuat class diagram:
    • StarUML, Visual Paradigm
    • draw.ioPlantUML, dll…

​

30 of 49

Notasi UML

Notasi Algortimik

class Titik

{atribut}

absis: real

ordinat: real

{method}

procedure Titik()

absis <- 0

ordinat <- 0;

function getAbsis()-> real

-> this.absis

function getOrdinat()-> real

-> this.ordinat

procedure setAbsis(input x:real)

this.absis <- x

procedure setOrdinat(input y:real)

this.ordinat <- y

{end class Titik}

31 of 49

Notasi Algortimik

class Titik {

//atribut

double absis;

double ordinat;

//method

Titik(){

this.absis = 0;

this.ordinat = 0;

}

double getAbsis(){

return this.absis;

}

double getOrdinat(){

return this.Ordinat;

}

void setAbsis(double x){

this.absis = x;

}

void setOrdinat(double y){

this.ordinat = y;

}

} //end class Titik

Notasi Java

class Titik

{atribut}

absis: real

ordinat: real

{method}

procedure Titik()

this.absis <- 0

this.ordinat <- 0;

function getAbsis()-> real

-> this.absis

function getOrdinat()-> real

-> this.ordinat

procedure setAbsis(input x:real)

this.absis <- x

procedure setOrdinat(input y:real)

this.ordinat <- y

{end class Titik}

32 of 49

Main Program Titik (Java)

public class MTitik {

public static void main(String[] args) {

//Membuat objek titik T1

Titik T1 = new Titik();

T1.setAbsis(3);

T1.setOrdinat(3);

//Menampilkan titik T1

System.out.println(T1.getAbsis());

System.out.println(T1.getOrdinat());

}

}

class MTitik {

main() {

//Membuat objek titik T1

T1: Titik

T1 <- new Titik();

T1.setAbsis(3);

T1.setOrdinat(3);

//Menampilkan titik T1

output(T1.getAbsis());

output(T1.getOrdinat());

}

}

33 of 49

Karakteristik OOP

OOP

Abstraction

Encapsulation

Inheritance

Polymorphism

34 of 49

Encapsulation

  • Membungkus data dan method ke dalam single unit, yaitu class.
  • Keuntungan enkapsulasi:
  • Memberikan batasan terhadap atribut-atribut objek agar tidak dapat diakses secara langsung oleh objek lainnya 🡪 mendukung information hiding.
  • Mem-binding data dengan method yang bekerja pada data tersebut.
  • Modularitas: objek dapat dikelola secara independen.

​

​

​

​

​

​

35 of 49

Encapsulation

http://miro.medium.com/max/552/0*m8rZxUoWejR-ARJB.jpeg

36 of 49

Abstraction

  • Fokus hanya pada bagian yang penting (relevan), dan menyembunyikan detail kerumitannya.
  • Contoh:

Saat menggunakan Smartphone, pengguna hanya perlu mengetahui tombol-tombol apa yang diperlukan untuk melakukan sesuatu, selanjutnya proses-proses apa yang terjadi di dalam internal Smarphone “disembunyikan” dari pengguna.

​

​

​

37 of 49

Inheritance / Pewarisan

  • Subclass (child class) dapat meng-inherit superclass (parent class) 🡪 subclass mewarisi semua atribut dan method yang dimiliki oleh superclass.
  • Definisi atribut dan method hanya diberikan satu kali pada superclass 🡪 mendukung reusability.
  • Subclass dapat memodifikasi method yang diwarisi dari superclass, tanpa mempengaruhi perilaku method pada superclass 🡪 overriding.
  • Memungkinkan adanya penambahan atribut dan method yang baru pada subclass.

​

​

​

​

​

38 of 49

Inheritance / Pewarisan

https://cdn-images-1.medium.com/max/1080/1*gRily1Y6mlrOETJeKRgvgw.png

39 of 49

Inheritance / Pewarisan

https://miro.medium.com/max/4336/1*xPR1IbBKNz7d-lyvXQ_dMA.png

40 of 49

Polymorphism

  • Poly (banyak) + morphe (bentuk) 🡪 polymorphism (banyak bentuk)
  • Objek yang memiliki behaviour atau perilaku sama dapat mempunyai lebih dari satu interpretasi dalam konteks yang berbeda.
  • Polymorphism dapat berupa:
    • Compile-time polymorphism: method mana yang di-invoke dapat ditentukan pada saat kompilasi.
    • Runtime polymorphism: method mana yang di-invoke baru dapat ditentukan saat runtime.

​

​

​

​

41 of 49

Kelebihan OOP

  • Kelebihan paradigma OOP:
  • Code reuse and recycling
  • Abstraction
  • Data hiding
  • Pengembangan sistem dengan metoda OO dapat meningkatkan:
  • Produktifitas
  • Kecepatan pengembangan
  • Kualitas perangkat lunak
  • Kemudahan pemeliharaan

​

​

42 of 49

43 of 49

Kesimpulan

Some important characteristics of OOP:

  • Your focus is on data, not on functions. So, you divide your program into objects, not functions.
  • You do not allow data to flow freely. You use methods to access them.
  • Your objects communicate through methods.
  • The outside world should not access your data.
  • Your application can adapt to new changes easily. At the same time, it is easy to maintain.

​

​

44 of 49

Review Questions

03

45 of 49

Soal 1

Empat pilar utama pemrograman berorientasi objek adalah:

  1. Interface, abstraksi, pewarisan, polimorfisme
  2. Objek, pewarisan, kelas, pewarisan
  3. Abstraksi, enkapsulasi, pewarisan, polimorfisme
  4. Kelas, Interface, Abstraksi, pewarisan
  5. Pewarisan, polimorfisme, abstraksi, Interface

​

46 of 49

Soal 2

Objek yang dimaksud dalam pemrograman berorientasi objek memiliki....

  1. Atribute, field, identity
  2. State, behaviour, class
  3. Class, state, identity
  4. Method, interface, behaviour
  5. State, behaviour, identity

47 of 49

Soal 3

Detil data yang ada dalam objek hanya boleh diakses melalui....

  1. atribut
  2. perilaku
  3. objek lain
  4. interface
  5. protokol

48 of 49

Soal 4

Berikut ini semuanya contoh bahasa pemrograman berorientasi objek adalah....

  1. Pascal, LISP, C
  2. Basic, COBOL, Erlang
  3. ALGOL, PROLOG, Perl
  4. C++, Java, Python
  5. R, Maple, Assembler

49 of 49

Thanks!

Please keep this slide for attribution

CREDITS: This presentation template was created by Slidesgo, and includes icons by Flaticon, and infographics & images by Freepik