AMEL

AMEL

Minggu, 03 Januari 2010

Object Oriented Programming

Object Oriented Programming
Object
Oriented Programming ( OOP ) merupakan paradigma pemrograman yang menggunakan "objek" - struktur data yang terdiri dari datafields dan metode bersama dengan interaksi mereka - untuk merancang aplikasi dan program komputer. Teknik pemrograman dapat mencakup fitur seperti menyembunyikan informasi, data abstraksi, enkapsulasi, modularitas, polimorfisme, dan pewarisan. Itu tidak umum digunakan dalam pengembangan aplikasi perangkat lunak arus utama sampai awal 1990-an. Banyak modern bahasa pemrograman sekarang mendukung OOP.
Object Oriented Programming memiliki akar yang dapat ditelusuri pada 1960-an. Seperti hardware dan software menjadi semakin kompleks, kualitas sering berkompromi. Para peneliti mempelajari cara untuk menjaga kualitas perangkat lunak dan dikembangkan pemrograman berorientasi objek dalam bagian untuk mengatasi masalah-masalah umum dengan sangat menekankan diskrit, dapat digunakan kembali unit logika pemrograman. Metodologi yang berfokus pada data daripada proses, dengan program yang terdiri dari modul mandiri (objek) masing-masing berisi semua informasi yang dibutuhkan untuk memanipulasi struktur data sendiri. Hal ini berbeda dengan yang ada pemrograman modular yang telah dominan selama bertahun-tahun yang berfokus pada fungsi dari module, bukan data spesifik, tetapi juga disediakan untuk penggunaan kembali kode, dan mandiri dapat digunakan kembali unit pemrograman logika, yang memungkinkan kolaborasi melalui penggunaan modul yang terhubung (subrutin). Pendekatan ini lebih konvensional, yang masih tetap, cenderung untuk mempertimbangkan data dan perilaku secara terpisah.
Sebuah program berorientasi objek dengan demikian dapat dilihat sebagai kumpulan objek yang saling berinteraksi, berlawanan dengan model konvensional, di mana program dipandang sebagai daftar tugas (subrutin) untuk melakukan. Dalam OOP, setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek-objek lain dan dapat dipandang sebagai independen 'mesin' dengan peran atau tanggung jawab yang berbeda. Tindakan (atau "operator") pada objek-objek ini sangat erat terkait dengan objek. Sebagai contoh, struktur data cenderung 'membawa operator sekitar mereka sendiri dengan mereka "(atau setidaknya" mewarisi "mereka dari obyek atau kelas yang sama).
Yang Simula adalah bahasa pemrograman yang pertama kali memperkenalkan konsep dasar pemrograman berorientasi obyek (objek, kelas, subclass, metode virtual, coroutines, dan simulasi event diskrit) sebagai superset dari Algol. Simula juga digunakan otomatis pengumpulan sampah yang telah diciptakan sebelumnya untuk bahasa pemrograman fungsional Lisp. Simula yang digunakan untuk pembuatan model fisik, seperti model-model untuk mempelajari dan meningkatkan pergerakan kapal dan isinya melalui pelabuhan kargo. Smalltalk adalah bahasa pemrograman pertama disebut "berorientasi objek".



Sejarah
Konsep benda dan contoh-contoh di komputasi mempunyai terobosan besar pertama dengan PDP-1 sistem di MIT yang mungkin contoh paling awal 'kemampuan yang didasarkan' arsitektur. Lain contoh awal adalah Sketchpad diciptakan oleh Ivan Sutherland pada tahun 1963, namun, ini adalah sebuah aplikasi dan bukan paradigma pemrograman. Objek sebagai entitas pemrograman diperkenalkan pada 1960-an di Simula 67, sebuah bahasa pemrograman yang dirancang untuk melakukan simulasi, diciptakan oleh Ole-Johan Dahl dan Kristen Nygaard dari Norwegian Computing Center di Oslo. Mereka bekerja di kapal simulasi, dan bingung oleh ledakan kombinatorial bagaimana sifat-sifat yang berbeda dari kapal yang berbeda dapat mempengaruhi satu sama lain. Ide terjadi kepada mereka tentang pengelompokan jenis kapal ke kelas yang berbeda benda; masing-masing kelas objek bertanggung jawab untuk menentukan sendiri data dan perilaku. Pendekatan seperti ekstrapolasi sederhana konsep analog sebelumnya digunakan dalam pemrograman. Pada komputer analog, pemetaan dari dunia nyata fenomena / objek untuk analog fenomena / objek (dan sebaliknya), adalah (dan ini) disebut 'simulasi'. Simula tidak hanya memperkenalkan konsep kelas, tetapi juga dari contoh kelas, yang mungkin eksplisit pertama penggunaan gagasan-gagasan tersebut. Ide-ide dari Simula 67 dipengaruhi banyak kemudian bahasa, terutama Smalltalk dan turunannya Lisp dan Pascal.
The Smalltalk bahasa, yang dikembangkan di Xerox PARC (oleh Alan Kay dan lain-lain) pada 1970-an, memperkenalkan istilah pemrograman berorientasi objek untuk mewakili benda penggunaan meluas dan pesan sebagai dasar perhitungan. Smalltalk pencipta dipengaruhi oleh ide-ide diperkenalkan dalam Simula 67, tapi Smalltalk dirancang untuk menjadi dinamis sepenuhnya sistem di mana kelas-kelas dapat dibuat dan dimodifikasi secara dinamis, bukan statis seperti dalam Simula 67. Smalltalk dan dengan itu OOP diperkenalkan kepada khalayak yang lebih luas oleh edisi Agustus 1981 majalah Byte.
Pada 1970-an, Kay Smalltalk bekerja telah mempengaruhi masyarakat Lisp untuk menggabungkan teknik-teknik berbasis objek yang diperkenalkan kepada pengembang melalui mesin Lisp. Eksperimen dengan berbagai ekstensi untuk Lisp (seperti loop dan Flavors memperkenalkan beberapa warisan dan mixin), akhirnya mengarah pada Common Lisp Sistem Objek (CLOS, bagian dari standar pertama berorientasi obyek bahasa pemrograman, ANSI Common Lisp), yang menggabungkan pemrograman fungsional dan pemrograman berorientasi objek dan memungkinkan perpanjangan melalui protokol Meta-objek. Tahun 1980-an, ada beberapa upaya untuk merancang arsitektur prosesor yang mencakup dukungan hardware untuk obyek dalam memori, tetapi ini tidak berhasil. Contoh meliputi Intel iAPX 432 dan Smart Linn Rekursiv.
Pemrograman berorientasi obyek dikembangkan sebagai metodologi pemrograman yang dominan selama pertengahan 1990-an, sebagian besar disebabkan oleh pengaruh C + +. Dominasinya itu makin diperkuat oleh meningkatnya popularitas dari antarmuka pengguna grafis, yang pemrograman berorientasi obyek tampaknya cocok. Contoh dari GUI dinamis terkait erat dengan perpustakaan dan bahasa OOP dapat ditemukan di Kakao kerangka kerja di Mac OS X, yang ditulis di Objective-C, sebuah object-oriented, dinamis ekstensi pesan ke C didasarkan pada Smalltalk. OOP toolkit juga meningkatkan popularitas pemrograman kendali-event (walaupun konsep ini tidak terbatas pada OOP). Sebagian merasa bahwa asosiasi dengan GUI (nyata atau tidak) adalah apa yang didorong ke dalam pemrograman OOP arus utama.
Fitur berorientasi objek telah ditambahkan ke banyak bahasa yang ada selama waktu itu, termasuk Ada, BASIC, Fortran, Pascal, dan lain-lain. Menambahkan fitur ini untuk bahasa yang awalnya tidak dirancang untuk mereka sering menimbulkan berbagai permasalahan dengan kompatibilitas dan Kemampu-rawatan kode.
Baru-baru ini, sejumlah bahasa telah muncul yang berorientasi obyek terutama belum kompatibel dengan metodologi prosedural, seperti Python dan Ruby. Mungkin yang paling penting secara komersial baru bahasa berorientasi obyek adalah Visual Basic. NET (VB.NET) dan C #, baik yang dirancang untuk Microsoft. NET platform, dan Jawa, yang dikembangkan oleh Sun Microsystems. VB.NET dan C # baik dukungan lintas bahasa warisan, memungkinkan kelas didefinisikan dalam satu bahasa ke bahasa kelas subclass didefinisikan dalam bahasa lain.
Sama seperti pemrograman prosedural mengarah pada perbaikan teknik seperti pemrograman terstruktur, modern berorientasi objek metode desain perangkat lunak mencakup perbaikan seperti penggunaan pola desain, design by kontrak, dan pemodelan bahasa (seperti UML). OOPS istilah yang mengacu pada sebuah bject o-o riented p rogramming s ystem, adalah umum terjadi di awal pengembangan pemrograman berorientasi obyek.
Fitur Utama
Usaha untuk menyaring OOP untuk minimal kumpulan fitur dianggap sia-sia oleh peneliti bahasa pemrograman Cuire Benjamin Pierce. Namun demikian, ia mengidentifikasi sebagai berikut fitur dasar yang ditemukan di kebanyakan bahasa-bahasa berorientasi obyek dan bahwa, dalam konser, mendukung gaya pemrograman OOP:
• Dynamic dispatch - ketika sebuah metode dipanggil pada objek, obyek itu sendiri menentukan kode apa yang dijalankan dengan melihat metode pada saat run waktu dalam sebuah tabel yang berhubungan dengan objek. Fitur ini membedakan objek dari suatu tipe data abstrak (atau modul), yang memiliki tetap (statis) pelaksanaan operasi untuk semua kasus
• Enkapsulasi (atau multi-metode, dalam hal ini negara disimpan terpisah)
• Subtipe polimorfisme
• objek warisan (atau delegasi)
• Buka rekursi - variabel khusus (sintaksis ini mungkin merupakan kata kunci), biasanya disebut this atau self yang memungkinkan tubuh metode untuk invoke metode lain tubuh objek yang sama. Variabel ini akhir-terikat; ini memungkinkan sebuah metode yang didefinisikan dalam satu kelas untuk memanggil metode lain yang ditentukan kemudian, dalam beberapa subclass daripadanya.
Demikian pula, dalam buku 2003, Konsep-konsep dalam bahasa pemrograman, John C. Mitchell mengidentifikasi empat fitur utama: dinamis pengiriman, abstraksi, subtipe polimorfisme, dan pewarisan. Michael Lee Scott dalam Programming Language Pragmatics hanya mempertimbangkan enkapsulasi, pewarisan dan dinamis pengiriman .
Definisi formal
Ada beberapa upaya memformalkan konsep-konsep yang digunakan dalam pemrograman berorientasi obyek. Berikut konsep dan konstruksi telah digunakan sebagai interpretasi dari konsep OOP:
• tipe data abstrak (yang memiliki jenis eksistensial) memungkinkan definisi modul tetapi ini tidak mendukung pengiriman dinamis
• rekursif jenis
• catatan adalah dasar untuk memahami objek jika fungsi literal dapat disimpan dalam bidang-bidang (seperti dalam bahasa pemrograman fungsional), tetapi perlu kalkuli sebenarnya jauh lebih kompleks untuk memasukkan fitur-fitur penting dari OOP. Beberapa perluasan dari Sistem F <:yang berhubungan dengan objek bisa berubah telah dipelajari ini memungkinkan kedua subtipe polimorfisme dan parametric polimorfisme (generik)
Upaya untuk menemukan definisi atau teori konsensus balik barang-barang tidak terbukti sangat berhasil (namun, lihat "Abadi & Cardelli: A Theory of Objects" definisi formal dari banyak konsep dan konstruksi OOP), dan sering kali merupakan kepanjangan secara luas. Sebagai contoh, beberapa definisi berfokus pada aktivitas mental, dan beberapa di program hanya penataan. Salah satu definisi yang lebih sederhana adalah bahwa OOP adalah tindakan menggunakan "peta" atau struktur data array yang dapat berisi pointer ke fungsi dan peta lain, semua dengan beberapa scoping sintaksis dan gula di atas. Warisan dapat dilakukan dengan kloning peta (kadang-kadang disebut "prototipe").
Bahasa OOP
Simula (1967) secara umum diterima sebagai bahasa pertama untuk memiliki fitur-fitur utama dari sebuah bahasa berorientasi objek. Hal ini diciptakan untuk membuat program simulasi, di mana apa yang kemudian disebut objek adalah representasi informasi yang paling penting. Smalltalk (1972-1980) adalah dapat dikatakan sebagai contoh kanonik, dan satu dengan yang banyak teori pemrograman berorientasi objek adalah dikembangkan.
• Bahasa disebut "murni" OO bahasa, karena segala sesuatu di dalamnya diperlakukan secara konsisten sebagai sebuah objek, dari primitif seperti karakter dan tanda baca, sepanjang jalan sampai ke seluruh kelas, prototip, blok, modul, dll Mereka dirancang secara khusus untuk memfasilitasi, bahkan menegakkan, metode OO. Contoh: Smalltalk, Eiffel, Ruby, JADE
• Bahasa dirancang terutama untuk pemrograman OO, tapi dengan beberapa elemen prosedural. Contoh: C + +, Java, Python.
• Bahasa yang secara historis bahasa prosedural, tetapi telah diperluas dengan beberapa fitur OO. Contoh: Fortran 2003, Perl, COBOL 2002.
• Bahasa dengan sebagian besar fitur objek (kelas, metode, warisan, usabilitas), tapi dalam bentuk aslinya jelas. Contoh: Oberon (Oberon-1 atau Oberon-2).
• Bahasa dengan tipe data abstrak dukungan, tetapi tidak semua fitur object-orientasi, kadang-kadang disebut objek berbasis bahasa. Contoh: Modula-2 (dengan sangat baik dan informasi enkapsulasi menyembunyikan), liat, CLU.
OOP di scripting
Dalam beberapa tahun terakhir, pemrograman berorientasi objek telah menjadi sangat populer dalam bahasa pemrograman scripting. Python, Ruby dan groovy adalah bahasa scripting yang dibangun di atas prinsip-prinsip OOP, sementara Perl dan PHP telah menambahkan fitur berorientasi objek sejak Perl 5 dan PHP 4, dan ColdFusion sejak versi 6.
The Document Object Model dari HTML, XHTML, dan XML dokumen di Internet telah binding ke populer JavaScript / ECMAScript bahasa. JavaScript mungkin merupakan yang paling terkenal pemrograman berbasis prototipe-bahasa, yang mempekerjakan kloning dari prototipe daripada mewarisi dari kelas. Bahasa scripting yang populer lain yang mengambil pendekatan ini adalah Lua. Versi sebelumnya ActionScript (sebagian superset dari R3 ECMA-262, juga dikenal sebagai ECMAScript) juga menggunakan model object berbasis prototipe. Versi ActionScript menggabungkan kombinasi berdasarkan klasifikasi dan prototipe model obyek yang didasarkan terutama pada saat ini tidak lengkap R4 ECMA-262 spesifikasi, yang berakar pada awal JavaScript Proposal 2. Microsoft juga mencakup JScript.NET mash-up model obyek berdasarkan proposal yang sama, dan juga merupakan superset dari R3 ECMA-262 spesifikasi.
Warisan dan perilaku subtyping
Hal ini intuitif untuk menganggap bahwa pewarisan menciptakan semantik "adalah sebuah" hubungan, dan dengan demikian menyimpulkan bahwa obyek dari subclass instantiated selalu dapat dengan aman digunakan sebagai pengganti dari instantiated mereka SUPERCLASS. Intuisi ini sayangnya OOP palsu dalam kebanyakan bahasa, khususnya di semua yang memungkinkan bisa berubah objek. Subtipe polimorfisme sebagai ditegakkan oleh checker jenis dalam bahasa OOP (dengan objek bisa berubah) tidak dapat menjamin perilaku subtyping dalam konteks apapun. Perilaku subtyping adalah diputuskan secara umum, sehingga tidak dapat dilaksanakan oleh sebuah program (compiler). Kelas atau objek hierarki harus dirancang secara hati-hati mempertimbangkan kemungkinan penggunaan yang salah tidak dapat dideteksi sintaksis. Masalah ini dikenal sebagai prinsip substitusi Liskov.
Objek-orientasi dan database
Kedua pemrograman berorientasi objek dan sistem manajemen database relasional (RDBMSs) adalah sangat umum dalam perangkat lunak hari ini. Karena database relasional tidak menyimpan objek secara langsung (meskipun beberapa RDBMSs memiliki fitur berorientasi objek untuk perkiraan ini), ada kebutuhan umum untuk menjembatani dua dunia. Ada beberapa solusi yang digunakan secara luas untuk masalah ini. Salah satu yang paling umum adalah pemetaan relasional obyek, seperti yang ditemukan di perpustakaan seperti Java Data Objects dan Ruby on Rails "ActiveRecord. Ada juga objek database yang dapat digunakan untuk menggantikan RDBMSs, tetapi belum ini sebagai sukses secara komersial sebagai RDBMSs.
Pencocokan dunia nyata
OOP dapat digunakan untuk menerjemahkan dari fenomena dunia nyata untuk elemen program (dan sebaliknya). OOP bahkan diciptakan untuk tujuan pemodelan fisik dalam Simula-67 bahasa pemrograman. Namun, tidak semua orang setuju bahwa dunia nyata langsung pemetaan yang difasilitasi oleh OOP, atau bahkan tujuan yang berharga; Bertrand Meyer berpendapat di Object-Oriented Software Konstruksi bahwa program ini tidak model dunia tetapi sebuah model dari beberapa bagian dari dunia; "Realitas adalah sepupu dua kali dihapus". Pada saat yang sama, beberapa keterbatasan utama OOP sudah diketahui.
Namun, kata Niklaus Wirth dari OOP dalam makalahnya "Selamat Ide melalui Looking Glass", "erat paradigma ini mencerminkan struktur sistem 'di dunia nyata', dan oleh karena itu cocok untuk model sistem kompleks dengan perilaku kompleks".

Tugas ALGORITMA DAN PEMROGRAMAN 1C (1DB03)
disusun oleh :
Amelia Agustina (31109527)
Cutrahardhika Septaweni (32109542)
Putri Anisyah (34109143)
Dwi Harsuwendo (33109105)
Irfan Cahyo Prakoso (32109501)
Marshall Prawira (34109769)
Tyrta Pratama (32109876)

1 komentar: