Category Archives: Dasar Pemrograman

Pengetahuan Dasar Network Programming (socket programming)

Network programming perlu kita pelajari sebab microcontroller   yg ada  sekarang selain berkomunikasi dgn serial RS232/rs485  juga sudah banyak yang menggunakan komunikasi  jaringan komputer/ LAN dan internet.  Sehingga dengan begitu microcontroller bisa diakses/dikendalikan dari PC lewat LAN  ataut internet atau istilah kerennya iot , internet of thing.

Control via internet

Network Layer

Layer network

Gambar dibawah ini untuk mengingatkan kembali, bagaimana paket data/pesan mesti melalui  lapisan lapisan  supaya  sampai ke tujuan.

network Layer

Untuk sampai ketujuan pesan (paket data) yg kita kirim harus melalui beberapa tahap/layer:
– Lapisan aplikasi : aplikasi  FTP, SMTP, HTTP  : aplikasi chating ,catur online, mozilla dll
-Lapisan transport: process-process data transfer yaitu  TCP dan  UDP
-Lapisan Internet:  membuat rute   datagrams dari  sumber ke tujuan : IP digunakan mencari  rute
-Lapisan Network Interface: data transfer PPP, Ethernet
-Lapisan Phisik:  pengiriman bit per bit  (5 volt atau o volt)
 untuk lebih ringkasnya lihat gambar berikut:
 tcpnetworkdari gambar diatas dpt dijelaskan bahwa untuk sampai ke komputer yg dituju  paket data menggunakan  alamat IP dan untuk mencapai aplikasi yg dituju menggunakan  nomor port  , kombinasi keduanya di sebut socket.
Untuk lebih jelasnya akan dijelaskan dibawah ini

jika Surat/paket ditujukan ke alamat Kontrakan,  perlu no pintu kan?

jika kita ingin mengirim surat ke seseorang yg tinggal di sebuah rumah kontrakan dgn 1000 pintu:-),  maka kita perlu alamat rumah kontrakan dan nomor pintu si penerima , karena  kontrakan  yg dituju dihuni   beberapa orang. Jika  hanya alamat rumah kontrakan saja  maka surat tdk akan sampai kepada orang yg dituju.  nah socket itu ibarat gabungan  alamat kontrakan dan  no pintu

alamat rumah kontrakan  = IP address

no pintu kontrakan =  nomor  port

 

jadi Apa itu  Socket ?  : untuk mencapai tujuan perlu alamat jelas……

Socket adalah gabungan alamat ip dan nomor port.

socket

Berikut ini  contoh aplikasi yg berkomuniaksi lewat LAN atau internet dlm kehidupan sehari hari:

Ada 2 orang yang sedang chating  sambil chating kedunya juga bermain program catur online .

contoh 2 aplikasi network    mempunyai no port berbeda

Untuk  mencapai tujuan,paket  data masing masing aplikasi mempunyai alamat PC  yg dituju dan alamat aplikasi yg dituju.  Alamat PC berupa IP adress dan alamat aplikasi (prosses) berupa nomor port (port yang dimaksud disini bukan port yg ada di microcontroller ).    Kombinasi  IP adress dan nomor port  disebut socket.  Aplikasi dalam contoh gambar di atas yaitu program Catur online  dan Chating

Socket = alamat IP + alamat aplikasi (port)

 

Keterangan ttg Nomor Port:
• Nomor Port  terdiri dari  16 bit integer  :  0 ~ 65,535.
• Server harus menetapkan sebuah nomor port.
• Client program  menentukan  dirinya sebuah epheral nomor port  epheral.
• IANA (Internet Assigned Number Authority)  membagi nomor port
menjadi  3 :
1. no Port  0 sampai  1023 , ditetapkan dan di control oleh
IANA. misal:  no port 23 untuk FTP, 25  untuk  SMTP dan 80 untuk HTTP.
2.nomor port  1024  sampai 49,151   tidak dicontrol oleh  IANA,
tapi dapat di tetapkan penggunaanya oleh IANA.
3. nomor port dinamis 49,152  sampai  65,535  dapat digunakan  untuk proses apa saja disebut juga  epheral port.

Client-Server  :  siapa yang mulai  meminta dilayani , siapa yg melayani..

Jika ada 2 aplikasi yg saling berkomunikasi  maka salah satu aplikasi harus ada yg  memulai dan yg lain menunggu / siap merespon  komunikasi. fihak yg aktif memulai di sebut sebagai client dan fihak yg  passive menunggu (siap merespon/melayani) disebut server.

jadi yang dimaksud client dan server  komunikasi jaringan adalah sebuah aplikasi/program  bukan berupa  hardware .

Karakteristik aplikasi Client
• Diaktifkan oleh user.
• Dijalankan di lokal komputer
• Berinisiatif  sebagai fihak yang memulai  menghubungi server
• Tidak perlu  special hardware atau OS khusus.

Karakteristik aplikasi  Server
• dapat melayani banyak client dalam satu saat.
• program otomatis aktif ketika komputer dinyalakan dan siap melayani permintaan client.
• berjalan di komputer yg disharing( bukan personal komputer).
• Pasive menunggu di kontak oleh client.
• membutuhkan powerful hardware dan OS khusus (misal windows server 2008),  karena harus melayani banyak client.

TCP  atau UDP :  pesan harus sampai  atau yang penting pesan sudah ku sampaikan…

Pesan yang akan kita kirim apakah harus sampai ke tujuan atau yg penting sudah kita kirim sampai atau tdk , tdk terlalu penting artinya ada kemungkinan pesan tdk diterima .

jika pesan harus (wajib) sampai ke si penerima maka kita pilih TCP

jika pesan tdk harus sampai, atau ada kemungkinan tdk diterima kita pilih UDP.

antara TCP dan UDP ada kekurangan dan kelebihannya masing-masing penggunaanya tergantung kebutuhan tiap aplikasi.

TCP mempunyai  transport layer  identitas  6 dan  UDP : 17

Kalau boleh saya umpamakan pesan dgn TCP itu seperti menghubungi orang lain  dgn   handphone   pasti terhubung atau tidak sama sekali.

Kalau UDP itu seperti menghubungi orang2 dengan speaker Toa di mesjid , Bgini contohnya “kepada bapak2 pengurus DKM harap kumpul dimesjid akan ada rapat malem ini”.  Kita tidak tahu pesan  pengumuman tsb sampai atau tdk , krn bapak2 yg dimaksud  mungkin ada yg di rumah atau  ada yg masih  di kantor.

UDP

UDP

TCP :

TCP

penggunaan socket dlm jaringan

Mekanisme Komunikasi antara Client  dan Server 

Jika data bebentuk Stream (TCP)

komunikasi antara client server

Proses komunikasi Client server protokol  TCP  pada  pemrograman C# :

client server TCP dgn C#

Jika menggunakan Datagram (UDP)

mekanisme protokol UDP

Contoh Pemrograman Network dengan C#

Contoh Code Client UDP

kolom alamat  IP Host atau server  jika server berada  dlm 1 PC dgn client isi dgn localhost atau 127.0.0.1

using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;

private void button1_Click(object sender, System.EventArgs e)
{
UdpClient udpClient = new UdpClient();
udpClient.Connect(tbHost.Text, 8080);
Byte[] sendBytes = Encoding.ASCII.GetBytes(“Hello World?”);
udpClient.Send(sendBytes, sendBytes.Length);
}

Contoh Code Server UDP

.

using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;

public void serverThread()
{
UdpClient udpClient = new UdpClient(8080);
while(true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any,0);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString() + “:” +returnData.ToString());
}
}

private void Form1_Load(object sender, System.EventArgs e)
{

Thread thdUDPServer = new Thread(new ThreadStart(serverThread));
thdUDPServer.Start();
}

Click to access doc2396.pdf

Pengetahuan Dasar Pemrograman MultiThread di C#

C# memungkinkan kita mengeksekusi  code secara  parallel melalui  multi-threading.

Apa yg dimaksud dgn Thread

Thread adalah potongan kode yg independent (dari sebuah proses)  yang di ekseskusi oleh CPU yg penjadwalanya di lakukan oleh Operating sytem . Thread dibuat oleh programmer, bagian mana saja yg akan dijadikan thread ditentukan oleh programmer. Setiap thread mendapat jatah waktu  dikerjakan CPU yg disebut quantum.

Perbedaan Multi-Tasking dan Multi-treading

Multitasking adalah beberapa proses aplikasi yang dijalankan secara paralel (sebenarnya sih dijalankan bergantian secara cepat) oleh operating system contohnya anda menjalankan program ms.excel sambil  membuka program  musik WinAmp .  Kita merasakan program  excel dan winamp berjalan bersamaan , padahal sebenarnya CPU diperintahkan oleh  OS mengeksekusi  program excel dan winamp secara bergantian dgn kecepatan tinggi.

Multi-treading adalah beberapa tread potongan program dlm satu proses  yang dilaksana secara paralel (sebenernya sih bergantian secara cepat( kecuali prosesornya multi core)  dan thread dibuat oleh programmer. Contohnya adalah sebuah program server misal chat server maka ia harus melayani permintaan client  yang datang hampir bersamaan secara paralel. server akan membuat thread untuk melayani tiap client yg datang. setiap client dilayani oleh satu thread. sehingga tidak ada antrian jika client yang datang banyak.

Untuk melihat Prosses dan thread yang sedang aktif di OS windows anda bisa menekan Alt+Ctrl+Del  klik menu Task Manager maka akan tampil sbb:

(jika kolom thread tdk tampak , klik menu View ->select colom->di centang/check  thread count.)

Daftar Proses dan jumlah threadnya pada OS windows

Perumpamaan lain multi-threading adalah  Koki di restoran  yang mempunyai anak buah. Untuk setiap pelanggan dilayani oleh 1 anak buah jadi pelanggan tdk perlu menunggu lama. Koki nya adalah program/proses, anak buah kokinya adalah thread.

ilustrasi perbandingan mono thread  dan multi thread

Daur hidup thread

Thread dalam setiap saat mempunyai satu keadaan  dari beberapa keadaan sebagaimana gambar berikut ini:

thrad_lifecycle

Beberapa contoh manfaat Thread

 – Pada user interface

Sebuah proses dlm program biasanya berurutan  spt ini:

Input data->proses data->menampilkan data.

tiap  proses bisa jadi memakan waktu lama.  jika tiap proses di atas masing masing dibuatkan sebuah thread maka  ketika  data sedang di proses input data bisa tetap berlangsung dan ketika proses data sedang berlangsung bisa juga di cancel karena proses diatas berjalan secara paralel.

– Pada aplikasi  server

Misalkan aplikasi webserver , aplikasi ini melayani permintaan page untuk tiap permintaan client yg datang. Tiap client yang datang dilayani oleh 1 thread . jika pada saat yg hampir bersamaan datang 10 client maka akan dibuatkan 10 thread yg melayani secara bersamaan. contoh lain adalah program chat client -server.

Contoh ilustrasi : mencuci tumukan gelas dan piring secara bersamaan
kita buatkan 2 thread . 1 thread untuk mencuci piring dan 1 thread untuk mencuci gelas. sehingga gelas dan piring dicuci  secara paralel.

Multitreading di C#

.NET framework class library   mengelola multithreading di namespace  System.Threading.  adapun class  classnya adalah class thread dan class monitor.   adapun  secara singkat tahapan membuat thread pada program kita adalah
1.  objek thread dibuat   dengan cara
Thread objek_thread = new thread (new Threadstart(obj_methode)
2. lalu thread dimulai dhn methode start.
keterangan:  Threadstart adalah delegate , obj_methode adalah methode yg akan dijalankan delegate threadstart.
Contoh 1 , kita membuat dua buah thread yaitu thread  pertama cuci gelas dan thread kedua cuci piring.
Program mencuci  tumpukan gelas dan tumpukan piring dgn threading

using System;
using System.Threading;   // namespace multithreading

public class MyThread {

public static void Thread1() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(“cuci gelas ke {0}”, i);
Thread.Sleep(3000);
}

}

public static void Thread2() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(“cuci piring ke {0}”, i);
Thread.Sleep(3000);
}
//Thread.Sleep(3000);
}
}

