Minggu, 13 Oktober 2013



RANGKUMAN OOP (Object Oriented Programming)


1.    Class, atribut, dan method

a.       Class
          Class (Kelas)  digunakan untuk membuat objek, dan berperan sebagai tipe data dari objek. Class merupakan sarana pengkapsulan kumpulan data dan kumpulan method yang mengoperasikan kumpulan data tersebut.
Class merupakan bentuk logis yang menjadi landasan bangun seluruh bahasa pemograman berorientasi object. Class adalah template/prototype yang mendefinisikan type object. Class merupakan sarana pengkapsulan kumpulan data dan metode-metode yang beroperasi pada kumpulan data. Data dan metode untuk mendefinisikan isi dan kamampuan object. Class adalah cetakan object. Object harus merupakan instan suatu Class. Class digunakan untuk menciptakan banyak object. Object-object dari Class yang sama mempunyai data sendiri tapi berbagi implementasi metode dengan object-object lain di satu Class. Class dapat merupakan realisasi/implementasi abstraksi di domain persoalan.
Berikut ini adalah kegunaan kelas :
1.      Mengelompokkan object-object menjadi kelas-kelas, berarti mengabstraksikan persoalan yang dihadapi. Abstraksi memberi daya keampuhan pemodelan dan memberikan kemampuan generalisasi beberapa kasus spesifik menjadi induk kasus-kasus yang serupa.
2.      Definisi-definisi common (seperti nama kelas dan atribut) cukup disimpan sekali per kelas bukan sekali per instan kelas (object). Operasi-operasi dapat ditulis sekali per kelas. Semua object dalam kelas mendapat manfaat penggunaan kembali (reuse) kode itu.
Perhatikan table dibawah ini untuk perbedaan kelas dan object dalam OOP.
Kelas (class)
Objek (object)
class merupakan rancangan (design)
Object merupakan perwujudan suatu class
class bersifat abstract
Object bersifat konkrit
Ketika mendeklarasikan class, sebelum kata kunci class, kita dapat memberi modifier. Modifier mempengaruhi makna deklarasi. Modifier yang berlaku untuk kelas adalah antara lain modifier ketampakan (visibility modifier). Modifier ini mengatur izin pengaksesan kelas oleh kelas-kelas lain. Selain itu adalah modifier untuk mengatur apakah kelas tersebut dapat diwarisi atau tidak, modifier final akan membuat kelas itu tidak dapat diwarisi. Modifier lainnya adalah abstract untuk mengatakan apakah kelas merupakan kelas abstrak yang belum diimplementasikan serta mengharapakan kelas turunannya yang harus mengimplementasikan metode-metode darinya.
Penulisan sebuah class
modifier class [nama_class]{
            //class body
}
b.         Atribut
Atribut adalah sesuatu yang dimiliki oleh objek. Setiap objek yang dibuat dari kelas yang sama akan memiliki atribut yang sama. Pada implementasi program, sebuah atribut ditulis dalam bentuk data/ variable. Misalkan dari Kelas binatang_dideklarasikan atribut :
a.       int jmlKaki;
b.      String warna;
c.       public String suara;
d.      Maka untuk setiap objek ayam, kucing dan anjing, ketiganya akan memiliki atribut yang sama, tapi setiap atribut bisa di-assigndengan nilai yang berbeda. Contoh deklarasi atribut dengan menggunakan Java yaitu:
e.       //assign nilai atribut untuk objek ayam
f.       ayam.jmlKaki = 2;
g.      ayam.warna=”Hitam”;
h.      ayam.suara=”kukuruyuk”;
i.        //assign nilai atribut untuk objek kucing
j.        deni.jmlKaki = 4;
k.      deni.warna=”Kuning”;
l.        deni.suara=”meong”;
m.    //assign nilai atribut untuk objek  anjing
n.      ayi.jmlKaki = 4;
o.      ayi.warna=”Putih”;
p.      ayi.suara=”guk”;
q.      Dari contoh deklarasi di atas, dapat kita lihat bahwa setiap objek akan memiliki atribut yang sama, yaitu jmlKaki, warna, dan suara. Tetapi, masing-masing atribut dari setiap objek bisa diberi nilai yang berbeda.
c. Method
Method adalah sesuatu yang dapat dilakukan oleh objek. Method dalam implementasi program ditulis dalam bentuk fungsi. Misalkan pada kelas binatang dideklarasikan method bersuara. Maka untuk setiap objek pada kelas binatang bisa bersuara. Contoh implementasinya adalah:
//deklarasi method bersuara
public class binatang {

int jmlKaki;
String warna;
public String suara;
    
