Coba jelasin Pengabstrakan (abstraction) dari Pengaturcaraan berorientasi objek dalam bahasa melayu dong

Polimorfisme (polymorphism) — Menggunakan nama yang sama untuk memulakan operasi yang berlainan pada objek yang menggunakan jenis data berbeza.

Konsep pengaturcaraan berorientasi objek pertama kali muncul di dalam Simula 67, suatu bahasa pengaturcaraan yang direkabentuk untuk menjalankan simulasi. Ia dicipta oleh Ole-Johan Dahl dan Kristen Nygaard, dari Norwegian Computing Centre di Oslo.

Menurut laporan tertentu mereka sedang mengusahakan program simulasi untuk kapal, dan mendapati yang jenis-jenis kapal boleh digabung kepada beberapa kelas objek. Di mana setiap kelas objek berperanan menakrif datanya sendiri, termasuk perlakuannya.

Konsep ini kemudiannya digunakan dalam Smalltalk, yang dibangunkan di Simula, Xerox PARC. Bagaimanapun, ia direkabentuk sebagai sistem yang dinamik penuh, di mana objek boleh dicipta dan diubahsuai dengan mudah, dan bukan hanya sistem yang berpandukan program statik.

Pengaturcaraan berorientasi objek berkembang sebagai kaedahologi pengaturcaraan yang dominan pada pertengahan 1980an. Ini terutamanya dipengaruhi oleh kemunculan C++, iaitu Bahasa lanjutan daripada Bahasa Pengaturcaraan C. Pengaruhnya semakin luas dengan kepopularan antara muka grafik pengguna, yang sesuai dibangunkan dengan pengaturcaraan berorientasi objek. Aliran perubahan ini, mengubah fokus pengguna daripada penggunaan antaramuka berdasarkan teks yang mengguna arahan berjujukan, kepada memanipulasi komponen secara dinamik. Contoh penggunaan pustaka GUI(antaramuka Grafik) yang dinamik, dan bahasa pengaturcaraan berorientasi objek, boleh didapati dalam rangka kerja Cocoa pada Mac OS X. Ia ditulis di dalam Objective C, iaitu Bahasa Berorientasikan Objek, berdasarkan Smalltalk.

Di ETH ZUrich, Nikalus Wirth dan rakan-rakannya telah mengkaji beberapa topik seperti pengabstrakan data dan Pengaturcaraan Modular. Kedua-dua konsep ini termasuk di dalam Modula-2, dan rekabentuk mereka yang seterusnya, iaitu Oberan mengguna pendekatan yang lebih unik terhadap pengorientasi objek, class, dan sebagainya. Pendekatan mereka adalah berbeza dengan Smalltalk dan C++.

Ciri-ciri pengaturcaraan berorientasi objek telah dimuatkan dalam pelbagai Bahasa Pengaturcaraan pada masa itu. Ini termasuk Ada, BASIC, Lisp, Pascal, dan banyak lagi. Disebabkan bahasa-bahasa ini pada dasarnya bukan berkonsepkan OOP(pengaturcaraan Berorientasikan Objek), maka timbulnya masalah kompatibiliti(kesesuaian), dan penyelenggaraan kod. bahasa pengaturcaraan berorientasi objek yang "tulen" pula, kurang ciri-ciri yang sering digunakan oleh Juruaturcara. Dalam mengurangkan jurang perbezaan ini, beberapa percubaan telah dibuat untuk mencipta bahasa baru yang berdasarkan kaedah OOP, di samping membenarkan sifat Pengaturcaraan Berstruktur secara "selamat". Bahasa Pengaturcaraan Eiffel yang dibangunkan oleh Bertrand Meyer adalah bahasa terawal dicipta berdasarkan matlamat ini.

Dalam dekad akhir ini, Java telah berkembang secara meluas. Ini disebabkan sintaks penulisannya yang serupa dengan C/C++. Namun Java yang menarik minat golongan pengaturcara, ialah penggunaan mesin maya, yang bertujuan untuk menjalankan kod dalam pelantar komputer yang berbeza. Microsoft .Net dibangunkan dengan objektif yang sama, di samping memberi sokongan terhadap bahasa pengaturcaraan yang baru.

Pada masa terkini, sejumlah bahasa baru telah muncul yang berorientasi objek, tetapi juga sesuai dengan kaedahologi pengaturcaraan bertatacara. Ini termasuk Python, dan Ruby. Selain daripada Bahasa Pengaturcaraan Java, bahasa berorientasi objek lain yang popular secara komersil, adalah VB.NET dan C#(C sharp) yang direkabentuk untuk platform Microsoft .NET.

Kaedah rekabentuk berorientasikan objek telah menyumbang kepada penggunaan corak reka bentuk (design pattern), reka bentuk secara kontrak (design by contract), dan bahasa pemodelan (modelling language) seperti UML.

OOP dengan bahasa pengaturcaraan berstruktur

Dalam bahasa pengaturcaraan bertatacara, OOP digunakan dalam bentuk di mana jenis data dikembangkan untuk menyerupai objek dalam OOP. Ia serupa dengan jenis data abstrak dengan tambahan seperti perwarisan. Setiap kaedah merupakan atur cara bawahan (subprogram) yang secara sintatiknya terikat kepada class.