public class MyClass {

public static void Main() {
Console.WriteLine(“mulai mencuci tumpukan gelas dan piring “);

Thread tid1 = new Thread(new ThreadStart(MyThread.Thread1 ) );
Thread tid2 = new Thread(new ThreadStart(MyThread.Thread2 ) );

tid1.Start();
tid2.Start();
}
}

Memang jika di lihat hasil  di layar monitor terlihat secara selang seling, tapi secara tdk terlihat  ke 2 thread di proses paralel.

hasil multithreading di monitor

Hasil program diatas adalah : piring dan gelas di cuci secara bersamaan dan selesai  secara bersamaan.

Kalau program diatas tanpa threading maka hasilnya akan berurutan mencuci gelas sampai selesai baru kemudian mencuci piring sampai selesai.

Program mencuci tumpukan gelas dan piring tanpa threading:

using System;
using System.Threading;

public class non_Thread {

public void cuci_gelas() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(“cuci gelas ke {0}”, i);

}

}

public void cuci_piring() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(“cuci piring ke {0}”, i);

}
}
}

public class MyClass {

public static void Main() {
Console.WriteLine(“=======================================”);
Console.WriteLine(“mulai mencuci tumpukan gelas dan piring “);
Console.WriteLine(“=======================================”);

non_Thread tid1 = new non_Thread();

tid1.cuci_gelas();
tid1.cuci_piring();

Console.WriteLine(“=======================================”);
Console.WriteLine(” Selesai…nyucinya ! “);
Console.WriteLine(“=======================================”);

}
}

program tanpa threading

Hasil dari program diatas adalah: gelas  dicuci  lebih dahulu sampai selseai  kemudian disusul piring.

Contoh ke 2 ,  dua buah thread yaitu iris cabe dan ulek bawang

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication5
{

class ThreadTester
{
static void Main( string[] args )
{
// membuat thread dan beri nama.

kerjaan_thread kerjaan1 = new kerjaan_thread();
Thread thread1 = new Thread ( new ThreadStart( kerjaan1.iris_cabe ) );
thread1.Name = “iris cabe”;

kerjaan_thread kerjaan2 = new kerjaan_thread();
Thread thread2 = new Thread(new ThreadStart(kerjaan1.ulek_bawang ));
thread2.Name = “ulek bawang”;

Console.WriteLine(“================ \n”);
Console.WriteLine( “threads di aktifkan” );
Console.WriteLine(“================ \n”);
// started state -> running state
thread1.Start();
thread2.Start();

Console.WriteLine(“====================================”);
Console.WriteLine( “semua thread (pekerjaan) stand by , siap di kerjakan KOKI ” );
Console.WriteLine(“====================================”);

}

} // end class
class kerjaan_thread
{

private int waktutidur_iriscabe ;
private int waktutidur_ulekbawang ;
private static Random random = new Random();
public kerjaan_thread()
{

waktutidur_iriscabe = 2000;
waktutidur_ulekbawang = 1000;

}
//
public void iris_cabe()
{

for (int i=0; i < 4; i++)
{
Console.WriteLine(“iris cebe ke{0}”, i);
Thread current = Thread.CurrentThread;
Console.WriteLine(current.Name +” diistirahatkan selama ” + waktutidur_iriscabe + ” detik”);
//thread.running -> thread sleeping
Thread.Sleep(waktutidur_iriscabe);
Console.WriteLine(current.Name + “bangun dari istirahat”);
Console.WriteLine(“================ \n”);
}

} // end method masak
public void ulek_bawang()
{
for (int i=0; i< 2; i++)
{
Console.WriteLine(“ulek bawang ke{0}”, i);
Thread current2 = Thread.CurrentThread;
Console.WriteLine(current2.Name + ” diistirahatkan selama ” + waktutidur_ulekbawang + ” detik”);
//thread.running -> thread sleeping
Thread.Sleep(waktutidur_ulekbawang);
// print thread name
Console.WriteLine(current2.Name + ” bangun dari istirahat”);
Console.WriteLine(“================ \n”);
}
}

} // end
}

contoh_thread2

 

Untuk melihat jumlahthread yg running dgn cara  saat program sedang jalan coba anda ketik alt-ctrl-del , kemudian pilih task manager

thread_running

 

syncronisasi thread

Jika ada dua thread yg bersamaan merubah  sebuah data, maka akan terjadi data tdk valid, untuk mencegah ini dibuat mekanisme

THREAD SYNCRON2

Sumber

http://www.codeproject.com/Articles/1083/Multithreaded-Programming-Using-C

– http://www.codeproject.com/Articles/26148/Beginners-Guide-to-Threading-in-NET-Part-1-of-n

– http://www.albahari.info/threading/threading.pdf

– http://www.techrepublic.com/article/a-beginners-guide-to-threading-in-c/1044970

Pengetahuan Dasar File Header ( Header File ) Pada Bahasa C

File header /header file  yaitu file yang berisi deklarasi fungsi dan definisi konstanta. Beberapa file header sudah disediakan di C. File-file ini mempunyai ciri bereksistensi .h. file-file header ini biasanya dipanggil menggunakan fungsi include.

Ada dua bentuk umum dari #include, yaitu

  1. #include <namafileheader.h>  berisi definisi fungsi2 dan konstanta dari compiler  contoh :    include  <stdio.h>
  2. #include “namafileheader.h”  berisi definisi fungsi2 dan konstanta buatan kita sendiri.

Untuk memahami   header file  anda harus mengerti ttg fungsi .  Mari kita ingatkan kembali ttg apa itu fungsi. Fungsi adalah suatu bagian dan program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dan program yang menggunakanya.

fungsi terdiri dari  definisi  dan  deklarasi

contoh  listing program  fungsi.c   :

#include <stdio.h>        // header file
int jumlah(int x, int y)      //deklarasi fungsi
main ()
{
    int i, j, x;
    i = 10;
    j = 20;
    x = jumlah(i, j);        //pemanggilan fungsi
    printf ("hasil penjumlahan adalah %d\n", x);
}

int jumlah(int x, int y)      //definisi fungsi
{
    int z;          
    z = x + y;
    return (z);     
}

 jika kita ingin membuat program header file untuk  fungsi penjumlahan pd program diatas menjadi:

program utama :    fungsi.c

#include <stdio.h>        // header file
#include "penjumlahan.h"
main ()
{
    int i, j, x;
    i = 100;
    j = 200;
    k = jumlah(i, j);        //pemanggilan fungsi
    printf ("nilai k = %d\n", x);
}

header file nya : headerku.h
#include "libraryku.h"
int jumlah(int x, int y)      //deklarasi fungsi

file definisi fungsi : libraryku.c  atau libraryku.lib
int jumlah(int x, int y)      //definisi fungsi
{
    int z;          
    z = x + y;
    return (z);     
}

header_fungsi

 jadi yang dimaksud header file hanya berisi deklarasi fungsi atau konstanta saja. sedangkan kan definisinya atau fungsinya itu sendiri ada di file lain . Untuk fungsi fungsi bawaan dari compiler biasanya definisi fungsi disimpan di dalam file2 library ( berextensi “*.dll” ).

sedangkan untuk fungsi   “printf”   pada program diatas definisinya berada pada file stdio.h

referensi :

  • C & Data Structures  ,P. S. Deshpande  , O. G. Kakde
  • C programming Language,    Dennis M Ritchie ,Brian W Kernighan

Deployment aplikasi .Net dengan ClickOne (membuat file Setup/Installan aplikasi .Net:-)

Deployment Aplikasi

Setelah kita membuat aplikasi .NET misalnya aplikasi  C#  dan kita ingin  aplikasi tsb  bisa di install pada PC lain melalui  jaringan LAN  atau internet. Maka untuk itu kita bisa menggunakan aplikasi ClickOne.  Istilah awamnya kita membuat “file setup atau file installan ”   ,  sedangkan istilah kerenya  ” Deployment  aplikasi”.

Dengan ClikOne kita bisa mendeploy aplikasi  melalui  Web Server (LAN maupun Internet)  , flashdisk , CD atau DVD.

Sebelumnya menggunakan ClickOne saya ingin anda mengingat masa lalu , saat saat indah men Deployment aplikasi pada Visual Basic6:

deployment pada vb6

Deployment Aplikasi pada Visual Basic 6

Saat ini sebaiknya anda meninggalkan aplikasi VB6  dan  mulailah dengan .Net .  Saran saya gunakan  C#   karena  menggabungkan kemudahan VB dan keunggulan bahasa  C.

Deployment Aplikasi C# dengan ClikOne

Untuk  windows  7 , buka  C# .Net  sebagai Admin  ,  dgn cara klik kanan   spt tampak pd gambar.

buka aplikasi C# .Net sbg admin

Buatlah Aplikasi  C# sederhana yang akan kita Deployment.

Contoh Aplikasi Sederhana yg akan di Deploy

Kode Program :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace aplikasiku
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

label1.Text = ” Percobaan aplikasi deployment”;
}
}
}

Deployment Aplikasi  di Web server IIS  

Lalu Klik Project -> Properties

Klik Menu Project -> Properties

Lalu Klick tab Security

Lalu Klik Tab Publish

pilihan menyimpanan net framework

KLIK Publish Wizard

Publish Wizard

Klik Next sampai Finish.

Deployment dapat anda Coba dgn Web Browse spt   Mozila ,google Crome atau IE

hasil deployment pada webserver iis

Selesai.

Jika anda ingin menginstall aplikasi  tsb pada PC lainya  lewat  LAN ketik :

pada mozilla atai IE  http://ipadress/aplikasi/publish.htm  .

misal  http://172.17.143.121/aplikasi/publish.htm

Deployment Aplikasi  di Web server Apache

sebelumnya PC anda harus terinstall Apache ( anda bisa menginstall Xampp atau WAMP)

publish wizard ClickOne ternyata tdk mendukung langsung web Server Apache cara mengatasinya ganti  lokasi Url  pada Tab Publish  dari http://localhost/   ke sebuah folder di hardisk anda  misal folder publish lalu lanjutkan publish wizard sampai selesai. Setelah itu copy folder Publish ke folder  Htdocs  pada webserver Apache.

Hasil akan spt ini:

Hasil Deployment dapat anda Coba dgn Web Browse spt Mozila ,google Crome atau IE

Jika anda ingin menginstall aplikasi  tsb pada PC lainya  lewat  LAN ketik :

pada mozilla atai IE  http://ipadress/publish  .

misal  http://172.17.143.121/publish

Kode-kode bahasa C yang sering tdk dimengerti oleh Pemula

Beberapa kode program bahasa C yang sering tdk dimengerti oleh pemula:

  • 1<<N   Artinya :    geser bit 1 kekiri  sebanyak  N (atau  memberi nilai 1 pada bit  N)
  • x++     Artinya :   x = x + 1    (setelah baris ini dieksekusi nilai x ditambah 1 )
  • ++x     Artinya :   x=x+1        ( sebelum baris ini dieksekusi  nilai x ditambah 1)
  • x+=z    Artinya :       x= x+z
  • if(x==1)
    y=2 ;       
    tdk perlu menggunakan kurung   {   }   krn cuma 1 baris perintah dibawah  if

             if(x==1) 
           {                  // harus  menggunakan {   } karena lebih dari 1 baris
                y=2;
                z=3;
            }

  • return 0;    artinya pemberitahuan ke operating system bahwa  program  main()  selesai dieksekusi dan  berakhir normal
  •  if(test)     ini sama dengan if ( test <> 0 )

  • x = y > 7 ? 25 : 50;      ini artinya  sama dengan :
if(y > 7)
x = 25;
else
x = 50;
  • merubah string ke bilangan

char nilai_str[ ] = “10.14”;
double angka_desimal = 0;
int angka_integer =0 ;
angka_desimal = atof(nilai_str);
angka_integer = atoi(nilai_str);

Pengetahuan Dasar Pemrograman Berorentasi Objek / PBO (object oriented programming ,OOP)

Tujuan :  Memberikan gambaran tentang  apa itu  Pemrograman berorientasi objek untuk pemula

Pemrograman berorentasi Objek  (PBO)  atau object oriented programming (OOP) ..ups..apalagi nih..?

Tenang… tenang..  bagi yang sudah dengar tapi belum tau atau yang belum dengar dan belum tau  saya kasih tau rahasia nya, dengarkan sugesti saya… bahwa yang namanya OOP itu mudah dimengerti dan sebenarnya konsep dasarnya  sudah ada di alam nyata .  Jadi OOP ini cara bikin program yg meniru sebagian kecil apa yg terjadi  di alam alias OOP itu emang sebagian kecil dari ilmuNya.

Btw Untuk apa sih  kita mengetahui OOP ?  ya terpaksa deh kita harus tau karena bahasa pemrograman java, phyton,android, C# , C++ ,PHP  atau VB.net yang akan kita pakai saklek menerapkan konsep OOP dalam dirinya. Bahkan Arduino juga menerapkan OOP terutama pada pembuatan Library nya.

Konsep dasar objek  ini meniru dunia nyata  yaitu   segala sesuatu dipandang (berorientasi)  sebagai benda ( objek) , yang bisa melakukan sesuatu (dlm dunia pemrograman berbentuk Fungsi   ) dan mempunyai sifat tertentu (dlm dunia pemrograman sbg data/variable ) .  Dalam PBO  data di sebut juga properties dan fungsi disebut sebagai method.

Contoh konkrit objek di alam nyata

contoh pertama : objek kucing persia

objek kucing persia

objek kucing itu bisa melakukan : berjalan maju , melompat, berlari , tidur , makan dll

objek kucing memiliki sifat : kulit belang , ekor pendek ,  kuku tajam dll.

semua contoh  itu adalah objek di alam nyata  lalu bagaimana hubungannya dengan program OOP?  di dalam OOP  objek adalah sebuah benda  apa saja  yang dapat anda nyatakan dalam program.

 

Objek Dan Class

Objek dibuat   dari  sebuah Class , jadi semua code program (data/properties  dan fungsi/method) objek ada di class.   Dengan kata lain class adalah blue print (cetakan) dari objek.

format / template sebuah Class :

Class nama_class

{

properties

methode()
{

}

}  

hubungan Class dan Objek bisa digambarkan sbb:

contoh gambaran hubungan Class dan Objek dlm dunia kehidupan sehari2

contoh  Class kucing :

Class Kucing

{

string warna_bulu;

int  panjang_ekor ;   // centi

int x ;    // jarak tempuh

int  kecepatan_langkah = 3  ;   //cm/detik

 

berjalan_maju()

{

x = x+kecepatan_langkah;

}

,

berlari()

{

x = x *( kecepatan_langkah *10);

},

}

Pada program yang digunakan adalah objeknya bukan Class ,  untuk itu kita harus membuat (instance)  objek dari kelas

cara membuat objek dari kelas  :

(Setiap bahasa pemrograman punya syntax tersendiri untuk membuat class dan objek)

nama_class   nama_objek = new nama_class;

contoh contoh objek dari Class kucing:

kucing_persia, kucingku, kucing_jantan, kucing1,kucing2 dst..

cara membuat objek tsb diatas di dalam program

kucing   kucing_persia = new kucing;

kucing  kucingku = new kucing;

Ilustrasi pembuatan objek dari sebuah Class  perumpamaan pembuatan kue dari cetakan kue

Ilustrasi Class dan object

untuk membuat objek kue1 , kue2 , kue3  dari class kue :

