Selasa, 08 Oktober 2013

Menghitung Nilai Mata Kuliah dan Konversinya dengan Program OOP

OOP DI C#

1. Class
      Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
·      Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
 contoh :

public class ApaMotormu
{
public static void main(String[] args)
   {
      Motor punyaku=new Motor();
      punyaku.motorku();
   }
}

Atribute
      adalah segala sesuatu (data0yang berhubungan dengan karakteristik objec dalam setiap kelas. Tiap atribute memiliki nilai berbeda untuk setiap objek.

 Method 
      Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.


2. Object
      Object adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.
contoh :

public class Peliharaanmu
{
public static void main(String[] args)
   {
      Hewan punyaku=new Hewan();
      punyaku.hewanku();
   }
}

3. Cara membuat Object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
Contoh :
class Date
{
Date hari = new Date();
}
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date. Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().

4. 

Senin, 07 Oktober 2013

Object Oriented Programing di C# (OOP)

Pengantar OOP
      Aplikasi berbasis windows dan web adalah program yang sangat kompleks yang menyajikan tampilan menarik kepada user dan menawarkan user interface yang kompleks dengan tombol, dropdown, popup menu, toolbox, dan masih banyak komponen yang lain. Dibelakang user interface tersebut masih ada hubungan bussiness prosess yang kompleks seperti misal hubungan antara Product, Customer, dan Order yang melibatkan banyak logika dan pengolahan data.
      Untuk menangani berbagai kompleksitas yang terjadi maka programmer mengembangkan teknik yang diberi nama “Objcet Oriented Programming”, dengan tujuan yang sederhana yaitu mengatur kompleksitas dengan memodelkan aspek esensial yang ada. Jika model yang dikembangkan semakin mendekati problem yang akan dipecahkan maka semakin mudah *** persoalan tersebut dapat dimengerti sehingga program lebih mudah ditulis dan di-maintain.
      Problem yang akan dipecahkan dan semua informasi yang berhubungan dengan problem tersebut sering disebut sebagai problem domain. Misal jika anda ingin membuat program untuk keperluan Inventory dan Sales di suatu perusahaan maka problem domainnya adalah semua informasi tentang perusahaan tersebut yang berhubungan dengan pengaturan stok inventory, cara penjualan, pemasukan penjualan dan data lainnya. Manaager penjualan dan Manager bagian gudang akan menjadi problem domain expert yang dapat membantu anda dalam menyelesaikan masalah.

      Design dari Object Oriented harus berisi objek-objek yang ada pada problem domain tersebut. Sebagai contoh jika problem domainnya adalah mesin ATM maka objek didalamnya seharusnya adalah customer, rekening, dll.

Sejarah singkat OOP
      Object-Oriented Programming (OOP) adalah sebuah pendekatan untuk pengembangan suatu software dimana dalam struktur software tersebut didasarkan kepada interaksi object dalam penyelesaian suatu proses/tugas. Interaksi tersebutmengambil form dari pesan-pesan dan mengirimkannya kembali antar object tersebut. Object akan merespon pesan tersebut menjadi sebuah tindakan /action atau metode. Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan mengetahui bahwa kita berinteraksi dalam sebuah object-oriented world.
     Object-oriented programs terdiri dari objects yang berinteraksi satu sama lainnya untuk menyelesaikan sebuah tugas. Seperti dunia nyata, users dari software programs dilibatkan dari logika proses untuk menyelesaikan tugas.
      Contoh, ketika kamu mencetak sebuah halaman di word processor, kamu berarti melakukan inisialisasi tindakan dengan mengklik tombol printer. Kemudian kamu hanya menunggu respon apakah job tersebut sukses atau gagal, sedangkan proses terjadi internal tanpa kita ketahui. Tentunya setelah kamu menekan tombol printer, maka secara simultan object tombol tersebut berinteraksi dengan object printer untuk menyelesaikan job tersebut.
      Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa program SIMULA kemudian dilanjutkan di era 70-an dengan SMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan. Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer computer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang software menggunakan konsep OOP seperti Java dll. Di tahun 2002, versi terakhir dari Visual Studio, Microsoftmemperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp), C# adalah salah satu bahasa pemrograman yang berjalan diatas platform dotNet yang full OOP (object oriented programing/pemrograman berorientasi objek) serta upgrade Visual Basic, dan ini merupakan sebuah bahasa OOP sesungguhnya.


