Sunday, 15 June 2014

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


Programming Style and Language Features (2)


3.) Namespaces
Suatu namespace bukan merupakan module dan object. Namespace adalah general scope mechanism untuk mendukung berbagai teknik terkait dengan modularity. Namespace menyediakan cara untuk menghindari name clash di dalam software, yang terdiri dari library, dari supplier yang berbeda.

Contoh: 
namespace LibA {
class String {
// Astyle
string
};
// ...
}
namespace LibB {
class String {
// Bstyle
string
};
// ...
}
LibA::String s1 = "Nicholas";
LibB::String s2 = "Annemarie";

4) Abstract Classes
Terdapat kemungkinan untuk melakukan disasosiasi implementasi dan interface secara keseluruhan. Sebagai contoh, kita akan mengimplementasikan suatu set menggunakan array atau list dalam cara dimana dua set dapat digunakan secara bergantian:

class set {
// ...
};
class v_set : public set,
private vector {
// ...
};
class l_set : public set,
private list {
// ...
};

5) Classical Hierarchies
Kadang-kadang kita memiliki foresight yang cukup untuk mendesign suatu classical hieararchy. Lebih penting lagi, berbagai implementasi dari suatu konsep memiliki tingkat yang tinggi pada commonality, sehingga terdapat keuntungan signifikan dalam mengatur implementasi tersebut ke dalam hierarki. Sebagai contoh, suatu class hierarcy yang ditemukan dalam suatu aplikasi, bergantung dengan windows system.


Implementasi dari aplikasi classes ival_dial dan ival_slider difasilitasi oleh code dan data yang disediakan oleh "system classes" window, dial, dan slider. Hal ini berarti, kita membangun code secara incremently, dan interface secara incrementally.

6.) Hierarchy dan Abstract Classes
Deklarasi dari suatu class yang menghubungkan suatu application class dengan implementation hierarcy akan terlihat seperti ini:

class BB_ival_slider
: public ival_slider,
protected BB_slider {
public:
// functions overriding ival_slider
// functions as needed to implement
// the application concepts
protected:
// functions overriding BB_slider
// and BB_window functions as
// required to conform to user
// interface standards
private:
// representation and other
// implementation details
};

Struktur ini memperkirakan detail mengenai apa yang ditampilkan oleh suatu windows system diekspresikan dengan melakukan overriding virtual function di dalam hirarki BB_windows.




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