     public void  bersuara()
       {
            System.out.println(suara);
        }  
}
   
//pemanggilan method oleh objek ayam
ayam.bersuara();
//pemanggilan method oleh objek kucing
kucing.bersuara();
//pemanggilan method oleh objek anjing
anjing.bersuara();

Dari contoh di atas dapat kita lihat bahwa untuk setiap objek pada kelas binatang bisa memanggil method yang dideklarasikan pada kelas binatang.

2.   Objek
Sebuah objek adalah sesuatu yang mempunyai keadaan, kelakuan dan identitas. Keadaan dari objek adalah satu dari kondisi yang memungkinkan dimana objek dapat muncul, dan dapat secara normal berubah berdasarkan waktu. Keadaan dari objek biasanya diimplementasikan dengan kelompok propertinya (disebut atribut), berisi nilai dari properti tersebut, ditambah keterhubungan objek yang mungkin dengan objek lainnya. Kelakuan menentukan bagaimana sebuah objek beraksi dan bereaksi terhadap permintaan dari objek lainnya. Direpresentasikan dengan kelompok pesan yang direspon oleh objek (operasi yang dilakukan oleh objek). Kelakuan dari objek mendeskripsikan segala sesuatu yang dapat kita lakukan terhadap objek tersebut dan segala sesuatu yang dapat dilakukan oleh objek untuk kita. Objek merepresentasikan sebuah entitas, baik secara fisik, konsep ataupun secara perangkat lunak.
Definisi yang formal dari objek adalah sebuah konsep, abstraksi atau sesuatu yang diberi batasan jelas dalam hal ini dimaksudkan untuk sebuah aplikasi. Objek merupakan instance (wujud nyata) dari Class. Perilaku dari dua buah objek yang bertipe sama dapat dibedakan dari Property yang dimilikinya; artinya, Setiap objek mempunyai identitas yang unik. Identitas yang unik ini membuat kita dapat membedakan dua objek yang berdeda, walaupun kedua objek tersebut mempunyai keadaan dan nilai yang sama pada atributnya.


3.   Cara membuat objek
Berikut adalah contoh class dan cara instansiasi class tersebut menjadi objek pada C#:

ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
}
}

Berikut adalah contoh proses instansiasi class ClassExample :
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
3-36
ClassExample classExample = new ClassExample();
}
}
}


4. Konstruktor

