Sunday, 15 June 2014

Why C++ is not just an Object-Oriented Programming Language: Programming Style and Language Features (1)

Pada post ini, Bjarne Stroustrup akan memberikan contoh programming styles dan fitur bahasa yang mendukungnya. Beberapa disebut sebagai "object-oriented", sedangkan yang lain tidak. 

1.) Conventional Notation
Terdapat aspek-aspek dari conventional node dan conventional notation yang menurut Stroutstrup dapat dipertahankan, bahkan di dalam keseluruhan desain berorientasi objek yang ketat.
Sebagai contoh, plain square root of two dapat dituliskan sebagai berikut:

sqrt(2)

Begitu juga dengan penulisan x+y*z dapat diketahui bahwa x dijumlahkan ke hasil produk y dan z.

2.) Concrete Types
Konsep-konsep sederhana seperti integer, floating point numbers, complex numbers, points, lines, pairs, dates, disk locations, bcd characters, error messages, currency dapat diimplementasikan dengan sederhana, efisien dan fleksibel, Stroustrup mempertimbangkan konsep sederhana tersebut merupakan kandidat yang tepat untuk independent proper types.
Untuk menjelaskannya, Stroustroup akan menggunakan plain data structures dan class hierarcies. Contoh yang digunakan adalah date.

2.1)  Structures and Functions
Cara paling sederhana mempresentasikan suatu date dalam program adalah dengan menentukan data layout, contoh:
struct date{
//representation
};

Dengan struct tersebut, programmer dapat melakukan apapun dengan date. Umumnya, suatu susunan function yang standar disediakan untuk memanipulasi struktur seperti date di atas.

2.2) A Concrete Class
Suatu tipe date sederhana dapat menyelesaikan banyak masalah terkait dengan penggunaan struktur data secara langsung. Contohnya:
  class Date {
public:
// public interface, consisting
// of nonvirtual
functions
private:
// representation and other
// implementation details
};

Tipe date di atas akan menyediakan:
  1. Constructor yang menentukan bagaimana objects tipe tersebut diinisialisasi
  2. Fungsi untuk memeriksa suatu date (akan dideklarasikan secara eksplisit, agar tidak mengubah nilai object)
  3. Fungsi untuk memanipulasi date tanpa mengetahui detail representasi.

2.3)   Re-using Concrete Types
Derivation dari suatu concrete type hampir selalu merupakan kesalahan. Suatu concrete type merupakan "re-used" yang belum dimodifikasi dalam cara yang sama seperti built-in types, seperti integer.
Contoh:

class Date+and_time{
public:
//...
private:
   Date d;
   Time t;
};

Bentuk reuse ini biasanya sederhana, efektif dan efisien.




Sumber:
Stroustrup, Bjarne. Why C++ is not just an Object-Oriented Programming Language. AT&T Bell Laboratories (online), diakses pada tanggal 14 Juni 2014 dari http://www.stroustrup.com/oopsla.pdf




No comments:

Post a Comment