Apakah OOP (Object Oriented Programming) itu?
      Untuk meningkatkan daya pengolahan komputer, perangkat lunak (software) yang dijalankan menjadi lebih kompleks. Dalam peningkatan kompleksitas ini, dibutuhkan biaya program yang besar dengan codebases besar yang sulit untuk dipahami. Oleh sebab itu, keberadaan OOP ditujukan untuk berusaha mengatasi masalah tersebut.
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi, setiap bagian dari suatu permasalahan adalah objek, objek itu sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.


Konsep Object Oriented Programming
      Konsep dari object oriented programming (OOP) adalah lebih dari sekedar sebuah konsep pemrograman, Object oriented programming adalah cara berpikir tentang aplikasi yang mempelajari untuk berpikir bahwa aplikasi bukan sekedar prosedur melainkan sebagai object dan real entity.
Object yang dimaksud disini memiliki pengertian suatu modul yangmengkombinasikan antara data dan kode program yang bekerja sama dalamprogram dengan melewatkan proses satu sama lain. Jadi object orientedprogramming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali.Object oriented programming lebih memfokuskan kepada manipulasi object. Kenapa seorang programmer harus mempelajari object oriented programming bahkan seorang programmer yang tidak pernah bekerja dengan object orientedprograming pun harus mempelajarinya juga. Hal ini dikarenakan pada suatu hari nanti semua bahasa pemrograman akan menambahkan kemampuan object oriented programming pada bahasanya.
Berikut empat konsep yang harus dapat dimiliki oleh suatu bentuk pemrograman yang berorentasi object :
1. Abstraction
      Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction. Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
  1: public abstract class Control {
   2:         private int top;
   3:         private int left;
   4: 
   5:         protected int Top {
   6:             get { return this.top;}
   7:             set { this.top = value;}
   8:         }
   9:         protected int Left {
  10:             get {return this.left;}
  11:             set {this.left = value;}
  12:         }
  13:         public Control(int top, int left) {
  14:             Top = top;
  15:             Left = left;
  16:         }
  17:         //abstract method harus diimplementasikan
  18:         public abstract void DrawWindow();
  19:     }
  20: 
  21:     public class ListBox : Control {
  22:         private string listBoxContent;
  23:         public ListBox(int top, int left, string contents)
  24:             : base(top, left) {
  25:             this.listBoxContent = contents;
  26:         }
  27: 
  28:         public override void DrawWindow() {
  29:             Console.WriteLine("Position :({0},{1})", Top, Left);
  30:             Console.WriteLine("Menuliskan string pada listbox: {0}",
  31:               listBoxContent);
  32:         }
  33: 
  34:     }
  35: 
  36:     public class Button : Control {
  37:         public Button(int top, int left) : base(top, left) { }
  38:         public override void DrawWindow() {
  39:             Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
  40:         }
  41:     }
  42:     class LatAbstract {
  43:         static void Main(string[] args) {
  44:             Control[] winArray = new Control[3];
  45:             winArray[0] = new ListBox(5, 10, "Pada ListBox");
  46:             winArray[1] = new Button(5, 6);
  47:             for (int i = 0; i < 2; i++) {
  48:                 winArray.DrawWindow();
  49:             }
  50:         }
  51:     }
Tapi untuk kasus diatas abstract masih mempunyai keterbatasan, jika anda ingin membuat class DropDownList yang hendak diturunkan dari class ListBox, maka anda tidak dapat memaksakan method DrawWindow() harus ada di class tersebut.

2. Encapsulation
      Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlumenghubungkan semua benda-benda bersama, mungkin dapatmenambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu bekerja untuk menulis, bagaimana sistem saraf pusat memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}


3. Inherintance
      Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.
Contoh:
1: public class Window {
2:         //variabel dideklarasikan private
         sehingga tidak bisa diakses oleh kelas
3:         //turunannya
 4:         private int top;
 5:         private int left;
6: 
7:         //objek konstruktor
 8:         public Window(int top, int left) {
9:             this.top = top;
10:             this.left = left;
11:         }
12: 
13:         public void DrawWindow() {
14:             Console.WriteLine(“Draw window pada ({0},{1})”,
15:                 top, left); 
         16:         }
         17: }
          18: 
          19:     public class ListBox : Window {
         20:         //member variable baru pada class anak
         21:         private string listBoxContent;
         22:         public ListBox(int top, int left, string contents):base(top,left) {
         23:             this.listBoxContent = contents;
         24:         }
         25: 
         26:         //versi baru karena override dari base classnya
         27:         public new void DrawWindow() {
          28:             base.DrawWindow();
         29:             Console.WriteLine(“Menuliskan string pada listbox: {0}”,
         30:             listBoxContent);
         31:         }
         32:     }
         33: 
         34:     class LatInheritance {
         35:         public static void Main(string[] args) {
         36:             Window objWindow = new Window(10, 15);
         37:             objWindow.DrawWindow();
         38: 
         39:             ListBox objList = new ListBox(15, 20, “Hello ListBox”);
         40:             objList.DrawWindow();
         41:         }
         42:     }
4. Polymorphism
      Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
      Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.


Contoh :
class Binatang
{
public void info()
{
System.out.println(” Info tentang Hewan : “);
}
}
class Herbivora extends Binatang
{
public void info()
{
System.out.println (“Info pada herbivora: Memakan makanan berupa tumbuh – tumbuhan”);
}
}
class Kelinci extends Herbivora
{
public void info()
{
System.out.println(“Info pada Kelinci: Memakan makanan berupa wortel”);
}
}
public class Polimorfisme
{
public static void main(String[] args)
{
Herbivora herbivora;
Kelinci kelinciku;
Binatang hewan;
herbivora=new Herbivora();
kelinciku=new Kelinci();
hewan=herbivora;
hewan.info();
hewan=kelinciku;
hewan.info();
}
}

Aggregation
Aggregation adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects mesin, object pisau dan lain-lain. Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat. Pemrograman visual membawa OOP ke level berikutnya. Tujuan pemrograman visual adalah agar pemrograman menjadi lebih mudah bagi para programmer dan lebih mudah diakses oleh kalangan nonprogrammer dengan meminjam bahasa OOP, dan mempraktikanya secara grafis atau visual. Pemrograman visual memungkinkan pengguna untuk lebih focus pada pemecahan masalah ketimbang cara menangani bahasa pemrograman.


6. Modularitas
      Selain konsep yang dijelaskan di atas, pemrograman berorientasi objek juga memungkinkan peningkatan modularitas. Sedangkan arti katamodularitas adalah memecahkan sesuatu yang kompleks menjadi bagian-bagian kecil yang mudah dikendalikan. Kelas atau kelompok kelas terkait dapat dianggap sebagai modul kode yang dapat digunakan kembali dalam proyek perangkat lunak banyak. Hal ini mengurangi kebutuhan untuk membangun kembali fungsi yang sama dan karena itu dapat menurunkan waktu dan biaya pengembangan.
      Dalam pemograman berorientasi Objek dikenal Ada beberapa pengertian dasar yang harus kita ketahui yaitu:
a. Class
      Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
·      Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
 contoh :
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
b. Object
      Object adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.
contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}

c. Method
      Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
d. Behavior
       Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior merupakan kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.
e. Contruktor
      Contruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan constructor, hal mendasar yang perlu diperhatikan, yaitu :
1. Nama Constructor sama dengan nama Class.
2. Tidak ada return type yang diberikan kedalam Constructor Signature.
3. Tidak ada return stetement, didalam tubuh constructor.
f. Constructor Overloading
      Overloading adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
Berikut adalah penjelasan selengkapnya.

A.Class dan Objek
      Untuk membuat Class dengan C# maka berikut adalah sintaks yang mesti diketahui.

[attribute]
[access-modifier] class nama_class [: [base-class [, interface(s)]]
{
class-body
}

Keterangan :
1. Attribute, adalah penanda untuk menerangkan class dan untuk kebutuhan tertentu.
2. Access-modifier dapat berupa public, private, protected, internal dan protected internal.
a. public, tidak ada batasan, class dapat digunakan oleh semua class.
b. private, terbatas tidak dapat digunakan pada class lain.
c. protected, terbatas digunakan oleh class turunannya.
d. internal, dapat digunakan secara internal di dalam class.
3. Tanda “:” untuk pengganti kata kunci extends bagi yang sudah mengenal OOP
pada Java atau PHP.

Contoh Listing Program :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
[Obsolete("Class ini sudah tidak digunakan lagi", true)]
public class VariableExample : CommonMath
{
}
}

Pada contoh di atas dapat dilihat class dengan nama VariableExample dengan accessmodifier
public. Class VariableExample merupakan turunan dari class CommonMath.
Class VariableExample mempunyai attribute seperti yang telah ditulis di atas, fungsi
attribute di atas sebagai penanda bahwa class ini sudah tidak bisa digunakan lagi dan akan
menghasilkan error bila digunakan.
Setelah class dibuat maka pada kondisi tertentu class tersebut dapat diinstansiasi menjadi
sebuah 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();
}
}
}

Perbedaan Class dan Object
      Jika anda ingin membangun rumah Class adalah blueprint / gambar (berisi spesifikasi lengkap dari rumah yang akan dibuat, ukuran, jumlah, dll). Sedangkan object adalah bentuk fisik / rumah yang dibangun berdasarkan blueprint / class yang sudah ada, biasa disebut instan class / object.

Elemen Pada Class
     Class pada C# terdiri dari :
· Instance Variable / Field
· Method: Method digunakan untuk merubah state pada field.

Mendefinisikan Class
Class di C# dapat terdiri dari kumpulan variable (field), property dan method. Cara untuk menggunakan class adalah dengan membuat instan class-nya. Untuk menjalankan class maka harus ada satu method main pada class tersebut. contoh pendeklarasian class di C# sebagai berikut:

   public class Time
    {
      // private variables atau field
      private int year;
      private int month;
      private int date;
      private int hour;
      private int minute;
      private int second;
 
     // public methods
     public void DisplayCurrentTime()
     {
         Console.WriteLine(“Menampilkan Waktu..”);
     }
  }
   
  class Program
  {
  static void Main(string[] args)
        {
               Time timeObject = new Time(); //membuat instan class
               timeObject.DisplayCurrentTime(); //memanggil method dalam class
        }

  }

C# Modifier
    C# memiliki beberapa modifier class yaitu:

Image

Access Modifiers
      Access Modifiers digunakan untuk menentukan hak akses dari class dan method, adapun access modifier yang ada pada C# sebagai berikut:

Image


B.Method dan Field

Ada dua jenis method, yaitu :
1. Method yang tidak melemparkan nilai biasanya disebut procedure.
Sintaks :

[access-modifier] void nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}

Contoh :

ClassExamle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public void Tambah(int bilanganA, int bilanganB)
{
int hasil = bilanganA + bilanganB;
System.Console.WriteLine(hasil);
}
}
}

Contoh penggunaan :


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)
{
ClassExample classExample = new ClassExample();
classExample.Tambah(3, 10);
System.Console.ReadKey();
}
}
}


2. Method yang melemparkan nilai biasanya disebut function.
Sintaks :

[access-modifier] tipe_data nama_method(tipe_data parameter-1, ... tipe_data parameter-N)
{
}

Contoh :

ClassExamle.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int Kurang(int bilanganA, int bilanganB)
{
return bilanganA - bilanganB;
}
}
}

Contoh penggunaan :


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)
{
ClassExample classExample = new ClassExample();
System.Console.WriteLine(classExample.Kurang(17,4));
System.Console.ReadKey();
}
}
}

      Method pada C# dapat memiliki banyak argumen dengan tipe data yang berbeda. Method juga dapat memiliki nama yang sama asal parameter / tipe datanya berbeda (Method Overloading).
 
class MyClass {
           public void SomeMethod(int firstParam, double secondParam) {
               Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
                   firstParam, secondParam);              
           }
 
           //overload method
           public void SomeMethod(int firstParam) {
               Console.WriteLine(“Parameter 1 : {0}”, firstParam);
           }
 
           public void SomeMethod(int firstParam, string secondParam) {
               Console.WriteLine(“Parameter 1 : {0} dan parameter 2 : {1}”,
                   firstParam, secondParam);
           }
       }
 
       class MethodArgumen {
           static void Main(string[] args) {
               MyClass m1 = new MyClass(); //membuat instan object
               m1.SomeMethod(12, 1.25);
               m1.SomeMethod(34);
               m1.SomeMethod(12, “Hello”);
           }

       }

Field adalah property pada class seperti pada contoh kode berikut :


ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
}
}

      Dari contoh di atas maka field bilangan1 dan bilangan2 dapat diakses secara langsung
sebagai method dari objek di dalam class manapun karena menggunakan public sebagai
access-modifier.





      Sedangkan field nama, karena menggunakan access-modifier protected maka hanya dapat
digunakan oleh class yang merupakan class turunan dari ClassExample.

Contoh :
ClassTurunan.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}

Atau dapat dilihat pada gambar berikut :



      Pada class ClassExample terdapat field yang menggunakan access-modifier private. Artinya
field ini hanya bisa digunakan di dalam class tersebut.
      Field pada suatu class secara default mempunyai access-modifier private dan memang