Konstruktor (constructor) adalah suatu method khusus tanpa retrun type yang dipanggil secara otomatis setiap kali suatu object atau kelas diciptakan. Programmer tidak perlu memanggil kosntruktor, karena Java yang akan mengerjakannya. Ini berarti proses pemberian nilai awal (atau inisialisasi bukan instanisasi) seluruh data objek dilakukan melalui constructor. Constructor bisa berisi perintah pemanggilan method internal atau intruksi lain.
Kita membuat constructor terutama untuk inisialisasi variable-variable instan kelas serta melakukan persiapan pada suatu object agar object itu dapat beroperasi dengan baik, semacam melakukan start pada kendaraan bermotor. Ketika object suatu kelas diciptakan, new memanggil constructor kelas untuk melakukan inisialisasi.
1.    Constructor harus bernama sama dengan nama kelas (karena case senstive maka nama harus sama dalam huruf kecil dan besarnya)
2.    Constructor tidak men-spesifikasi tipe yang dikirim karena dapat dipastikan tipe yang dikirim bertipe kelas itu
3.    Kelas dapat berisi banyak constructor overloading yang memungkinkan object diinisialisasi dengan beragam cara berbeda.
4.    Constructor dapat mempunyai access modifier, biasanya public namun dapat berupa private
Perlu dicatat bahwa keberadaan constructor tidak dianggap sebagai method oleh Java, meskipun pendeklarasiannya serupa dengan pendeklarasian suatu method.
penulisan konstruktor :
modifier class [nama_class]{
[nama_class](parameter 1, parameter 2,…..) {     //construktor
…..
}

5.     Private, public, protected
Identifier adalah suatu pengenal atau pengidentifikasi yang kita deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri dapat berupa nama variabel, konstanta fungsi, kelas, template maupun namespace. Biasanya identifier ini terdiri dari 3 bentuk, yaitu privat public dan proected.
  • private: anggota publik dari kelas dasar dapat diakses oleh anggota yang kelas dasar,anggota kelas turunan serta anggota yang berada di luar kelas  dasar dan kelas turunan.
  • public: anggota pribadi dari kelas dasar hanya dapat diakses oleh anggota yang kelas dasar.
  • protected: anggota dilindungi dari kelas dasar dapat diakses oleh anggota kelas dasarserta anggota kelas turunan. 
Berikut adalah perbedaan dari ke-3 Identifier tersebut :
Perbedaan public, private, protected, dan tanpa penentu akses pada variabel : 
  • public : variabel dapat di akses pada semua kelas yang menggunakan kelas yang berisi variabel tersebut.
  • private : Hanya dapat diakses oleh metode2 dalam kelas itu sendiri.
  • protected : Variabel instan dapat diakses pada kelas sendiri dan subkelasnya.
  • Tanpa Penentu akses : variabel dapat diakses oleh kelas yang berada dalam package yang sama.
6.   Karakteristik OOP dan contohnya
a. Inheritance (pewarisan)
                        Pewarisan merupakan salah satu karakteristik dari OOP. Mendefinisikan class berdasarkan class yang ada disebut penurunan. Class baru atau class turunan berhubungan langsung dengan class diatasnya. Class asal disebut superclass. Suatu class dapat mewariskan atribut  dan method kepada class lain (subclass), serta membentuk class hierarchy. Penting untuk Reusability. Menggunakan key word EXTENDS.
Contoh kasus dibawah ini adalah telepon merupakan alat yang menjadi inspirasi dibuatnya HP. Dengan beberapa fungsi tambahan. Disini fungsi tambahannya hanya melakukan sms. Anda dapat mengembangkan dengan fungsi infrared, Bluetooth, kamera, 3G dan lain- lain.

 Telepon
Berbicara()

HP
Berbicara()
SMS()

Contoh Programnya:
 class telepon{ // super class 
void berbicara(){
System.out.println(“Tekan nomor tujuan, panggil”);
System.out.println(“Berbicara dengan lawan bicara”);
System.out.println(“Setelah selesai, tutup”);
}
}

class HP extends telepon{ //subclass dengan pewarisan superclass dari telepon 
void SMS(){
System.out.println(“Ketik pesan yang hendak dikirimkan”);
System.out.println(“Kirim ke nomor yang dituju”);
System.out.println(“Tunggu balasan”);
}

public static void main(String[] args){
HP handphone = new HP();
System.out.println(“Fungsi dasar telepon”);
handphone.berbicara();
System.out.println(“Fungsi baru pada telepon tanpa kabel”);
handphone.SMS();
}
}

b. Polimorphisme (banyak bentuk)
Polymorphism berarti mempunyai banyak bentuk. Dua Object atau lebih mempunyai hal yang serupa tetapi mempunyai perilaku yang berbeda. Superclass dapat mempunyai method yang juga dimiliki oleh class turunannya. Method pada superclass dapat merupakan method virtual digunakan program yang memanggil suatu fungsi dari suatu class, mungkin memanggil fungsi pada class lain. Kemampuan untuk memperlakukan object yang memiliki perilaku (bentuk) yang berbeda.
Implementasi konsep polymorphism:
1.      Overloading: Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda parameter (tipe dan atau jumlah).
 2.      Overriding: Kemampuan subclass untuk menimpa method dari superclass, yaitu dengan cara menggunakan nama dan parameter yang sama pada method.
Contoh kasus dibawah ini. Kita akan menggunakan suatu method yang mempunyai beberapa bentuk masukan parameter, dimana masukan parameter tersebut tidak sama, sehingga bisa menentukan method mana yang akan dipanggil.
 class HPMulti{

public void HP(long no_telp){
System.out.println(“Anda sedang menghubungi no. telp : “+ no_telp);
}

public void HP(long no_telp,String teks){
System.out.println(“Anda mengirim pesan ke no. telp : ” + no_telp);
System.out.println(“Pesan anda berisi : ” + teks);
}

public void HP(int a,int b){
System.out.println(“Hasil operasi penjumlahan 2 bilangan tersebut adalah “+(a+b));
}
}
  
class HPBerfungsi{

public static void main(String[] args){

HPMulti fungsi = new HPMulti();

System.out.println(“menggunakan fungsi panggilan”);
fungsi.HP(7716953);
System.out.println(“menggunakan fungsi SMS”);
fungsi.HP(9613932,”Assalamualaikum Wr.Wb”);
System.out.println(“menggunakan fungsi kalkulator”);
fungsi.HP(20,30);
}
}

c. Encapsulation (pembungkusan)
Dalam pemrograman Java yang berorientasi murni Object ini, program hanya dipusatkan pada aspek internal tidak melihat aspek ekternal masing-masing Object, sehingga pembuatan program tidak perlu memikirkan terlalu susah, bagaimana program berjalan. Hal ini yang disebut dengan Encapsulation atau data dan perilaku menjadi dalam satu program.
Contoh program memakai konsep encapsulation ini adalah program hak akses. Masing-masing data member memakai hak akses baik private, public maupun protected. Karena itu dibutuhkan yang disebut dengan package atau paket. Paket adalah bagian implicit standar Java untuk mengelompokan class dengan interface menjadi suatu unit, yaitu koleksi dari class dengan nama tertentu. Tujuan mengelompokkan class dalam paket adalah memudahkan dalam menambahkan class ke dalam program. Dengan bergitu penerapan hak akses terhadap suatu variable dan Object.
 Enkapsulasi data dapat dilakukan dengan cara:
1.      mendeklarasikan instance variable sebagai private
2.      mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut

d. Abstraction
Cara kita melihat suatu sistem dalam bentuk yang lebih sederhana, yaitu sebagai suatu kumpulan subsistem  (object) yang saling berinteraksi.Sebagai contoh, Mobil adalah kumpulan sistem pengapian, sistem kemudi, sistem pengereman.Alat meng-abstraksikan sesuatu adalah class. Object bersifat modularity. Object dapat ditulis dan dimaintain terpisah (independen) dari object lain.

e. Aggregation
Agregasi berarti menempatkan objek bersama-sama untuk menjadikannya objek yang lebih besar. Barang-barang atau benda-benda manufaktur biasanya merupakan contoh dari bentuk agregasi. Sebagai contoh, sebuah microwave terbentuk dari sebuah cabinet (semacam lemari kaca), sebuah pintu, sebuah panel indikator, sejumlah tombol, sebuah alat pemanas dan lain sebagainya. Agregasi mengimplikasikan kedekatan ketergantungan. Sebagai contoh, alat pemanas akan tetap menjadi sebuah alat pemanas meskipun kita melepaskannya dari microwave, namun sebuah microwave akan menjadi tidak berguna tanpa sebuah alat pemanas, karena microwave tersebut tidak akan dapat memanaskan makanan lagi.
.

7.   Overloading
Pada C# anda dapat mendeklarasikan method atau konstruktor dengan nama yang sama pada sebuah class, tetapi parameter method tersebut harus berbeda bisa jumlah atau tipe datanya. Pada contoh dibawah ini akan ditunjukan bagaimana cara menggunakan overloading konstruktor
   1: public class Time
   2: {
   3:          // private member variables
   4:          private int Year;
   5:          private int Month;
   6:          private int Date;
   7:          private int Hour;
   8:          private int Minute;
   9:          private int Second;
  10:   
  11:          // public accessor methods
  12:          public void DisplayCurrentTime()
  13:          {
  14:              System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
  15:              Month, Date, Year, Hour, Minute, Second);
  16:          }
  17:          // constructors
  18:          public Time(System.DateTime dt)
  19:          {
  20:              Year = dt.Year;
  21:              Month = dt.Month;
  22:              Date = dt.Day;
  23:              Hour = dt.Hour;
  24:              Minute = dt.Minute;
  25:              Second = dt.Second;
  26:          }
  27:          public Time(string strTime) // overloading konstruktor
  28:          {
  29:              Console.WriteLine(strTime);
  30:          }
  31:  
  32:          public Time(int Year, int Month, int Date,
  33:          int Hour, int Minute, int Second) // overloading konstruktor
  34:          {
  35:               this.Year = Year;
  36:               this.Month = Month;
  37:               this.Date = Date;
  38:               this.Hour = Hour;
  39:               this.Minute = Minute;
  40:               this.Second = Second;
  41:          }
  42:      }
  43:  
  44:      class Tester
  45:      {
  46:          public void Run()
  47:          {
  48:              System.DateTime currentTime = System.DateTime.Now;
  49:              Time time1 = new Time(currentTime);
  50:              time1.DisplayCurrentTime();
  51:              Time time2 = new Time(2000, 11, 18, 11, 03, 30);
  52:              time2.DisplayCurrentTime();
  53:          }
  54:  
  55:          static void Main()
  56:          {
  57:              Tester t = new Tester();
  58:              t.Run();
  59:          }
  60:      }
