Rabu, 25 April 2012

PEMROGRAMAN BERORIENTASI OBJEK (VIBI)


A.     TUJUAN
·         Memahami konsep dasar pemrograman berorientasi objek.
·         Mampu mengimplementasikan konsep-konsep pemrograman berorientasi objek di dalam program.
·         Mampu menyelesaikan kasus-kasus sederhana dengan menggunakan paradigma objek.

B.     DASAR TEORI


1.      Pemrograman Berorientasi Objek
Secara garis besar, suatu bahasa pemrograman dapat dikatakan sebagai bahasa pemrograman berorientasi objek (atau Object Oriented Programming / OOP) apabila ia mendukung konsep abstraksi (abstraction), enkapsulasi (encapsulation), polimorfisme (polymorphism), dan pewarisan (inheritance). Selain konsep-konsep ini, ada beberapa konsep fundamental lainnya, seperti kelas, objek, dan message.
2.      Kelas
Kelas mendefinisikan karakteristik-karakteristik abstrak dari sesuatu (objek), termasuk karakteristik dan perilaku (behavior) dari “sesuatu” itu sendiri. Kelas dapat diilustrasikan sebagai sebuah cetak biru (blueprint), prototipe, atau pabrik (factory) yang berfungsi untuk menghasilkan objek- objek.
Bentuk kelas yang paling sederhana diperlihatkan sebagai berikut:

3.      Objek
Dalam terminologi OOP, objek adalah instans (atau manifestasi) dari sebuah kelas. Dengan demikian, dalam konteks desain, kita berbicara mengenai kelas; saat run time, yang kita bicarakan adalah objek.
Baik di dunia nyata maupun di dalam pemrograman, sebuah objek memiliki dua karakteristik utama, yaitu state (status) dan behavior (perilaku). Sebagai contoh, kucing memiliki state (nama, warna, dan sebagainya) dan behavior (mengeong, melompat, dan sebagainya).
4.      Field

Field adalah variabel yang didefinisikan di dalam kelas, dan disebut juga sebagai member variable. Field—dan juga member-member kelas lainnya—dapat dideklarasikan dengan level akses tertentu. Berkaitan dengan level akses ini, ada beberapa jenis level dari yang umum sampai yang restriktif.
Description: C:\Users\KIM\Pictures\1.PNG
5.      Pewarisan (Inheritance)
Istilah inheritance (pewarisan) mengacu pada kemampuan dari sebuah kelas untuk mewarisi state dan behavior kelas lain. Dengan demikian, atribut-atribut dan method-method kelas yang diwarisi (superkelas) secara intrinsik menjadi bagian dari kelas yang mewarisinya (subkelas). Terlepas dari warisan yang telah diperoleh, subkelas dapat menambahkan atau memodifikasi atribut-atribut dan method-method superkelas.
Description: C:\Users\KIM\Pictures\2.PNG
Gambar 1. Hubungan pewarisan
Konsep inheritance melahirkan sejumlah pasangan istilah yang menggambar-kan hubungan antara dua kelas terkait, seperti superkelas- subkelas, supertipe-subtipe, kelas dasar-kelas turunan, ancestor- descendant, parent-heir, dan leluhur-turunan.
6.      Kelas Abstrak
Kelas abstrak (abstract class) adalah kelas yang mengandung konsep abstrak, dan tidak akan pernah bisa diinstansiasi. Kelas abstrak didefinisikan dengan tujuan untuk digunakan dan diperluas oleh kelas lain. Dengan demikian, kelas ini merupakan cikal bakal superkelas.
Description: C:\Users\KIM\Pictures\3.PNG
Gambar 2. Kelas abstrak Buah
7.      Interface
Interface merupakan suatu tipe abstrak yang mendefinisikan komunikasi antara dua entitas. Interface merepresentasikan sebuah kontrak, di mana kelas yang mengimplementasikan interface harus menerapkan tiap-tiap aspek interface secara nyata sebagaimana yang telah didefinisikan.
Tujuan utama penggunaan interface adalah memungkinkan kelas-kelas yang mirip untuk memiliki behavior standar. Jadi, interface memiliki sedikit kemiripan dengan kelas abstrak, di mana keduanya sama-sama didesain untuk digunakan oleh kelas lain.
Di balik beberapa persamaan antara interface dan kelas abstrak, terdapat perbedaan-perbedaan di antara keduanya. Mengacu pada karakteristik keduanya, setidaknya ada dua perbedaan mendasar yang bisa kita garisbawahi.
·         Di dalam kelas abstrak boleh terdapat implementasi nyata dari suatu method. Keadaan ini berbeda sekali dengan interface, di mana semua method harus berupa deklarasi abstrak, dan tidak boleh ada implementasi sama sekali.

·         Suatu kelas hanya boleh mewarisi sebuah kelas, tetapi ia dapat mengimplementasikan lebih dari satu interface.