seharusnya tetap seperti itu. Agar class lain dapat melakukan pengambilan (get) atau pengisian (set) nilai field tersebut maka perlu dibuat public method yang berfungsi untuk itu.
      Public method ini dideklarasikan bukan seperti method yang telah dibuat sebelumnya,
istilah yang tepat sebagai pengganti nama ‘method’ untuk fungsi seperti di atas adalah Property.

Cara mendeklarasikan Property adalah sebagai berikut :
ClassExample.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public int bilangan1;
public int bilangan2;
private string hasil;
protected string nama;
public string Hasil
{
get {return hasil;}
set {hasil = value;}
}
}
}

     Dengan cara di atas maka field hasil dapat diberikan nilai (set) dan diambil nilainya (get)
oleh semua class.

public string Hasil
{
get {return hasil;}
set {hasil = value;}
}

Kode di atas dapat dipersingkat lagi penulisannya dengan cara berikut :
public string Hasil
{
get;
set;
}


Konstruktor
      Konstruktor adalah method yang namanya sama dengan nama class-nya. Konstruktor digunakan untuk inisialisasi variabel ketika membuat instan class / objek baru. Sebenarnya setiap kali anda membuat instant class / objek baru maka konstruktor dijalankan. Jika anda tidak mendefinisikan konstruktor secara eksplisit maka tetap dianggap membuat konstruktor kosong. Konstruktor juga dapat di-overload (anda dapat membuat konstruktor lebih dari satu asal parameternya jumlahnya beda atau tipe datanya beda). Variabel dalam class harus diinisialisasi, nilai defaultnya adalah

Image

        public class Time {
          // private member variables
          int Year;
          int Month;
          int Date;
          int Hour;
          int Minute;
          int Second;

          // constructor
          public Time(System.DateTime dt) {
              Year = dt.Year;
              Month = dt.Month;
              Date = dt.Day;
              Hour = dt.Hour;
              Minute = dt.Minute;
              Second = dt.Second;
          }

          // public methods
          public void DisplayCurrentTime() {
              System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”,
                Month, Date, Year, Hour, Minute, Second);
          }
       
      }

      class LatKonstruktor {
          public static void Main(string[] args) {
              DateTime currTime = DateTime.Now;
              Time t = new Time(currTime); //memanggil constructor
              t.DisplayCurrentTime();
          }
      }

Initializer
      Pada C# anda bisa menginisialisasi variabel dalam class secara langsung tanpa harus mengisialisasi-nya lewat konstruktor.
 
public class Time
  {
         // private member variables
         int year;
         int month;
         int date;
         int hour;
         int minute;
         int second = 30; //initializer
  }

“This” Keyword
      This keyword digunakan untuk mengakses instan class / objek itu sendiri, penggunaan keyword this diperlukan untuk membedakan pengaksesan class variabel dan method variabel yang mempunyai nama yang sama.

  public class Time {
  // private member variables, class variable
  int year;
  int month;
  int date;
  int hour;
  int minute;
  int second = 30;

  public void SetTime(year, month, date, newHour, newMinute, newSecond) {
        this.year = year;         // penggunaan “this” dibutuhkan
        this.month = month;       // dibutuhkan
        this.date = date;         // dibutuhkan
        this.hour = hour;         // penggunaan “this” optional
        this.minute = newMinute;  // optional
        second = newSecond;       // optional
  }

  }

 C.Static Member

      Pada bagian sebelumnya telah dijelaskan cara membuat class, method dan field. Pada
contoh di atas terlebih dahulu harus dibuat instance dari class agar dapat mengakses
method atau field.
      Pada bagian ini akan dijelaskan cara membuat method agar dapat digunakan tanpa harus
melakukan instansiasi class terlebih dahulu.
      Caranya sangat mudah yaitu dengan menambahkan kata kunci static pada method yang
diinginkan seperti pada contoh berikut :

ClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Console
{
public class ClassExample
{
public static void Kali(int bilanganA, int bilanganB)
{
int hasil = bilanganA * bilanganB;
System.Console.WriteLine(hasil);
}
}
}

Untuk menggunakan method ini cukup dengan menulis kode seperti berikut ini :

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
class Program
{
ClassExample.Kali(3, 10);
System.Console.ReadKey();
}
}
}

Menggunakan Using Statement
      Untuk memudahkan developer C# menyediakan statement using untuk memastikan bahwa method dispose dijalankan. (kadang kita lupa untuk memanggil method dispose ini). Penggunaan using hanya bisa digunakan untuk class yang mengimplementasikan IDisposable.
 