Selain konstruktor overloading juga bisa diterapkan pada method dalam suatu class yang sama, contoh penulisannya:
   1: void MyMethod(int p1);
   2: void MyMethod(int p1, int p2);    // beda banyak parameter
   3: void MyMethod(int p1, string s1); // beda tipe data



8.   Membuat program OOP untuk menghitung nilai mata kuliah dan konversinya


namespace konversinilai
{
    class nilai
    {
        private double _ntugas;
        private double _nuts;
        private double _npartisipasi;
        private double _nuas;

        public double ntugas
        {
            get { return _ntugas; }
            set { _ntugas = value; }
        }
        public double nuts
        {
            get { return _nuts; }
            set { _nuts = value; }
        }
        public double npartisipasi
        {
            get { return _npartisipasi; }
            set { _npartisipasi = value; }
        }
        public double nuas
        {
            get { return _nuas; }
            set { _nuas = value; }
        }
        public double akhir()
        {
            return 0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas;
        }
        public string huruf()
        {
            string huruf = "";
            if (0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas >= 85)
            {
              huruf = "A";
            }
            else if (0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas <= 85 && 0.3 * _npartisipasi + 0.2 * _ntugas + 0.3 * _nuts + 0.2 * _nuas >= 65)
            {
                huruf = "B";
            }
            else
            {
                huruf = "C";
            }
            return huruf;
        }
        public void tampil()
        {
            Console.WriteLine("Nilai Tugas=" + _ntugas);
            Console.WriteLine("nilai partisipasi=" + _npartisipasi);
            Console.WriteLine("nilai UTS=" + _nuts);
            Console.WriteLine("nilai UAS=" + _nuas);
            Console.WriteLine("nilai Akhir = " + akhir());
            Console.WriteLine("nilai Huruf = " + huruf());
        }
    }

        class Program
        {
            static void Main(string[] args)
            {
                nilai n1 = new nilai();
                n1.ntugas = 89;
                n1.npartisipasi = 80;
                n1.nuts = 78;
                n1.nuas = 86;
                n1.tampil();

                Console.ReadKey();
            }
        }
    }
























SUMBER: