Sunday, 15 June 2014

Biografi James Gosling: "The Inventor of Java"

James Gosling, The Man Behind Java


James Gosling
James A. Gosling O.C., Ph.D lahir di dekat Calgary, Alberta, Kanada, pada tanggal 19 Mei 1955. Gosling dikenal sebagai bapak bahasa pemograman Java.
Gosling menerima gelar B.Sc jurusan Ilmu Komputer dari Universitas Calgary pada tahun 1977.
Saat menyelesaikan program sarjananya, Gosling mengembangkan program editor teks Emacs,  yang kelak menjadi text editor paling banyak digunakan pada sistem operasi Unix. Kemudian, pada tahun 1983 ia meraih gelar Ph.D jurusan Ilmu Komputer dari Universitas Carnegie Mellon, dengan judul disertasi "The Algebraic Manipulation of Constraints". Sebelum bergabung dengan Sun Microsystems, Gosling mengembangkan suatu jenis multi-prosesor Unix. 

Pada tahun 1984, James A. Gosling memutuskan untuk bergabung dengan perusahan kecil yang baru berdiri pada waktu itu, yaitu Sun Microsystems. Pada awalnya, Gosling teribat dalam proyek pengembangan yang disebut Green Project. salah satu dari hasil karyanya adalah alat yang disebut Star Seven, yang berbentuk seperti PDA. Awalnya, alat tersebut digunakan sebagai alat pengendali peralatan rumah tangga, misalnya mengontrol televisi, menjawab telepon, dan lain-lainnya. Alat tersebut dapat digunakan untuk berbagai aplikasi karena berdasarkan atas bahasa pemrograman yang sifatnya tidak tergantung pada prosesor tertentu. Seiring waktu, nama bahasa pemrograman yang awalnya dinamakan Oak diubah menjadi Java hingga saat ini.


Sumber:
http://www.biografi-tokoh.com/2013/03/biografi-james-gosling-bapak-java-dunia.html

Biografi Bjarne Stroustrup, "The Inventor of C++"

Bjarne Stroustrup, Father of C++


Bjarne Stroustrup
Bjarne Stroustrup dilahirkan di kota Aarhus, Denmark pada tahun 1950. Pada tahun 1975, Stroustrup meraih gelar Cand.Scient bidang Matematika dan Ilmu Komputer dari University of Aarhus Denmark, dan gelar Ph.D bidang Ilmu Komputer pada tahun 1979 di Cambridge University, England. 

Bjarne Stroustrup adalah perancang sekaligus implementator dari bahasa pemrograman yang
terkenal saat ini yaitu C++. Ia menulis buku berjudul "The C++ Programming Language" yang diterbitkan tahun 1985, 1991, 1997 dan 2000. Selain itu ia juga menulis buku "The Design and Evolution of C++"

Stroustrup masuk dalam Collage of Engineering Chair Professor pada Departemen Computer Science Texas A&M University. Ia juga berhubungan dengan AT&T Labs–Research sebagai anggota pada Information and Systems Software Research Lab. Stroustrup juga anggota Laboratories Fellow dan AT&T Fellow. Stroustrup terlibat secara aktif dalam standarisasi ANSI/ISO untuk C++.

Bjarne Stroustrup juga menjadi konsultan editor untuk penerbit Addison Wesley dalam seri buku C++ In Depth. Selama menempuh studi program Doktor, ia bekerja dalam perancangan sistem terdistribusi pada Computer Laboratory di Cambridge University, Inggris. Ia menjadi anggota Churcill College dimana ia bersama istrinya menghabiskan waktu hingga kelahiran anak perempuannya Annemarie. 

Pada tahun 1979 Bjarne Stroustrup dan keluarganya pindah ke New Jersey untuk bergabung dengan Computer Science Research Center of Bell Telephone Laboratories. Bjarne pernah menjabat sebagai ketua Large-Scale Programming Research Departmen hingga akhir tahun 2002 sebelum ia bergabung dengan departemen ilmu komputer di Texas A&M University


Prestasi yang pernah diraih:
  1. Pada tahun 1993 menerima penghargaan dari ACM Grace Murray Hopper.
  2. Tahun 1990 karyanya The Annotated C++ Reference Manual menerima penghargaan “Jolt Cola” Dr. Dobb’s untuk kategori dokumentasi teknis terbaik
  3. Oleh majalah Fortune, namanya masuk ke dalam ilmuwan muda Amerika pada tahun 1990 
  4. Pada tahun 1995, Dinobatkan sebagai salah satu dari 20 orang paling berpengaruh di industri komputer selama 20 tahun terakhir oleh majalah BYTE



Sumber:
http://cstandar.wordpress.com/2011/10/04/biografi-bjarne-pencipta-bahasa-c/

Beberapa Jenis Game yang dikembangkan dengan Object-Oriented Programming

Object-oriented Programming dapat digunakan untuk mengembangkan beberapa game sederhana yang telah populer, yaitu Tetris dan Pac-Man.

1.) PAC-MAN
Player mengontrol Pac-Man melalui suatu maze, memakan pac-dots atau pellets. Empat musuh (ghosts) mengelilingi maze untuk menangkap Pac-Man. Pada empat sudut maze terdapat empat pellet lebih besar yang berkilau, dikenal sebagai power pellet yang dapat membuat Pac-Man memiliki kemampuan sementara untuk memakan musuh. Musuh akan mengalami perubahan warna menjadi biru, bergerak secara pelan dan mundur.


Game Pac-Man


Pada Pac-Man, terdapat tiga objects, yaitu Pac-Man, ghost, dan pac-dot. Salah satu object yang akan dideksripsikan adalah ghost, yaitu:

Ghost memiliki beberapa state, yaitu:
  • Warna
  • Nama (jika dapat diberi nama di atas kepala ghost itu)
  • State (dapat dimakan atau tidak)
  • Arah
  • Kecepatan
Dan behavior, yaitu:
  • Pergerakan
  • State perubahan



2.) TETRIS
Terdapat urutan Tetrominos yang dijatuhkan ke bagian dasar secara acak. Objective dalam game ini adalah untuk memanipulasi Tetrominos tersebut, dengan cara memindahkan dan memutarnya sebesar 90 derajat, untuk menciptakan barisan horizontal, tanpa ada satupun lubang (celah).


Tetris

Dalam Tetris, object hanya berupa Tetrominos, memiliki state yang terdiri dari:
  • Rotasi (dalam satuan 90 derajat)
  • Bentuk
  • Warna
Dan behavior yang terdiri dari:
  • Dijatuhkan
  • Berpindah kiri dan kana
  • Berputar

Sumber:
http://gamedevelopment.tutsplus.com/tutorials/quick-tip-intro-to-object-oriented-programming-for-game-development--gamedev-1805


Konsep Object-oriented Programming

Konsep Object-oriented Programming


Object-oriented programming memiliki beberapa konsep, yaitu:
1.   Class/kelas
2.   Object/objek
3.   Encapsulation/enkapsulasi

1.) CLASS
Class merupakan sekumpulan data atau sebuah fungsi dalam satu lingkup yang mempuyai tujuan tertentu. Dalam suatu class, terdapat attribute dan method. berbeda dengan object, class lebih mendefinisikan method secara umum.
  
Contoh class dalam bahasa pemrograman Java:
Public class Burung{
  String nama;
//atribut nama
  String jenis;
//atribut jenis
  String warna;
//atribut warna
  String sayap;
//atribut sayap
 
//method terbang
  public void terbang(){
  this.sayap = “mengepak”;
  System.out.println(“Burung “+this.nama+” Sedang   Terbang”);
  }
 
//method tidur
  public void tidur(){
  this.sayap = “diam”;
  System.out.println(“Burung “+this.nama+” Sedang   Tidur”);
  }
}

 
2.) METHOD
Method dapat didefinisikan sebagai ‘pembungkus’ dari suatu fungsi dalam pemrograman berorientasi objek, atau juga dapat dikatakan sebagai dasar atau modul dalam pemrograman berorientasi objek.

Contoh method dalam bahasa pemrograman Java
//method terbang
public void terbang(){
  this.sayap = “mengepak”;
  System.out.println(“Burung “+this.nama+” Sedang   Terbang”);
}
//method tidur
public void tidur(){
  this.sayap = “diam”;
  System.out.println(“Burung “+this.nama+” Sedang Tidur”);
}

 
3.) ENCAPSULATION
Encapsulation merupakan suatu ‘wadah atau pembungkus sebuah program dan data yang akan diolah. Encapsulation menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau diintervensi oleh program lain. Keuntungan dari penggunaan encapsulation adalah:
  1. Melindungi program atau data
  2. Object dapat dikelola secara independen, dan dapat menyembunyikan informasi yang tidak perlu diketahui object lain
 
Pada OOP, encapsulation memiliki bentuk class. Dalam sebuah class, terdapat property dan method yang memiliki hak akses tertentu terhadap lingkungannya, biasa disebut access modifier, yang terdiri dari private, protected, dan public.
  1. Private: Memberikan hak akses hanya pada anggota class terkait untuk menggunakan   dan atau mengubah nilai dari property dan method class tersebut.
  2. Protected: Memberikan hak akses kepada anggota class terkait dan anggota class hasil inheritance dari class tersebut.
  3. Memberikan hak akses kepada property dan method agar dapat digunakan diluar class tersebut.
Contoh penggunaan encapsulation:
public class Siswa{
  public String nama;
  public String nrp;
  public void Info()
  {
  System.out.println(“Saya adalah”);
  System.out.println(“Nama ” + nama);
  System.out.println(“Nrp ” + nrp);
  }
}

Kemudian, dibuat class baru yaitu IsiData
public class IsiData {
  public static void main(String[] args){
  Siswa IT = new Siswa();
  IT.nama = “Mirna”;
  IT.nrp = “0320110013″;
  IT.Info();
  }
}


 


Fitur-fitur Utama dalam Object-oriented Programming (Polymorphism)

Polymorphism


1.) DEFINISI POLYMORPHISM
Dalam object-oriented programming, polymorphism merupakan konsep yang memungkinkan penggunaan interface yang sama untuk memberi perintah suatu object agar melakukan aksi serupa, tetapi melalui proses yang berbeda.

Polymorphism yaitu suatu object dapat memiliki berbagai bentuk, sebagai object dari class sendiri atau object dari superclass-nya.
  1. Overloading: Penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
  2. Overriding: terjadi ketika deklarasi method subclass dengan  nama dan parameter yang sama dengan method dari superclass-nya.


Polymorphism  





2.) CONTOH SOURCE CODE POLYMORPHISM
Berikut ini adalah contoh source code polymorphism:


class mencetakdata
{
  // membuat method dengan nama sama tapi berbeda tipe data
  public void cobacetak(String Mencetak)
  {
  System.out.println(Mencetak);
  }
  public void cobacetak(int Mencetak)
  {
  System.out.println(Mencetak);
  }
  public void cobacetak(double Mencetak)
  {
  System.out.println(Mencetak);
  }
  public void cobacetak(char Mencetak)
  {
  System.out.println(Mencetak);
  }
}

public class cobapolymor
{
  public static void main(String[] args)
  {
  mencetakdata data = new mencetakdata();
  System.out.print("Cetak Data Tipe String : ");
  data.cobacetak("DKI Jakarta");
  System.out.print("Cetak Data Tipe Integer : ");
  data.cobacetak(1992);
  System.out.print("Cetak Data Tipe Double : ");
  data.cobacetak(16.5 / 2);
  System.out.print("Cetak Data Tipe Char : ");
  data.cobacetak('N');
  }
}

 



Fitur-fitur Utama dalam Object-oriented Programming (Inheritance)

Inheritance


1.) DEFINISI INHERITANCE
Inheritance adalah pewarisan attribute dan method dari suatu class ke class lain. Dalam inheritance, terdapat dua jenis class, yaitu superclass dan subclass.
Hubungan antara superclass dan subclass adalah sebagai berikut:
  1. Sebuah class yang mewariskan attribut dan method ke class lain disebut superclass
  2. Class yang mewarisi attribut dan method disebut dengan subclass

2.) JENIS INHERITANCE
Inheritance terdiri dari dua jenis, yaitu single inheritance dan multiple inheritance.



A.) Single Inheritance

Pada single inheritance berikut ini, Point merupakan superclass, karena menurunkan attribute dan method kepada Line Sub.






 B.) Multiple Inheritance
Class A dan B merupakan superclass dari class C, yang mewarisi attribute dan method kedua class tersebut






3.) CONTOH INHERITANCE DALAM C++
Berikut ini adalah source code inheritance dalam bahasa C++:


# include <iostream.h>
const int batas = 80;
 
class pegawai // kelas induk
{
        private:
            char nama [batas];
            unsigned long nip;
        public:
            void getdata()
            {
                cout << endl << " Input Nama : ";
                cin >> nama;
                cout << " Input NIP : ";
                cin >> nip;
            }
            void putdata()
            {
            cout << endl << " Nama : " << nama;
            cout << endl << " NIP : " << nip;
            }
};
class manajer : public pegawai // kelas turunan
{
        private:
            char bagian [batas];
            double tunjangan;
        public:
            void getdata()
            {
                pegawai::getdata();
                cout << " Input Bagian: ";
                cin >> bagian;
                cout << " Input Tunjangan Rp: ";
                cin >> tunjangan;
            }
            void putdata()
            {
                pegawai::putdata();
                cout << "\n Bagian    : "<< bagian;
                cout << "\n Tunjangan : "<< tunjangan;
            }
};

int main()
{
        manajer m1,m2;
      
 
        cout<<endl;
        cout<<"Input Data Manajer 1";
        m1.getdata();
 
        cout<<"\nData manajer 1";
        m1.putdata();
 
        cout << endl;
        return 0;
}


Program di atas merupakan program untuk melakukan input data pegawai. Class yang terdapat dalam program di atas yaitu class pegawai (superclass) dan class manajer (subclass).
 
 

 
 
 


Fitur-fitur Utama dalam Object-oriented Programming (Abstract Data Type)

Abstract Data Type
 
 
Abstract data type merupakan kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk berfokus pada inti. Setiap objek dalam sistem berperan sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan.

Abstract data type merupakan user-defined data type yang memenuhi dua kondisi berikut ini:
  1. Representasi dari objects pada suatu type yang tersembunyi dari program unit yang menggunakan objects tersebut
  2. Deklarasi-deklarasi type dan protokol operations pada object suatu type, terdapat dalam syntatic unit tunggal
 
Contoh Abstract Data Type





CONTOH ABSTRACT DATA TYPE

1.) Abstract Data Type dalam C++

Abstract Data Type dalam C++:
  1. Berdasarkan struct pada bahasa C dan class pada Simula 67
  2. Class merupakan encapsulation device
  3. Class merupakan type
  4. Seluruh class instance dari suatu class berbagi single copy dari member functions
  5. Setiap instance dari suatu class memiliki salinan dari class data members.
  6. Instances dapat berupa static, stack dynamic, atau heap dynamic

Contoh code:

class Stack {
  private:
  int *stackPtr, maxLen, topPtr;
  public:
  Stack() { // a constructor
  stackPtr = new int [100];
  maxLen = 99;
  topPtr = -1;
  };
  ~Stack () {delete [] stackPtr;};
  void push (int number) {
          if (topSub == maxLen)
            cerr << ″Error in push - stack is full\n″;
          else stackPtr[++topSub] = number;
       };
  void pop () {…};
  int top () {…};
  int empty () {…};
}

2.) Abstract Data Type dalam Java

 Abstract Data Type dalam Java:
  1. Serupa dengan C++, kecuali:
  • Seluruh user-defined types adalah classes
  • Seluruh object dialokasikan dari heap, dan diakses melalui reference variables
  • Entitas individual dalam class memiliki access control modifiers (private atau public), dibandingkan clauses
  • Java memiliki second scoping mechanism, package scope.
  • Seluruh entitas dalam seluruh kelas dalam package yang tidak memiliki acess control pada modifiers, bersifat visible melalui package


Contoh code:

class StackClass {
  private:
  private int [] *stackRef;
  private int [] maxLen, topIndex;
  public StackClass() { // a constructor
  stackRef = new int [100];
  maxLen = 99;
  topPtr = -1;
  };
  public void push (int num) {…};
  public void pop () {…};
  public int top () {…};
  public boolean empty () {…};
}


.