class LatDispose {
         public static void Main(string[] args) {
             using (Testing t1 = new Testing()) {
                 Console.WriteLine("Menggunakan Keyword Using..");
             }
         }
     }

Passing Parameter
      Parameter pada C# secara default yang dikirimkan kedalam method adalah nilainya, atau “pass by value”. jadi jika ada perubahan nilai parameter pada method tersebut tidak berpengaruh ke method.
 
public class Time {
         // private member variables
         private int Year;
         private int Month;
         private int Date;
         private int Hour;
         private int Minute;
         private int Second;
  
         public void DisplayCurrentTime() {
             System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
               Month, Date, Year, Hour, Minute, Second);
         }
  
         public int GetHour() {
             return Hour;
         }
  
         public void GetTime(int h, int m, int s) {
             h = Hour;
             m = Minute;
             s = Second;
         }
  
         public Time(System.DateTime dt) { //konstruktor
             Year = dt.Year;
             Month = dt.Month;
             Date = dt.Day;
             Hour = dt.Hour;
             Minute = dt.Minute;
             Second = dt.Second;
         }
  
         class MethodByReference {
  
             public static void Main(string[] args) {
                 System.DateTime currentTime = System.DateTime.Now;
                 Time t = new Time(currentTime);
                 t.DisplayCurrentTime();
  
                 int theHour = 0;
                 int theMinute = 0;
                 int theSecond = 0;
                 t.GetTime(theHour, theMinute, theSecond);
                 System.Console.WriteLine("Current time: {0}:{1}:{2}",
                   theHour, theMinute, theSecond);
             }
         }
     } 

Jika ingin mengirimkan parameter referenced / ‘pass by reference’ anda dapat menambahkan keyword ref sebelum tipe data pada method parameternya.

 //tambahkan keyword ref pada parameter
 public void GetTime(ref int h,ref int m,ref int s) {
             h = Hour;
             m = Minute;
             s = Second;
 }
  
 //pada method main tambahkan ref pada method pemanggil
 int theHour = 0;
 int theMinute = 0;
 int theSecond = 0;
 t.GetTime(ref theHour, ref theMinute, ref theSecond);
   System.Console.WriteLine("Current time: {0}:{1}:{2}",

   theHour, theMinute, theSecond);


 D.Inheritance dan Polymorphism

      Inheritance atau penurunan adalah kemampuan membuat suatu class anak dari suatu class
induk, dimana seluruh field dan method diturunkan kepada class anak, kecuali method atau
field dengan access-modifier private.

Contoh kasus inheritance ini adalah seperti kode berikut :
ClassTurunan.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Console;
namespace STS.Console
{
public class ClassTurunan : ClassExample
{
public void TestMethod()
{
this.nama = "reza";
}
}
}

      Pada kode di atas, yang menjadi class induk adalah ClassExample dan ClassTurunan
merupakan class anaknya. Baris berikut menyatakan cara membuat class ClassTurunan
sebagai turunan dari class ClassExample.

public class ClassTurunan : ClassExample

      Polymorphism bila diartikan dengan melihat arti dari kata penyusunnya yaitu poly yang
berarti “banyak dan morph yang berarti “bentuk” maka secara keseluruhan artinya adalah
“banyak bentuk”. Masih berhubungan dengan inheritance atau penurunan, misalkan dibuat class yang akan
menjadi class induk seperti berikut :

CurveMath.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace STS.Common.Math
{
public class CurveMath
{
private int panjang;
private int lebar;
private int jejari;
public int Panjang
{
set{panjang = value;}
get { return panjang; }
}
public int Lebar
{
set { lebar = value; }
get { return lebar; }
}
public int Jejari
{
set { jejari = value; }
get { return jejari; }
}
public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}
}
}

      Pada kode di atas dapat dilihat terdapat kata kunci virtual pada method berikut :

public virtual void HitungLuas()
{
System.Console.WriteLine(Panjang * Lebar);
}

      Artinya method ini dapat diubah menjadi bentuk lagi dengan cara di-override. Seperti yang
dilakukan oleh class Lingkaran.

Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
}
}

      Pada kode di atas dapat dilihat digunakan kata kunci override, kata kunci ini hanya dapat
digunakan kepada method yang menggunakan kata kunci virtual.

Enkapsulasi data dengan Property
      Enkapsulasi / penyembunyian informasi adalah konsep yang selama ini sering anda dengar. Pada OOP informasi dibungkus dalam sebuah Class sehingga orang yang menggunakan class tersebut tidak perlu tahu detail-nya, hanya cukup mengetahui method dan property apa saja yang ada dalam class tersebut beserta kegunaannya. Pada pemrograman berorientasi objek variabel dalam class biasanya diberi access modifier private, ini berarti hanya method dalam class tersebut yang dapat mengakses variabelnya.
      Jika anda membuat variable tersebut public maka user yang menggunakan class tersebut bisa memasukan nilai yang tidak kita inginkan, maka anda harus mendeklarasikan variable tersebut secara private agar pada saat setMethod() anda dapat menambahkan validasi inputan dari user.Anda bisa membuat public method set dan get untuk memberi dan mengambil nilai variabel tersebut, misal:
 
// private member variables
           private int Year;
    
            public int getYear() //get method
           {
               return this.Year;
           }
    
           public void setYear(int Year) //set method
           {
               this.Year = Year;
           }
      Selain menggunakan cara tersebut diatas pada C# disediakan object property untuk memberi nilai dan mengambil nilai dari private variabel dalam suatu class. Penggunaan object property lebih memudahkan anda dalam penulisan kode dibandingkan harus membuat dua method set dan get untuk mengakses satu variabel private. Contoh penggunaan property dapat dilihat pada contoh kode dibawah ini.
 
class Mahasiswa {
         private string nim;
         private string nama;
  
         public string Nim {
             get {
                 return nim;
             }
             set {
                 this.nim = value;
             }
         }
  
         public string Nama {
             get {
                 return nama;
             }
             set {
                 this.nama = value;
             }
         }
  
         public string DisplayInfo() {
             return Nim + " " + Nama;
         }
     }
  
     class ClassProperty {
         public static void Main(string[] args) {
             Mahasiswa mhs1 = new Mahasiswa();
             mhs1.Nim = "22002321";
             mhs1.Nama = "Erick";
             Console.WriteLine(mhs1.DisplayInfo());
         }
     }

Inheritance
      Pada C# hubungan spesialisasi diimplementasikan menggunakan prinsip inheritance. Penulisan inheritance di C# sebagai berikut
public class ListBox : Window
Kode diatas berarti class ListBox adalah turunan dari class Window

Penggunaan inheritance dapat dilihat pada program dibawah ini

 public class Window {
         //variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas 
         //turunannya
         private int top;
         private int left;
  
         //objek konstruktor
         public Window(int top, int left) {
             this.top = top;
             this.left = left;
         }
  
         public void DrawWindow() {
             Console.WriteLine("Draw window pada ({0},{1})",
                 top, left);
         }
     }
  
     public class ListBox : Window {
         //member variable baru pada class anak
         private string listBoxContent;
          public ListBox(int top, int left, string contents):base(top,left) {
             this.listBoxContent = contents;
         }
  
         //versi baru karena override dari base classnya
         public new void DrawWindow() {
             base.DrawWindow();
             Console.WriteLine("Menuliskan string pada listbox: {0}", 
             listBoxContent);
         }
     }
  
     class LatInheritance {
         public static void Main(string[] args) {
             Window objWindow = new Window(10, 15);
             objWindow.DrawWindow();
  
             ListBox objList = new ListBox(15, 20, "Hello ListBox");
             objList.DrawWindow();
         }

     }

 E.Method Overloading

      Method overloading, untuk mengetahui arti dari istilah ini maka bisa melihat terlebih
dahulu baris kode di bawah ini :

Lingkaran.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
namespace STS.Console
{
public class Lingkaran : CurveMath
{
public override void HitungLuas()
{
System.Console.WriteLine(3.14 * Jejari * Jejari);
}
/// <summary>
/// Tidak ada parameter
/// </summary>
public void Tambah()
{
System.Console.WriteLine(3 + 10);
}
/// <summary>
/// Terdapat satu parameter
/// </summary>
public void Tambah(int bilangan)
{
System.Console.WriteLine(3 + bilangan);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data int
/// </summary>
public void Tambah(int bilangan1, int bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
/// <summary>
/// Terdapat dua parameter dengan tipe data double
/// </summary>
public void Tambah(double bilangan1, double bilangan2)
{
System.Console.WriteLine(bilangan1 + bilangan2);
}
}
}

      Pada kode di atas dapat dilihat terdapat tiga method dengan nama yang sama yaitu Tambah
perbedaan tiap method adalah dilihat dari jumlah parameter dan tipe data yang digunakan.
Contoh kode di atas adalah praktik dari Method Overloading. Pada Visual Studio saat ingin
menambahkan method Tambah maka dapat dilihat tampilan seperti pada gambar berikut :

      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.

 F.Collection

1.Array
      Array adalah suatu struktur data yang dapat menyimpan data dengan tipe yang sama dan
diakses dengan menggunakan suatu indeks yang menunjukan suatu elemen didalam array
tersebut.
      Variabel yang disimpan di dalam array ini disebut juga dengan elemen array dan tipe
datanya disebut dengan tipe elemen dari array.
Mendeklarasikan Array
      Adapun sintaks yang digunakan untuk mendeklarasikan array adalah :


type_data[] namaVariable;
Contoh :
string[] namaBulan;

2.Inisialisasi Array
      Untuk memberikan nilai ke dalam suatu variabel array dapat dilakukan dengan beberapa
cara. Pertama dengan menggunakan kata kunci new untuk menentukan jumlah elemen
yang dapat disimpan oleh array dilanjutkan dengan memberi nilai masing-masing elemen.

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)
{
string[] namaBulan = new string[12];
namaBulan[0] = "Januari";
namaBulan[1] = "Februari";
}
}
}

Cara kedua dengan cara langsung memberi nilai pada saat deklarasi seperti contoh berikut :
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)
{
string[] namaBulan = { "Januari", "Februari" };
}
}
}

Berikut ini adalah contoh program untuk mengakses array.
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)
{
string[] namaBulan = { "Januari", "Februari", "Maret" };
for (int i = 0; i < namaBulan.Length; i++)
{
System.Console.WriteLine(namaBulan[i]);
}
System.Console.ReadKey();
}
}
}

3.Collection
      Collection berfungsi sebagai kontainer untuk menyimpan sekumpulan objek. Collection
mirip dengan konsep array. Untuk mengakses data dalam collection biasanya dilakukan
dengan melakukan iterasi terhadap data yang ada dalam collection atau dapat juga diakses
dengan menggunakan indeks atau indexers.
ArrayList
Berikut adalah contoh penggunaan ArrayList.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
al.Add(p1);
Pegawai p2 = new Pegawai();
p2.Nama = "Faisal";
p2.Umur = 25;
al.Add(p2);
System.Console.WriteLine("Jumlah objek : " + al.Count);
for (int i = 0; i < al.Count; i++)
{
int j = i + 1;
Pegawai pegawai = (Pegawai)al[i];
System.Console.WriteLine(j + ". " + pegawai.Nama
+"("+pegawai.Umur+")");
}
System.Console.ReadKey();
}
}
}

4.Hashtable
      Berbeda dengan ArrayList, Hashtable mempunyai key. Berikut contoh pemanfaatan Hashtable.

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Common.Math;
using System.Collections;
namespace STS.Console
{
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
Pegawai p1 = new Pegawai();
p1.Nama = "Reza";
p1.Umur = 30;
ht.Add("P1", p1);
Pegawai p2 = new Pegawai();
3-46
p2.Nama = "Faisal";
p2.Umur = 25;
ht.Add("P2", p2);
System.Console.WriteLine("Jumlah objek : " + ht.Count);
IDictionaryEnumerator enumerator = ht.GetEnumerator();
while (enumerator.MoveNext())
{
Pegawai pegawai = (Pegawai)enumerator.Value;
System.Console.WriteLine(enumerator.Key.ToString() + " " +
pegawai.Nama
+ "(" + pegawai.Umur + ")");
}
System.Console.ReadKey();
}
}
}

REFERENSI
file:///C:/Users/user/Downloads/oop-di-pemograman-c.html



http://lehaqueenzy.wordpress.com/about/. Pengertian OOP. Diakses tanggal 15 Mei 2013.

http://id.wikipedia.org/w/index.php?title=Pemrograman_berorientasi_objek&oldid=6620271. Pemrograman       Berorientasi Objek. Diakses tanggal 15 Mei 2013.
      Carr,Richard . 2010. Konsep Pemrograman Berorientasi Objek pada C#.Terjemah

http://www.blackwasp.co.uk/ObjectOrientedConcepts.aspx. Diakses tanggal 15 Mei 2013.

Oktavia, Elvi. 2010. Konsep Object Oriented Programming (OOP) dalam Pemrograman Visual. Fakultas          Ilmu Komputer Jurusan Sistem Informasi:Universitas Sriwijaya.