Belajar membuat Program berbasis Objek Oriented (Object Oriented Programming)

Bagi yang sudah terbias membuat program paradigma pemrograman berbasis Objek tentunya bukan suatu hal yang asing dimana semua software yang digunakan untuk membuat aplikasi rata rata sudah berbasis objek oriented seperti java yang dalam perkembangannya banyak IDE yang bisa digunakan seperti eclipse, android studio dan sebagainya.

Untuk posting kali ini saya tidak akan membahas pemrograman menggunakan java tapi ingin membagi sedikit pengetahuan bagaimana kita bisa memahami pemrograman berbasis objek dengan menggunakan bahasa yang merupakan kakeknya object oriented programming yaitu bahasa C++.

Tentunya kita sudah mengenal dengan pemrograman prosedural dimana kita akan mendefinisikan banyak fungsi (function) baik yang tidak ada nilai dikembalikan ataupun ada nilai yang dikembalikan. Tujuan dari function tersebut adalah kita ingin memecah program besar menjadi program kecil kecil sehingga saat dibutuhkan kita tinggal memanggil function tersebut.  Dalam perkembangannya saat kita membuat program yang kompleks kita akan membuat banyak function dan kadang kadang sering terjadi kebingungan dalam kita mengorganisasi function tersebut. Sebagai contoh kita membuat program yang ada password sebagai pengaman kemudian dilanjutkan dengan  program utama sebagai fungsi utama program. Simpelnya kita ingin membuat program menghitung luas segitiga tapi sebelum user menggunakan masuk ke fungsi menghitung luas segitiga user diharuskan memasukkan password. Tentunya saat kita membuat program fokus kita adalah membuat fungsi untuk password baru kemudian fungsi untuk menghitung luas segitiga.Tentunya diawal kita akan berpikir buat function untuk fungsi password cukup satu fungsi. kemudian function untuk fungsi luas segitiga satu fungsi. Saat kita menyusun program tentunya akan terpikir passwordnya ada defaultnya dan juga bisa diubah. tentunya untuk kasus diatas tidak cukup satu fungsi, sehingga kita mungkin akan membuat beberapa fungsi untuk password. Begitupun saat kita membuat fungsi menghitung luas segitiga awalnya satu fungsi bisa saja berkembang menjadi beberapa fungsi. Itu baru untuk kasus sederhana bayangkan kalau kasusnya sudah kompleks tentunya fungsinya akan sangat banyak dan biasanya akan sangat sulit mengorganisasi fungsi dan data dengan jumlah demikian banyaknya.

Konsep Objek Oriented programming memberikan solusi atas permasalahan tersebut dimana kita mengorganisasi data dan fungsi menjadi suatu paket yang sering kita sebut class.

Untuk materi ini saya berikan contoh skrip membuat class untuk objek oriented  programming.

#include <iostream>
#include <string.h>
#include <conio.h>

using namespace std;

class Password
{string passw;
int fail ;
public:
Password();
void setPassword(string);
void setSumFail(int);
int validasiPassword(string);
string invisibleEntry();
};

string Password::invisibleEntry()
{
//setPassword(“”);
string password;
char ch;
cout << “Password \n”;
cout <<“————–“<<“\n”;

ch = _getch();
while(ch != 13){//character 13 is enter
password.push_back(ch);
cout << ‘*’;
ch = _getch();
}
return password;

}

Password::Password()
{
this->passw=”admin”;
}

void Password::setPassword(string change)
{
this->passw=change;
}

void Password::setSumFail(int a)
{
this->fail=a;
}

int Password::validasiPassword(string pass)
{
if (pass==passw)
return 0;
else
return 1;
}

int main() {
Password *password;
string passwrd;
password = new Password;
passwrd=password->invisibleEntry();
cout<<“\n”<<passwrd<<“\n”;
if (password->validasiPassword(passwrd)==0)
cout<<“Selamat Datang”;
else
cout<<“Good By”;
return 0;
}

Pertama pehatikan class berikut :

