TUTORIAL CODEIGNITER : APLIKASI WEBSITE / BLOG (WEBLOG) SEDERHANA DENGAN CODEIGNITER

Oke gan, langsung saja untuk screen shoot contoh aplikasi website, weblog, blog dengan codeigniter yang ane kasi, seperti di bawah ini...

Tutorial HTML

HTML merupakan bahasa dasar pembuatan web. Disebut dasar karena dalam membuat web, jika hanya menggunakan HTML tampilan web terasa hambar. Terdapat banyak bahasa pemograman web yang ditujukan untuk memanipulasi kode HTML, seperti ...

TUTORIAL ORACLE - KONEKSI ORACLE KE JAVA, PHP DAN C# (C-SHARP)

Disitu juga ane kasi contoh aplikasi CRUD nya yang bisa ente download Gratisss :D ...

Sabtu, 10 November 2012

OOP Java, C# dan C++

Object Oriented programming,,, sudah tidak asing lagi buat telinga orang IT, kalo di terjemahkan adalah pemrograman berorentasi object ...
kenapa harus OOP ?
pemrograman berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Konsep-Konsep OOP antara Lain :

  1. Class, Method/Function dan Modifier
  2. Constructor dan Destructor
  3. Information Hidding dan Encapsulation
  4. Polymorphisme (Overload dan Override)
  5. Inheritance (penurunan)
  6. Inner Class
  7. Abstract Class
  8. Interface
  9. Exception Handling
  10. Multithreading

Jumat, 09 November 2012

Dasar Pemrograman Java, C sharp dan C++

Sudah lama gak pernah ngupdate status isi blog ini, kesibukan kuliah, kegalauan yang panjang karena cinta ... ya macem2lah sebab akibat sampek ane gak pernah njamah blog ini ... tapi Alhamdulillah smua itu sekarang udah berlalu jadi semangat yang kembali berkobar ...
kali ini ane gak akan berbagi dasar pemrograman yang baru tapi cuma mau ngulang bagi ente2 yang udah ngambil pelajaran dari blog ini tentang dasar program java, c sharp dan c++ ...
ane rasa dasar dari pemrograman yang ane posting disini seperti

  1. penerapan Class, method dan property
  2. Flow Control If
  3. Flow Control Switch
  4. Looping For
  5. Looping While
  6. Looping Do-while
  7. Array
  8. Array Multi Dimensi
  9. Function
Kalau ente2 udah paham beneran, i.Alloh ente gak akan sulit nanti kalo mau belajar pemrograman ke tingkat yang lebih tinggi seperti Object oriented programming yang juga udah ane posting disini.

Agar lebih bagus lagi pemahaman ente tentang dasar pemrograman, ada baiknya ente pelajari lebih lanjut seperti substring, split, concat, searching, sorting yang itu semua sebenarnya melatih algoritma kita biar lebih tajam, ente bisa pelajari tambahan2 itu disini.

setelah itu melangkahlah ke tingkat pemrograman selanjutnya yaitu pemrograman yang berbasis OOP.

salam suksess ya ...

Kamis, 10 Mei 2012

Form dan Event Handler di Java C# dan C++


Form adalah tampilan user interface yang disediakan oleh bahasa pmrograman agar mudah untuk menjalankan sebuah program. Event handler adalah sebuah method yang dapat mendeteksi suatu kejadian yang terjadi pada sebuah form, contoh ketika sebuah button di Click maka program akan melakukan sebuah eksekusi  perintah yang ada pada event handlernya.

Pada contoh code program berikut adalah Event Handler yang ada pada sebuah button, jika button tersebut di Click maka akan memunculkan Messagebox.

C sharp


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace OOP_praktikumForm
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}


//event Handler
void BtnLihatClick(object sender, EventArgs e)
{
MessageBox.Show("Nama Anda "+textBox1.Text+"\t\nAlamat Anda = "+textBox2.Text);
}
}
}



Java


//Event Handler
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(mainPanel, "Nama anda "+this.jTextField1.getText()+", \t\nAlamat Anda "+this.jTextField2.getText(), "Form Java dan Event Handler", 1);
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JPanel mainPanel;
private javax.swing.JProgressBar progressBar;
private javax.swing.JLabel statusAnimationLabel;
private javax.swing.JLabel statusMessageLabel;
private javax.swing.JPanel statusPanel;
// End of variables declaration

private final Timer messageTimer;
private final Timer busyIconTimer;
private final Icon idleIcon;
private final Icon[] busyIcons = new Icon[15];
private int busyIconIndex = 0;

private JDialog aboutBox;



C++

#pragma once

namespace formcpp_test {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Button^ button1;
protected:

private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->label2 = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(33, 45);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(55, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"Username";
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(36, 85);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(222, 20);
this->textBox1->TabIndex = 1;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(36, 151);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(222, 20);
this->textBox2->TabIndex = 3;
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(33, 111);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(39, 13);
this->label2->TabIndex = 2;
this->label2->Text = L"Alamat";
//
// button1
//
this->button1->Location = System::Drawing::Point(182, 212);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 4;
this->button1->Text = L"Lihat";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(288, 262);
this->Controls->Add(this->button1);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->label2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedSingle;
this->MaximizeBox = false;
this->Name = L"Form1";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Praktikum OOP";
this->ResumeLayout(false);
this->PerformLayout();

}
#pragma endregion
//event handler
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox::Show ("Nama anda "+textBox1->Text+"\nAlamat Anda"+textBox2->Text);
}
};
}




Mutlithreading di Java, C# dan C++

Multi threading adalah sebuah cara pengeksekuisian beberapa program secara bersamaan. saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Keuntungan dari Multi threading adalah :
  • Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang.
  • Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
  • Ekonomis, Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.
  • Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.




Csharp


using System;
using System.Threading;

namespace OOPpraktikum
{
class Program
{
public static void Main(string[] args)
{
TesThread tes1 = new TesThread("Rizal Thread");
TesThread tes2 = new TesThread("Cha Thread");

Thread thd1 = new Thread(new ThreadStart(tes1.Thred));
Thread thd2 = new Thread(new ThreadStart(tes2.Thred));

thd1.Start();
thd2.Start();

Console.ReadKey(true);
}
}

class TesThread
{
string nama;
public TesThread(string nm)
{
nama = nm;
}

public void Thred()
{
for (byte i = 0; i<50; i++)
{
Console.WriteLine(nama+" "+(i+1));
Thread.Sleep(1000);
}
}
}
}

Java


package OOPpraktikum;
import java.util.*;

public class MainClass
{
static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
TesThread thd1 = new TesThread("Rizal Thread");
TesThread thd2 = new TesThread("Cha Thread");

thd1.start();
thd2.start();

}

}

class TesThread extends Thread
{
String nama;
public TesThread(String a)
{
nama = a;
}
public void run()
{
try
{
for(byte i = 0; i<50; i++)
{
Thread.sleep(1000);
System.out.println(nama+" "+i);
}
}
catch (Exception e)
{
// TODO: handle exception
}

}
}



Khusus C++ untuk membuat Multi thread harus menggunakan header file, dalam contoh kode program berikut memanfaatkan header file buatan programmer lain. Referensinya ada pada http://www.codeproject.com/Articles/5218/Synchronized-multi-threading-in-C-No-MFC

C++

ou_thread.h

namespace openutils {
class ThreadException;
class Mutex;

/** class Thread
* Represents a thread of execution
* in the process. To create a new Thread
* write an inherited class ot Thread and
* override the run() function
**/
class Thread {

private:
// unsigned long* to the low-level thread object
unsigned long* m_hThread;
// a name to identify the thread
string m_strName;

public:
Thread();
Thread(const char* nm);
virtual ~Thread();
void setName(const char* nm);
string getName() const;
void start();
virtual void run();
void sleep(long ms);
void suspend();
void resume();
void stop();

void setPriority(int p);

bool wait(const char* m,long ms=5000);
void release(const char* m);

public:
// Thread priorities
static const int P_ABOVE_NORMAL;
static const int P_BELOW_NORMAL;
static const int P_HIGHEST;
static const int P_IDLE;
static const int P_LOWEST;
static const int P_NORMAL;
static const int P_CRITICAL;
private:
};// class Thread

/** class Mutex
* Represents a Mutex object to synchronize
* access to shaed resources.
**/
class Mutex {
private:
// unsigned long* to the low-level mutex object
unsigned long* m_hMutex;
// name to identify the mutex
string m_strName;
public:
Mutex();
Mutex(const char* nm);
void create(const char* nm);
unsigned long* getMutexHandle();
string getName();
void release();
~Mutex();
};

/** class ThreadException
* thrown by Thread and Mutex function
* calls
**/
class ThreadException {
private:
string msg;
public:
ThreadException(const char* m);
string getMessage() const;
};
} // namespace openutils

// global function called by the thread object.
// this in turn calls the overridden run()
extern "C" {
unsigned int _ou_thread_proc(void* param);
}




ou_thread.cpp

#include <string>
using namespace std;

#include <windows.h>

#include "ou_thread.h"
using namespace openutils;

const int Thread::P_ABOVE_NORMAL = THREAD_PRIORITY_ABOVE_NORMAL;
const int Thread::P_BELOW_NORMAL = THREAD_PRIORITY_BELOW_NORMAL;
const int Thread::P_HIGHEST = THREAD_PRIORITY_HIGHEST;
const int Thread::P_IDLE = THREAD_PRIORITY_IDLE;
const int Thread::P_LOWEST = THREAD_PRIORITY_LOWEST;
const int Thread::P_NORMAL = THREAD_PRIORITY_NORMAL;
const int Thread::P_CRITICAL = THREAD_PRIORITY_TIME_CRITICAL;

/**@ The Thread class implementation
**@/

/** Thread()
* default constructor
**/
Thread::Thread() {
m_hThread = NULL;
m_strName = "null";
}

/** Thread(const char* nm)
* overloaded constructor
* creates a Thread object identified by "nm"
**/
Thread::Thread(const char* nm) {
m_hThread = NULL;
m_strName = nm;
}

Thread::~Thread() {
if(m_hThread != NULL) {
stop();
}
}

/** setName(const char* nm)
* sets the Thread object's name to "nm"
**/
void Thread::setName(const char* nm) {
m_strName = nm;
}

/** getName()
* return the Thread object's name as a string
**/
string Thread::getName() const {
return m_strName;
}

/** run()
* called by the thread callback _ou_thread_proc()
* to be overridden by child classes of Thread
**/
void Thread::run() {
// Base run
}

/** sleep(long ms)
* holds back the thread's execution for
* "ms" milliseconds
**/
void Thread::sleep(long ms) {
Sleep(ms);
}

/** start()
* creates a low-level thread object and calls the
* run() function
**/
void Thread::start() {
DWORD tid = 0;
m_hThread = (unsigned long*)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_ou_thread_proc,(Thread*)this,0,&tid);
if(m_hThread == NULL) {
throw ThreadException("Failed to create thread");
}else {
setPriority(Thread::P_NORMAL);
}
}

/** stop()
* stops the running thread and frees the thread handle
**/
void Thread::stop() {
if(m_hThread == NULL) return;
WaitForSingleObject(m_hThread,INFINITE);
CloseHandle(m_hThread);
m_hThread = NULL;
}

/** setPriority(int tp)
* sets the priority of the thread to "tp"
* "tp" must be a valid priority defined in the
* Thread class
**/
void Thread::setPriority(int tp) {
if(m_hThread == NULL) {
throw ThreadException("Thread object is null");
}else {
if(SetThreadPriority(m_hThread,tp) == 0) {
throw ThreadException("Failed to set priority");
}
}
}

/** suspend()
* suspends the thread
**/
void Thread::suspend() {
if(m_hThread == NULL) {
throw ThreadException("Thread object is null");
}else {
if(SuspendThread(m_hThread) < 0) {
throw ThreadException("Failed to suspend thread");
}
}
}

/** resume()
* resumes a suspended thread
**/
void Thread::resume() {
if(m_hThread == NULL) {
throw ThreadException("Thread object is null");
}else {
if(ResumeThread(m_hThread) < 0) {
throw ThreadException("Failed to resume thread");
}
}
}

/** wait(const char* m,long ms)
* makes the thread suspend execution until the
* mutex represented by "m" is released by another thread.
* "ms" specifies a time-out for the wait operation.
* "ms" defaults to 5000 milli-seconds
**/
bool Thread::wait(const char* m,long ms) {
HANDLE h = OpenMutex(MUTEX_ALL_ACCESS,FALSE,m);
if(h == NULL) {
throw ThreadException("Mutex not found");
}
DWORD d = WaitForSingleObject(h,ms);
switch(d) {
case WAIT_ABANDONED:
throw ThreadException("Mutex not signaled");
break;
case WAIT_OBJECT_0:
return true;
case WAIT_TIMEOUT:
throw ThreadException("Wait timed out");
break;
}
return false;
}

/** release(const char* m)
* releases the mutex "m" and makes it
* available for other threads
**/
void Thread::release(const char* m) {
HANDLE h = OpenMutex(MUTEX_ALL_ACCESS,FALSE,m);
if(h == NULL) {
throw ThreadException("Invalid mutex handle");
}
if(ReleaseMutex(h) == 0) {
throw ThreadException("Failed to release mutex");
}
}

/**@ The Mutex class implementation
**@/

/** Mutex()
* default constructor
**/
Mutex::Mutex() {
m_hMutex = NULL;
m_strName = "";
}

/** Mutex(const char* nm)
* overloaded constructor
* creates a Mutex object identified by "nm"
**/
Mutex::Mutex(const char* nm) {
m_strName = nm;
m_hMutex = (unsigned long*)CreateMutex(NULL,FALSE,nm);
if(m_hMutex == NULL) {
throw ThreadException("Failed to create mutex");
}
}

/** create(const char* nm)
* frees the current mutex handle.
* creates a Mutex object identified by "nm"
**/
void Mutex::create(const char* nm) {
if(m_hMutex != NULL) {
CloseHandle(m_hMutex);
m_hMutex = NULL;
}
m_strName = nm;
m_hMutex = (unsigned long*)CreateMutex(NULL,FALSE,nm);
if(m_hMutex == NULL) {
throw ThreadException("Failed to create mutex");
}
}
/** getMutexHandle()
* returns the handle of the low-level mutex object
**/
unsigned long* Mutex::getMutexHandle() {
return m_hMutex;
}

/** getName()
* returns the name of the mutex
**/
string Mutex::getName() {
return m_strName;
}

void Mutex::release() {
if(m_hMutex != NULL) {
CloseHandle(m_hMutex);
}
}

Mutex::~Mutex() {
/*if(m_hMutex != NULL) {
CloseHandle(m_hMutex);
}*/
}

// ThreadException
ThreadException::ThreadException(const char* m) {
msg = m;
}

string ThreadException::getMessage() const {
return msg;
}

// global thread caallback
unsigned int _ou_thread_proc(void* param) {
Thread* tp = (Thread*)param;
tp->run();
return 0;
}

Main Program
#include <cstdlib>
#include <iostream>
#include <STRING>

using namespace std;
#include "ou_thread.h"
using namespace openutils;

class MyThread : public Thread {
private:
int m_nCount;
public:
MyThread(int n,const char* nm) {
Thread::setName(nm);
m_nCount = n;
}
void run() {
for(int i=0;i<m_nCount;i++) {
cout << getName().c_str()<<" "<<i<< endl;
sleep(1000);
}
}
};

int main(int argc, char *argv[])
{
Thread *t1 = new MyThread(50,"Rizal Thread");
Thread *t2 = new MyThread(50,"Cha Thread");
try
{
t1->start();
t2->start();
t1->stop();
t2->stop();
}
catch(ThreadException ex)
{
printf("%s\n",ex.getMessage().c_str());
}
delete t1;
delete t2;

system("PAUSE");
return EXIT_SUCCESS;
}



Exception (error) Handling di Java, C# dan C++

Exception handling adalah penangan error yang terjadi pada sebuah program. Exception handling akan mendeteksi error yang terjadi secara otomatis. Exception handling dalam pemrograman Csharp, Java dan C++ menggunakan keyword “try-cactch”. Pada contoh kode program berikut Exception Handling akan mendeteksi input jika terjadi error.

Csharp


using System;

namespace OOPpraktikum
{
class Program
{
public static void Main(string[] args)
{
int angka;

try
{
Console.Write("Masukkan Angka = ");
angka = Convert.ToInt32(Console.ReadLine());
}
catch(Exception)
{
Console.WriteLine("Input Pake Angka . . bukan Huruf . . .");
}


Console.Write("\nPress any key to continue . . . ");
Console.ReadKey(true);
}
}
}


Java

package OOPpraktikum;
import java.util.*;

public class MainClass
{
static Scanner input = new Scanner(System.in);
public static void main(String[] args)
{
int angka;

try
{
System.out.print("Masukkan Angka = ");
angka = input.nextInt();
}
catch(Exception e)
{
System.out.println("Input Pake Angka . . bukan Huruf . . .");
}

System.out.println("\nPress any key to continue . . . ");
}

}

C++

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
try
{
int i;
cout<<"Masukkan Angka = ";
if(!(cin>>i))
{
throw i;
}

}
catch(int e)
{
cout<<"Input Pake Angka . . . Bukan Huruf . ."<<endl;
}

cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}


Interface di Java, C# dan C++


Interface adalah sebuah fitur OOP yang menampung method-method kosong. Interface harus diturunkan pada sebuah Class jika ingin di implementasikan. Tidak jauh berbeda dengan Abstract Class kegunaan dari interface, hanya saja interface tidak bisa menampung method default dan tidak mempunyai modifier.

Penggunaan interface dalam bahasa pmrograman Csharp, Java dan C++ berbeda. Jika pada bahasa pmrograman Csharp dan Java, penggunaan interface menggunakan keyword “interface”, tetapi dalam C++ menggunakan fitur Hider File.


Csharp


using System;

namespace OOPpraktikum
{
class Program : KTP,MHS
{
public void ShowKTP(string nama,string alamat,string tlp)
{
Console.WriteLine("KTP");
Console.WriteLine();
Console.WriteLine("Nama anda : {0}",nama);
Console.WriteLine("Alamat : {0}",alamat);
Console.WriteLine("No Telp : {0}",tlp);
Console.WriteLine();
Console.WriteLine();
}

public void ShowMHS(string nama,string nim,string prodi,string tlp)
{
Console.WriteLine("MHS");
Console.WriteLine();
Console.WriteLine("Nama anda : {0}",nama);
Console.WriteLine("NIM : {0}",nim);
Console.WriteLine("Prodi : {0}",prodi);
Console.WriteLine("No Telp : {0}",tlp);
Console.WriteLine();
Console.WriteLine();
}

static Program pro = new Program();

public static void Main(string[] args)
{
string nama = "Muhammad Rizal Afani";
string alamat = "Banyuwangi";
string telp = "303058";
string NIM = "1110100601";
string Jurusan = "Tehnik Informatika";

pro.ShowKTP(nama,alamat,telp);
pro.ShowMHS(nama,NIM,Jurusan,telp);

Console.Write("\nPress any key to continue . . . ");
Console.ReadKey(true);
}
}

interface KTP
{
void ShowKTP(string nama,string alamat,string tlp);
}

interface MHS
{
void ShowMHS(string nama,string nim,string prodi,string tlp);
}
}

Java


package OOPpraktikum;
import java.util.*;

public class MainClass implements KTP,MHS
{

public void ShowKTP(String nama,String alamat,String tlp)
{
System.out.println("KTP");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("Alamat : "+alamat);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}

public void ShowMHS(String nama,String nim,String prodi,String tlp)
{
System.out.println("MHS");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("NIM : "+nim);
System.out.println("Prodi : "+prodi);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}

private static Scanner input = new Scanner(System.in);
static MainClass pro = new MainClass();

public static void main(String[] args)
{
String nama = "Muhammad Rizal Afani";
String alamat = "Banyuwangi";
String telp = "303058";
String NIM = "1110100601";
String Jurusan = "Tehnik Informatika";

pro.ShowKTP(nama,alamat,telp);
pro.ShowMHS(nama,NIM,Jurusan,telp);

System.out.println("\nPress any key to continue . . . ");
}

}

interface KTP
{
void ShowKTP(String nama,String alamat,String tlp);
}

interface MHS
{
void ShowMHS(String nama,String nim,String prodi,String tlp);
}


C++

KTP.h
Class KTP
{
public : virtual void ShowKTP() = 0;
}



MHS.h
Class MHS
{
public : virtual void ShowMHS() = 0;
}

Main


#include <cstdlib>
#include <iostream>

using namespace std;

#include "MHS.h"
#include "KTP.h"

class Implementasi : public MHS,KTP
{
public : void ShowKTP(string nama, string alamat, string tlp)
{
cout<<"KTP"<<endl;
cout<<endl;
cout<<"Nama anda : "<<nama<<endl;
cout<<"Alamat : "<<alamat<<endl;
cout<<"No Telp : "<<tlp<<endl;
cout<<endl;
cout<<endl;
}

public : void ShowMHS(string nama,string nim,string prodi,string tlp)
{
cout<<"MHS"<<endl;
cout<<endl;
cout<<"Nama anda : "<<nama<<endl;
cout<<"NIM : "<<nim<<endl;
cout<<"Prodi : "<<prodi<<endl;
cout<<"No Telp : "<<tlp<<endl;
cout<<endl;
cout<<endl;
}
};

int main(int argc, char *argv[])
{
Implementasi imp;


string nama = "Muhammad Rizal Afani";
string alamat = "Banyuwangi";
string telp = "303058";
string NIM = "1110100601";
string Jurusan = "Tehnik Informatika";

imp.ShowKTP(nama,alamat,telp);
imp.ShowMHS(nama,NIM,Jurusan,telp);


cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Abstract Class di Java, C# dan C++

Abstract class adalah class yang tidak bisa dibuat secara instan sebagaimana class pada umumnya. Abstract class harus di implementasikan pada class turunan dari class Abstract tersebut. Abstract class berisi berisi sebuah method abstract dan method default yang bisa di override pada class turunan. Tidak semua bahasa pemrograman yang mendukung OOP mempunyai abstract class dan abstract method Seperti halnya c++. Maka dalam contoh code program Abstract class c++ harus menggunakan Class biasa dan virtual method agar bisa di override pada class turunannya.



Csharp


using System;

namespace OOPpraktikum
{
class Program
{
static Implementasi imp = new Implementasi();
public static void Main(string[] args)
{
string nama = "Muhammad Rizal Afani";
string alamat = "Banyuwangi";
string telp = "303058";
string NIM = "1110100601";
string Jurusan = "Tehnik Informatika";

imp.ShowKTP(nama,alamat,telp);
imp.ShowMHS(nama,NIM,Jurusan,telp);

Console.Write("\nPress any key to continue . . . ");
Console.ReadKey(true);
}
}

abstract class Abs // --- >Abstrak Class
{
public abstract void ShowKTP(string nama,string alamat,string tlp); // ---> Abstrak method
public void ShowMHS(string nama,string nim,string prodi,string tlp)
{
Console.WriteLine("MHS");
Console.WriteLine();
Console.WriteLine("Nama anda : {0}",nama);
Console.WriteLine("NIM : {0}",nim);
Console.WriteLine("Prodi : {0}",prodi);
Console.WriteLine("No Telp : {0}",tlp);
Console.WriteLine();
Console.WriteLine();
}
}

class Implementasi : Abs
{
public override void ShowKTP(string nama, string alamat, string tlp)
{
Console.WriteLine("KTP");
Console.WriteLine();
Console.WriteLine("Nama anda : {0}",nama);
Console.WriteLine("Alamat : {0}",alamat);
Console.WriteLine("No Telp : {0}",tlp);
Console.WriteLine();
Console.WriteLine();
}
}
}

Java


package OOPpraktikum;
import java.util.*;

public class MainClass
{
private static Scanner input = new Scanner(System.in);
static Implementasi imp = new Implementasi();

public static void main(String[] args)
{
String nama = "Muhammad Rizal Afani";
String alamat = "Banyuwangi";
String telp = "303058";
String NIM = "1110100601";
String Jurusan = "Tehnik Informatika";

imp.ShowKTP(nama,alamat,telp);
imp.ShowMHS(nama,NIM,Jurusan,telp);

System.out.println("\nPress any key to continue . . . ");

}

}

abstract class Abs // --- >Abstrak Class
{
public abstract void ShowKTP(String nama,String alamat,String tlp); // ---> Abstrak method
public void ShowMHS(String nama,String nim,String prodi,String tlp)
{
System.out.println("MHS");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("NIM : "+nim);
System.out.println("Prodi : "+prodi);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}
}

class Implementasi extends Abs
{
@Override
public void ShowKTP(String nama, String alamat, String tlp)
{
System.out.println("KTP");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("Alamat : "+alamat);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}
}


C++


#include <cstdlib>
#include <iostream>

using namespace std;

class Abs
{
public : virtual void ShowKTP(string nama,string alamat,string tlp) = 0; // ---> Abstrak method
public : void ShowMHS(string nama,string nim,string prodi,string tlp)
{
cout<<"MHS"<<endl;
cout<<endl;
cout<<"Nama anda : "<<nama<<endl;
cout<<"NIM : "<<nim<<endl;
cout<<"Prodi : "<<prodi<<endl;
cout<<"No Telp : "<<tlp<<endl;
cout<<endl;
cout<<endl;
}
};

class Implementasi : public Abs
{
public : void ShowKTP(string nama, string alamat, string tlp)
{
cout<<"KTP"<<endl;
cout<<endl;
cout<<"Nama anda : "<<nama<<endl;
cout<<"Alamat : "<<alamat<<endl;
cout<<"No Telp : "<<tlp<<endl;
cout<<endl;
cout<<endl;
}
};

int main(int argc, char *argv[])
{
Implementasi imp;


string nama = "Muhammad Rizal Afani";
string alamat = "Banyuwangi";
string telp = "303058";
string NIM = "1110100601";
string Jurusan = "Tehnik Informatika";

imp.ShowKTP(nama,alamat,telp);
imp.ShowMHS(nama,NIM,Jurusan,telp);

cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}