8.      Polimorfisme (Polymorphism)
Polimorfisme secara harfiah dapat diartikan banyak bentuk. Konsep ini memiliki arti kemampuan untuk mendefinisikan perilaku yang berbeda. Singkatnya, secara teknis, method atau konstruktor dengan nama sama dapat memiliki perilaku berbeda bergantung pada argumen atau tipe objeknya. Jadi, kata kunci untuk merepresentasikan konsep polimorfisme adalah: satu nama, banyak bentuk.
Konsep polimorfisme membentuk paradigma pemrograman yang ampuh yang mampu menyederhanakan definisi client dan secara dinamis mendukung pengubahan keterhubungan antarobjek saat runtime.

C.     LATIHAN
1.      Kelas dan Objek
Ø  ScripText Box: Public Class Form1
    'DEKLARI FIELD mahasiswa
    Private mhs As mahasiswa
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'menciptakan objek mahasiswa
        mhs = New mahasiswa(1, "agus")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' parse string ke integer 
        'bisa juga dengan CInt, tapi lebih disukai cara ini
        mhs.nim = Integer.Parse(Me.TextBox1.Text)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        MessageBox.Show("NIM" & mhs.nim)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'men-set nama mahasiswa
        mhs.nama = Me.TextBox2.Text
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        MessageBox.Show("Nama " & mhs.nama)
    End Sub
End Class
Text Box: Public Class mahasiswa
    'field nim dan nama 
    Private mnim As Integer
    Private mnama As String

    'konstruktor
    Sub New(ByVal mnim As Integer, ByVal mnama As String)
        Me.mnim = mnim
        Me.mnama = mnama

        'sekedar info 
        Console.WriteLine("konstruktor dipanggil")
    End Sub
    'properti nim (setter/ getter)
    Public Property nim() As Integer
        Get
            Return mnim
        End Get
        Set(ByVal value As Integer)
            mnim = value
        End Set
    End Property

    'properti nama (setter/ getter)
    Public Property nama() As String
        Get
            Return mnama
        End Get
        Set(ByVal value As String)
            mnama = value
        End Set
    End Property

End Class
Ø  Hasil

2.      Method
Ø  ScripText Box: Public Class person
    Private strName As String
    Sub New()
        strName = "anonymous"
    End Sub
    Public Property Name() As String
        Get
            Return strName
        End Get
        Set(ByVal value As String)
            strName = value
        End Set
    End Property

    Public Sub PrintInfo()
        MessageBox.Show("Method Objek Person di-invoke...")
    End Sub

End Class

Text Box: Public Class student
    Inherits person

    Private mNim As Integer

    'Properti Nim
    Public Property NIM() As Integer
        Get
            Return mNim
        End Get
        Set(ByVal value As Integer)
            mNim = value
        End Set
    End Property

End Class

Text Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'menciptakan objek student
        Dim student As New Student
        'menggunakan properti kelas turunan(Student)
        student.NIM = 123
        MessageBox.Show("NIM : " & student.NIM)

        'menggunakan properti kelas induk
        student.Name = "Agus"
        MessageBox.Show("Nama : " & student.Name)

        'memanggil method kelas induk
        student.PrintInfo()
    End Sub
End Class

Ø  Hasil

 
3.      Pewarisan
Ø  ScripText Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'menciptakan objek student
        Dim student As New student
        'menggunaakan properti kelas turunan (student)
        student.nim = 123
        MessageBox.Show("nim" & student.nim)

        'mmenggunakan property induk(peson)
        student.name = "agus"
        MessageBox.Show("Nama : " & student.name)

        'memanggil kelas induk
        student.printinfo()
    End Sub
End Class
Text Box: Public Class peson
    Private strName As String
    Sub New()
        strName = "anonymous"
    End Sub
    Public Property name() As String
        Get
            Return strName
        End Get
        Set(ByVal value As String)
            strName = value
        End Set
    End Property
    Public Sub printinfo()
        MessageBox.Show("metdhod objek person di invoke ...")
    End Sub
End Class

Text Box: Public Class student
    Inherits peson
    Private mnim As Integer

    Public Property nim() As Integer
        Get
            Return mnim
        End Get
        Set(ByVal value As Integer)
            mnim = value
        End Set
    End Property
End Class
Ø  Hasil
  
Overdiving Method
Ø  ScripText Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'menciptakan objek student
        Dim student As New student
   
        'memanggil method yang di-override
        student.printinfo()
    End Sub
End Class
Text Box: Public Class peson
    Private strName As String
    Sub New()
        strName = "anonymous"
    End Sub
    Public Property name() As String
        Get
            Return strName
        End Get
        Set(ByVal value As String)
            strName = value
        End Set
    End Property
    Public Overridable Sub printinfo()
        MessageBox.Show("metdhod objek person di invoke ... person")
    End Sub
End Class
Text Box: Public Class student
    Inherits peson
    
    Public Overrides Sub printinfo()
        MyBase.printinfo()
        MessageBox.Show("method objek student di-invoke...student")
    End Sub

End Class


Ø  Hasil
  
4.      Kelas Abstrak
Ø  ScripText Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Menciptakan objek Buah
        Dim z As New jeruk
        z.getfamily()
        z.getflavor()
    End Sub
End Class
Text Box: Public MustInherit Class buah
    Public MustOverride Sub getflavor()

    Public Sub getfamily()
        MsgBox("keluarga buah-buahan")
    End Sub
End Class

Text Box: Public Class jeruk
    Inherits buah
    Public Overrides Sub getflavor()
        MsgBox("asam")
    End Sub
End Class
Ø  Hasil
5.      Interface
Ø  ScripText Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim z As New interfacedemo
        z.Print()
        z.Write()

    End Sub
End Class

Text Box: Module Module1
    Interface IWritable
        Sub Write()
    End Interface
    Interface IPrintable
        Sub Print()
    End Interface
End Module

Text Box: Public Class interfacedemo
    Implements IPrintable, IWritable
    Public Sub Print() Implements IPrintable.Print
        MessageBox.Show("Print...")
    End Sub
    Public Sub Write() Implements Module1.IWritable.Write
        MessageBox.Show("Writing...")
    End Sub
End Class
Ø  Hasil
6.      Polimorfisme
Ø  ScripText Box: Public Class overloaddemo

    Public Function GetTotal() As Integer
        MessageBox.Show("Tanpa Parameter di-invoke")
        Return 1
    End Function

    Public Function GetTotal(ByVal a As Integer) As Integer
        MessageBox.Show("Parameter integer di-invoke")
        Return 1
    End Function

    Public Function GetTotal(ByVal a As Integer, ByVal b As Double) As Integer
        MessageBox.Show("Parameter Integer dan Double di-invoke")
        Return 1
    End Function

    Public Function GetTotal(ByVal b As Double, ByVal a As Integer) As Integer
        MessageBox.Show("Parameter Double dan Integer di-invoke")
        Return 1
    End Function

End Class

Text Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim od As New OverloadDemo
        od.GetTotal()
        od.GetTotal(1)
        od.GetTotal(1, 3.5)
        od.GetTotal(3.5, 2)
    End Sub
End Class
Ø  Hasil
    
D.    TUGAS PRAKTIKUM
1.      Membuat aplikasi menampilkan hari
Ø  Scrip
Text Box: Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As New Day
        TextBox1.Text = Now()
        a.getday()
    End Sub
End Class

Text Box: Public Class day
    Public Function getday() As String
        MessageBox.Show(Format(Now(), "dddd"))
        Return 1
    End Function

End Class
Ø  Hasil
2.      Uji fungsional atribut
Ø  Scrip
Text Box: Public Class demopoint
    Public hitung As point
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        hitung.x = Decimal.Parse(Me.TextBox1.Text)
        hitung.y = Decimal.Parse(Me.TextBox2.Text)
        Me.TextBox3.Text = hitung.kal
    End Sub

    Private Sub demopoint_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        hitung = New point
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub
End Class

Text Box: Public Class point
    Public xx As Decimal
    Public yy As Decimal
    Public Property x() As Decimal
        Get
            Return xx
        End Get
        Set(ByVal value As Decimal)
            xx = value
        End Set
    End Property
    Public Property y() As Decimal
        Get
            Return yy
        End Get
        Set(ByVal value As Decimal)
            yy = value
        End Set
    End Property

    Public Function kal() As Integer
        kal = xx + yy
    End Function
End Class
Ø  Hasil
3.      Membuat aplikasi luas lingkaran
Ø  Scrip
Text Box: Public Class Form1
    Public lingkaran As circle
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lingkaran = New circle
    End Sub
    Dim r As Double
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        lingkaran.r = CDbl(TextBox1.Text)
        Me.TextBox2.Text = lingkaran.getare()
    End Sub
    
End Class

Text Box: Public Class circle
    Public jari2 As Double
    Public pi As Double = 3.14
    Public Property r() As Double
        Get
            Return jari2
        End Get
        Set(ByVal value As Double)
            jari2 = value
        End Set
    End Property
    Function getare() As Double
        getare = pi * jari2 * jari2
    End Function
End Class
Ø  Hasil
E.     TUGAS RUMAH
Membuat aplikasi luas lingkaran dan persegi
Ø  Scrip
Text Box: Public MustInherit Class shape
    MustOverride Sub getarea()
End Class

Text Box: Public Class circel
    Inherits shape
    Public jari2 As Double = 10
    Public pi As Double = 3.14
    Public luas As Double

    Public Overrides Sub getarea()
        luas = pi * jari2 * jari2
        MsgBox("luas lingkaran :" & luas)
    End Sub
End Class

Text Box: Public Class rectangle
    Inherits shape
    Public sisi As Double = 10
    Public luas As Double
    Public Overrides Sub getarea()
        luas = sisi * sisi
        MsgBox("luas persegi : " & luas)
    End Sub
End Class

Text Box: Public Class Form1
    Public luas As shape
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim lingkaran As New circel
        lingkaran.getarea()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim persegi As New Rectangle
        persegi.getarea()
    End Sub

End Class
Ø  Hasil
F.      DAFTAR PUSTAKA
Modul 7 Praktikum Bahasa Pemrog. Visual Prodi Pendidikan Teknik Informatika UM
Hermawan widyo.2009.ShortCourse:Visual Basic 2008.Yogyakarta:C.V ANDI OFFSET