class Password
{string passw;
int fail ;
public:
Password();
void setPassword(string);
void setSumFail(int);
int validasiPassword(string);
string invisibleEntry();
};

diatas tampak class Password .

Data yang saya buat di kelas tersebut adalah passw bertipe string dan fail bertipe integer. Variabel passw berguna untuk menyimpan password baik yang default ataupun yang akan diganti. Variabel fail berguna untuk menyimpan jumlah kesalahan mengisi password yang masih dibolehkan.  kedua variabel tersebut adalah bertipe private yang artinya hanya bisa diakses melalui methode/function di dalam kelas tersebut.

 public:  berguna untuk mendefinisikan bahwa function di bawah public bisa diakses dari luar class.

Password();  adalah function constructor yang berfungsi mendefinisikan nilai awal/deafult variabel passw. dalam kasus ini nilai defaultnya adalah “admin” tampak di function berikut :

Password::Password()
{
this->passw=”admin”;
}

perintah this->  digunakan untuk mewakili nama kelas Password

void setPassword(string);

method diatas digunakan untuk mengubah password default dengan isi perintahnya

void Password::setPassword(string change)
{
this->passw=change;
}

int validasiPassword(string);

Method diatas digunakan untuk memvalidasi password apakah password yang sudah diinput sesuai dengan password yang terdefinisi di variabel passw (baik default ataupun bila sudah diubah). Bila password benar maka akan dikembalikan nilai 0 bila salah akan dikembalikan nilai 1.

int Password::validasiPassword(string pass)
{
if (pass==passw)
return 0;
else
return 1;
}

string invisibleEntry();

Method yang digunakan bila user ingin password yang diketikkan tidak tampak di layar

string Password::invisibleEntry()
{
//setPassword(“”);
string password;
char ch1;
cout << “Password \n”;
cout <<“————–“<<“\n”;

ch1 = _getch();
while(ch1!= 13){//character 13 is enter
password.push_back(ch1);
cout << ‘*’;
ch1 = _getch();
}
return password;

}

Main Program

int main() {
Password *password;
string passwrd;
password = new Password;
passwrd=password->invisibleEntry();
cout<<“\n”<<passwrd<<“\n”;
if (password->validasiPassword(passwrd)==0)
cout<<“Selamat Datang”;
else
cout<<“Good By”;
return 0;
}

Dalam program utama saya definisikan variabel password bertipe class Password bertipe pointer. Karena bertipe pointer maka saya alokasikan suatu ruang memory yang akan digunakan oleh class Password dengan perintah password = new Password;

Kemudian saya gunakan method di kelas password yaitu method invisibleEntry(); agar di layar tidak muncul password yang diinputkan. Hasil pengisian dikirim ke variabel passwrd untuk dicek menggunakan method di class Password yaitu validasiPassword(). Bila password benar maka akan keluar selamat datang sedangkan password salah keluar good by

Demikian  bila ada pertanyaan monggo WA ke 083820638176 atau email ke ekotravada@gmail.com

——Selamat mencoba —–

 

 

Iklan

Aplikasi Penjualan Barang dengan MS Access

Bagi yang sudah membuka usaha atau mau membuka usaha tentunya membutuhkan aplikasi penjualan barang untuk melayani konsumen dan Pembelian barang untuk menambah stok barang yang dibeli dari suplier/produsen. untuk mempermudah transaksi penjualan dan pembelian telah tersedia aplikasi single user  yang dapat membantu proses penjualan dan pembelian barang.  aplikasi tersedia di link berikut.

Link aplikasi

Berikut Screen Shoot Aplikasi

Untuk Info lebih lanjut penggunaan aplikasi silahkan email ke ekotravada@gmail.com,  atau melalui WhatsUp di  6289612634792 , semoga bermanfaat.

FormPenjualan ReportPOS

Fitur Penjualan FormPenjualan PembelianBarang TransaksiPenjualan

Sepotong Motivasi dari jack Ma pendiri alibaba.com

13 Cara Agar Tidak Miskin di Umur 35 Versi Jack Ma

Menurut Ma, ada beberapa cara yang bisa membuat orang mencapai sesuatu sebelum umur 35:

  1. Lihat kesempatan jangka panjang
  2. Jangan merendahkan setiap kesempatan
  3. Cepat bergerak dalam merespon sesuatu
  4. Perbanyak pengetahuan
  5. Seseorang bisa tetap miskin jika tidak bisa mengalahkan rasa takut
  6. Kamu akan tetap miskin kalau kamu tidak punya semangat juang
  7. Dengan memiliki ambisi, kamu bisa memaksimalkan potensi yang kamu miliki
  8. Ambisi membuat kamu punya kekuatan untuk mengalahkan semua rintangan dan membuat keajaiban
  9. Milikilah ambisi supaya kamu terus ingin belajar dan tidak cepat puas
  10. Berjuanglah, karena tidak akan ada yang mengasihanimu
  11. Saat keluargamu tidak mampu membayar biaya pengobatan, tidak akan ada yang kasihan padamu
  12. Kalau kamu dikalahkan oeh pesaingmu, tidak akan ada yang kasihan padamu
  13. Jika sampai umur 35 kamu masih belum menghasilkan apa-apa, tidak akan ada orang yang kasihan padamu

Masih kata Jack Ma dalam wawancara yang sama,

“Anda akan tetap miskin kalau anda tidak memiliki ambisi. Ambisi adalah keinginan untuk menjalani kehidupan seideal mungkin. Sebuah dorongan untuk mewujudkan impian-impian besar dalam hidup. Di dunia ini memang ada hal-hal yang tidak bisa dipecahkan, namun tidak ada satu hal pun yang tidak bisa diselesaikan. Kuatnya ambisi seseorang menentukan kesuksesannya di masa depan.”

Komunikasi Serial Mikrokontroler Atmel 89C51 dengan PC (Visual Basic 6.0)

Mau bagi bagi saja atas apa yang dulu pernah saya buat.  Berikut saya berikan script komunikasi melalui port serial menggunakan mikrokontroler yang populer  tahun 2000 an yaitu atmel 89c51 terhubung ke komputer. Bahasa pemrograman yang digunakan di komputer adalah visual basic 6.0.

Pertama Di VB Buat disain aplikasi seperti berikut ”

Serial

Berikut script VB nya ……..

 

Public terima, hasil As StringPublic berhenti As Boolean
Private Sub Command1_Click()
Dim data As Integer
berhenti = False
tes = Text1.Text
If Text1.Text = “” Then
tes = 10
Text1.Text = tes
End If
MSComm1.Output = Chr(tes)
tunda
baca
‘konversi
End Sub

Sub baca()
terima = MSComm1.Input
Text3.Text = CStr(terima)
konversi
End Sub

Sub tunda()
Dim lihatdelay As Double
If Text4.Text = “” Then
lihatdelay = 5
Text4.Text = lihatdelay
End If

lihatdelay = CDbl(Text4.Text)
lihatdelay = lihatdelay * 5000
For looping = 1 To lihatdelay
Next looping

End Sub

Private Sub Command2_Click()
berhenti = False
Unload Me
‘MSComm1.PortOpen = False
End Sub

Private Sub Command3_Click()
Dim hitung As Integer
berhenti = True

Do
hitung = hitung + 1
Text1.Text = CStr(hitung)
tunda
DoEvents
MSComm1.Output = Chr(hitung)

If hitung = 255 Then
hitung = 0
End If

baca
‘konversi
Loop Until berhenti = False

End Sub

Private Sub Command4_Click()
Dim hitung As Integer
Dim masuk As String
hitung = 1
berhenti = True

Do
masuk = CStr(hitung)
MSComm1.Output = Chr(hitung)
Text1.Text = masuk
hitung = hitung * 2
tunda

baca
If hitung = 256 Then
hitung = 1
End If
DoEvents
Loop Until berhenti = False

End Sub

Private Sub Command5_Click()
Dim hitung, invert As Integer
Dim masuk As String
hitung = 254
berhenti = True
Do
masuk = CStr(hitung)
MSComm1.Output = Chr(masuk)
Text1.Text = masuk
hitung = hitung \ 2
tunda
baca

If hitung = 1 Then
hitung = 254
End If
DoEvents
Loop Until berhenti = False

End Sub

Private Sub Command6_Click()
berhenti = False
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.Settings = “4800,N,8,1”
End Sub

Sub konversi()
Dim ubah As Byte
Dim data As Byte
Dim temp As String
data = 0

Do
temp = CStr(terima)
cocokan = Chr(data)
If cocokan = temp Then
hasil = data
End If

data = data + 1
Loop Until data = 255
Text2.Text = CStr(hasil)

End Sub

Sedangkan Script di Mikrokontroler sebagai berikut :

Script assembler

ORG 00H
MOV SCON,#10H
MOV R1,#33H
SETL: MOV A,R1
TERIMA: RR A
MOV P0,A
ACALL DELAY
JNB RI,$
MOV A,SBUF
CLR RI
MOV P1,A
MOV P1,#00H
ACALL DELAY
CLR TI
MOV SBUF,A
MOV A,R1
KIRIM: RL A
MOV P0,A
ACALL DELAY
JNB TI,$
SJMP SETL

DELAY: MOV R7,#05FH
DL1: MOV R6,#0FH
DL2: MOV R5,#0FH
DJNZ R5,$
DJNZ R6,DL2
DJNZ R7,DL1
RET
END.

Untuk Skematik hubungan antara Mikro dan PC digambarkan berikut :

rangkaian

Pny- Eko TS

Membangun Program Database dari Dasar Hingga Implementasi

Halo bertemu lagi

bagi yang ingin membangun sistem database dapat mengikuti tutorial berikut.

Dalam membangun Database konsepnya perhatikan di gambar

Konsep Menyusun Database

Bila diperhatikan dari gambar bahwa untuk membangun database bermula dari data yang harus kita miliki terlebih dahulu.

Misal kita ingin membangun sistem absensi maka kita mesti kumpulkan data yang berkorelasi dengan absensi karyawan yaitu:

  • Data karyawan
  • Data jam kerja

Kemudian kita organisasi data karyawan dan data jam kerja dengan Konsep basis Data dengan melakukan proses Pengaturan Pemilahan, pengelompokkan dan pengorganisasian. Untuk Pendekatan basis data diatas kita bisa berdasar formulir, Formulir yang bisa digunakan disini bisa formulir absensi yang selama ini sudah berjalan. Nah berdasar formulir tersebut kita lakukan proses normalisasi sehingga akan didapatkan disain tabel yang nantinya akan kita terjemahkan ke dalam bentuk aplikasi/produk dengan menggunakan Aplikasi database. Salah satu aplikasi yang digunakan dan cukup mudah mempelajarinya dengan access 2007.

Sedangkan konsep dalam pembuatan produk digambarkan seperti berikut

Konsep Membuat Aplikasi Database

setelah dijelaskan konsep membuat tabel sesuai database berikutnya adalah mengimplementasikan tabel yang telah dirancang menjadi aplikasi yang lengkap dengan form dan report, seperti tampak pada gambar diatas.

Kita ambil studi kasus sesuai dengan yang dibahas diatas yaitu sistem absensi.  Bila dianalisis maka yang terlibat dalam sistem absensi

adalah data karyawan dan data kehadiran kerja karyawan.

Bila dikonsep dengan use case tampak seperti berikut :

KonsepAbsensi

Terlihat dari konsep diatas bahwa ada aktor karyawan yang setiap hari mengisi daftar hadir baik saat masuk atau  pulang, dan karyawan diberi option dapat melihat list absensi sebelumnya yang pernah diisi. Berdasar konsep diatas kita buat dua tabel yaitu tabel karyawan dan tabel kehadiran.

data karyawan terdiri dari  atribut dalam tabel :

NIK, Nama,  Alamat.  Dan untuk NIK kita jadikan sebagai primary key.  (atribut yang unik, dimana NIK yang dimiliki seorang karyawan akan berbeda dengan karyawan yang lain walaupun misalnya namanya sama)

Data Kehadiran  terdiri dari atribut dalam tabel :

No Urut, NIK, Jam Masuk, Jam Keluar, Tanggal Masuk. dan No Urut dijadikan key , kemudian NIK di tabel ini menjadi foreign key (Foreign Key adalah atribut yang datanya menginduk ke Primary key di tabel karyawan).

kemudian kedua tabel tersebut diimplementasikan ke aplikasi database. Ini Case pertama digunakan access 2007, sedangkan kasus yang lain digunakan aplikasi yang lain.

Implementasi ke access 2007

1. Buka access 2007

2. Pilih Blank database

3. Beri nama database dengan absensiKaryawan  kemudian Pilih Create

Maka akan muncul tampilan seperti berikut :

Screenawal

4. kemudian anda pilih tab create pilih tabel design

CreateTable

5. Maka akan muncul tampilan berikut dan silahkan isi di field name nama kolom dalam tabel data karyawan dengan tipe data text seluruhnya.

TabelKaryawan

6. set Primary key NIK dengan cara klik kanan di field NIK kemudian dari menu yang muncul pilih primary key

7. kemudian klik kanan di table2 pilih save dan beri nama MS_karyawan kemudian klik ok

KeyKaryawan

saveTable

saveKaryawan

Perhatikan di sebelah kiri setelah save akan muncul nama tabelnya

hasilSave

Dengan cara yang sama dapat anda lakukan untuk tabel absensi dengan tipe data tampak seperti gambar berikut

absensi

Perhatikan yang perlu anda tambahkan di tabel kehadiran adalah di field properti pada tab general ganti

– Properti format ganti dengan medium time

–  Field jam masuk dan jam keluar dan di properti default value anda isi dengan now()

–  Properti format untuk field tanggal ganti dengan medium date dan default value diisi juga dengan now().

Tujuan pengisian now() di properti default value agar jam masuk ,  jam keluar dan tanggal akan terisi otomatis karena karyawan cukup hanya mengisi NIK.

Setelah semua tabel dibuat maka hasilnya akan tampak seperti berikut ini

Pny : Eko TS

Memahami Mikrokontroler Atmel Seri AVR (Atmega Microcontroller)

Setelah Sukses dengan Mikrokontroler seri  89C51, Atmel meneruskan kesuksesan dengan mengeluarkan mikrokontroller seri AVR yang memiliki lebih banyak  Varian dan Tambahan Fitur yang sebelumnya tidak ditemukan di Mikrokontroler yang kompatibel dengan keluarga MCS-51.

Mikrokontroler seri avr atmega 8535 memiliki kelebihan dengan fitur seperti berikut :

* RISC Architecture

– 130 Powerful Instructions
– 32 x 8 General Purpose Working Registers lebih banyak dibanding seri sebelumnya
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier sebelumnya hingga 12 cycles

• Nonvolatile Program and Data Memories
– 8K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
– 512 Bytes Internal SRAM
– Programming Lock for Software Security

• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator
– Four PWM Channels
– 8-channel, 10-bit ADC
8 Single-ended Channels
7 Differential Channels for TQFP Package Only
2 Differential Channels with Programmable Gain at 1x, 10x, or 200x for TQFP
Package Only
– Byte-oriented Two-wire Serial Interface
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator

• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
and Extended Standby

• I/O and Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad QFN/MLF
• Operating Voltages
– 2.7 – 5.5V for ATmega8535L
– 4.5 – 5.5V for ATmega8535
• Speed Grades
– 0 – 8 MHz for ATmega8535L
– 0 – 16 MHz for ATmega8535

Reff : Datashet Atmel 8535

Dengan features diatas dan harga jual yang sangat kompetitif, pantaslah mikrokontroler sangat sukses di pasaran saat ini.

Memahami Penggunaan Mikrokontroler seri AVR

Setelah mengetahui fitur yang tersedia maka langkah berikutnya adalah memahami bagaimana menggunakan fitur fitur tersebut. Kita mulai dari memahami Pin yang tersedia di Mikrokontroler :

atmega8535

Penjelasan atas Pin diatas :

  1. Pin 10 sebagai VCC (Catu daya)
  2. Pin 11 sebagai GND
  3. Pin 40 ~ Pin 33 Port A (PA.0 – PA.7) merupakan pin dua arah dan Pin masukkan ADC
  4. Pin 1 ~ Pin 8 Port B (PB.0 – PB.7) merupakan PIN dua arah dan Pin fungsi khusus yaitu Timer/Counter , komparator analog dan SPI
  5. Pin 22 ~ Pin 29 Port C (PC.0 – PC.7) merupakan pin dua arah dan pin fungsi khusus yaitu TW1, Komparator analog dan Timer Oscilator
  6. Pin 14 ~ Pin 20 Port D (PD.0 – PD.7) merupakan pin I/O dua arah dan pin fungsi khusus yaitu komparator analog , interupsi eksternal dan komunikasi serial
  7. Pin 9, merupakan pin RESET
  8. Pin 12 dan Pin 13 , XTAL1 dan Xtal2 merupakan pin masukkan clock eksternal
  9. Pin 30, AVCC merupakan pin masukkan untuk tegangan Mikro dan dapat juga untuk referensi ADC
  10. Pin 32, AREF merupakan Pin masukkan tegangan referensi ADC

Memahami mengenai Input Output di Mikro AVR

Seperti telah dijelaskan diatas mikrokontroler seri AVR memiliki 4 port yang dapat digunakan sebagai input – output, yaitu PORTA, PORTB, PORTC,PORTD.

Dalam Pengaturan Input output baik untuk mengirim data atau mambaca data mikrokontroler menggunakan register. Untuk Mikrokontroler AVR menggunakan 3 register yaitu :  DDRx, Portx dan PINx.
Penjelasan
   DDRx (Data Direction Register)
Register DDRx digunakan untuk memilih arah pin. Jika DDRx = 1 maka Pxn sebagai pin output Jika DDRx = 0 maka Pxn sebagai input.
   Portx (Port Data Register)
Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau untuk mengaktifkan resistor pull up.
1. Portx berfungsi sebagai output jika DDRx = 1 maka : Portxn = 1 maka pin Pxn akan berlogika high. Portxn = 0 maka pin Pxn akan berlogika low.
2. Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0 maka : Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up. Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.
Konfigurasi Port

DDRxn Portxn

I/O

Pull up Comment

0

0

Input No Tri state (Hi-Z)

0

1

Input Yes Pull up aktif

1

0

Output No Output Low

1

1

Output No Output High

Catatan :

x menunjukkan nama port  (A,B,C,D)
n menunjukkan nomor bit  (0,1,2,3,4,5,6,7)

Contoh Program Mengirim data ke Port A

include”m16def.inc”
.org 0x0000
rjmp main

utama :
ldi r17,low(RAMEND)
out SPL,r17
ldi r17,high(RAMEND)
out SPH,r17
ldi r17, 0xff
out ddra,r17
out PORTA,r17
cbi PORTA,0

stop :
rjmp stop

Bila Program diatas dijalankan dan port a terhubung ke LED dengan disain rangkaian dengan aktif High seperti tampak di gambar berikut :

rangkaianLED

Led akan menyala semua kemudian portA,0 akan mati.

Berikut contoh program untuk membaca data dari PortC

include”m16def.inc”
.org 0x0000
rjmp main

utama :
ldi r17,low(RAMEND)
out SPL,r17
ldi r17,high(RAMEND)
out SPH,r17

ldi r17, 0xff
out ddra,r17
ldi r17,0x00
out ddrc,r17

in r17,pinc
out PORTA,r17

rjmp stop

Program diatas akan membaca data dari port C, kemudian dikirim ke port a

Ingin mengikuti pelatihan  mengenai Pemrograman di Mikro AVR silahkan ke link berikut
FB : facebook.com/cafemikrochip