kue1 = new kue

kue2 = new kue

kue3 = new kue

untuk membuat object COM1 dari class SerialPort

COM1 = new SerialPort;

artinya kita membuat objek COM1 dari Class SerialPort.

Penggunaan objek dalam program

penggunaan objek dlm program maksudnya bagaimana kita mengakses /memakai properties dan method dari objek tsb.

  • Memakai/mengakses  properties dari objek :  nama_objek.nama_properties  
       contoh :   kucing_persia.warna_bulu = “putih”;
  • Memakai/mengakses  method dari objek:    nama_objek.nama_methode();
        contoh    kucing_persia.berlari() 

Contoh penggunaan objek di dalam pemrograman :

objek   COM1    (serial port)

method  COM1  antara lain mengirim data,menerima data, dll

properties COM1  antara lain, speed , parity,portname,stopbit,startbit  dll

contoh kongkrit  methode  dari  objek  COM1 dlm pemrograman C# :

COM1.ReadByte() ;    // menerima  data

COM1.WriteByte() ;    // mengirim data

contoh  properties  objek COM1 adalah

COM1.BaudRate =”9600″;

COM1.NewLine=”\n\r”  ;

Untuk objek COM1 diatas adalah  instance   dari class SerialPort.  Class SerialPort sudah disediakan oleh C#.

Contoh lain Object kue seperti tampak pada gambar dibawah ini

setelah dibuat maka object  COM1 bisa digunakan didalam program kita.

Cara yang lain yang lebih mudah untuk membuat objek  menggunakan componen serialport pada IDE visual studio C#  sbb:

membuat objek serialport dgn componen

Pada  gambar di atas kita melihat object serialport1 telah dibuatkan otomatis dgn men drag and drop komponen(class)  SerialPort.

jika ingin melihat atau kita ingin  merubah nilai property  dari  object serialport1  klik kanan serialport1 ->klik properties

Contoh Program Sederhana C# yg menggunakan  konsep OOP:

using System.IO.Ports

class Kirim_data_RS232
   {
static void Main()
         {
     ojek_COM1 = new SerialPort();//membuat objek dr Class SerialPort
      ojek_COM1.BaudRate="9600";      // mengisi property
      ojek_COM1.Parity = Parity.none;  //mengisi property
      ojek_COM1.Open();           //methode membuka Serial komunikasi
      ojek.WriteLine=("test data dikirim");   //methode mengirim data
        } 
    }

Pada contoh diatas Class SerialPort sudah ada di dlm namespace System.IO.Ports jadi kita bisa langsung membuat objeknya saja yg kita beri nama “ojek_COM1”

 

karakteristik pemrograman berorientasi objek
Sebagai berikut fitur yang paling penting :

-Encapsulation. Kemampuan untuk menyembunyikan data dan instruksi dalam sebuah objek.
-Inheritance. Kemampuan untuk membuat satu objek dari objek yang lain.
-Polymorphism. Desain kelas baru ini didasarkan pada satu kelas.
-Message Passing. Ini adalah cara objek berkomunikasi satu sama lain.
-Garbage Collection. Manajemen memori otomatis, menghapus objek di memori objek yang tidak lagi digunakan oleh program.

Keuntungan
Sebagai berikut beberapa manfaat menggunakan pemrograman berorientasi objek:

RE-Usability. Anda dapat menulis sebuah program menggunakan kode yg sudah dibuat sebelumnya.
Kode Sharing. Anda dapat menstandarisasikan cara pembuatan pemrograman.
Rapid Modeling. Anda dapat membuat prototipe kelas dan interaksinya melalui sebuah diagram.

Kerugian
Sebagai berikut kelemahan menggunakan pemrograman berorientasi objek:
Ukuran. Lebih besar dari program lain, mengkonsumsi lebih banyak memori dan ruang disk.

setelah membaca artikel ini apakah anda sudah mengerti apa itu Class dan object?
tolong dijawab yah….
referensi:

http://en.wikipedia.org/wiki/Object-oriented_programming