Selasa, 23 Desember 2008

Manajemen proyek dengan pendekatan object oriented.

Bagi kami konsep ini merupakan hal baru, maklum dengan posisi yang kami pernah terima, semuanya belum pernah memakai pendekatan ini. Terus sekarang menariknya apa ketika sebuah proyek dikelola dengan pendekatan object oriented?? Berikut ulasanya ...
Ada buku menarik yang ditulis oleh Murray Cantor dengan judul ” Object-Oriented Project Management with UML”. Meski buku ini terbitan 98, namun isinya masih cukup relevan ketika diimplementasikan pada saat ini.
Buku ini merupakan pedoman praktis untuk pengembangan perangkat lunak modern. Dijelaskan pula tidak hanya manajer proyek apa yang harus dilakukan melalui semua tahapan proyek, tetapi juga bagaimana teknik bekerja. Untuk itu, buku ini meliputi perencanaan, staf, organisasi, pembangunan, dan pengiriman benda-berbasis perangkat lunak. Hari-hari kegiatan proyek yang tercakup dalam Manajer
mendalam, memberikan kepemimpinan dan manajemen tim untuk Anda.
Untuk Siapa buku ini?? sasaran utama adalah proyek perangkat lunak dan program, neophytes, dan ahli, serta orang-orang pengembang yang memiliki ketertarikan bagaimana mereka sesuai dengan peran dalam keseluruhan proses pembangunan, atau bahkan lebih baik, yang bercita-cita untuk manajemen proyek. Teknik yang dijelaskan dapat diterapkan untuk penelitian dan pengembangan proyek, alat internal pembangunan, dikontrak perangkat lunak.
Memang saat ini banyak sekali training atau kursus tentang manajemn proyek, oleh karena itu buku ini bisa dijadikan bahan dalam mendapatkan sertifikasi manajemen proyek.

untuk url nya bisa didapatkan disini :
download

procedural VS Object Oriented

sampai sekarang banyak sekali style atau gaya seseorang dalam melakukan codingnya. kali ini kami coba merangkum, apa sih bedanya procedural ama object oriented? berikut ulasanya :

Pemrograman Berorientasi Prosedur :

1.Fokus utama pada fungsi dan prosedur yang beroperasi pada data
2.Program Besar terbagi dalam program unit kecil yang disebut fungsi
3.Data dan fungsi diperlakukan sebagai entitas terpisah.
4.Data bebas bergerak di sekitar sistem dari satu fungsi lain.
5.Program desain berikut "Pendekatan Top Down".
--------------------------------------...
Pemrograman Berorientasi Objek :

1.Menekankan pada data yang sedang beroperasi dan tidak fungsi atau prosedur
2.Programs dibagi kedalam apa yang disebut objek.
3.Data dan fungsi bersama diperlakukan sebagai entitas terpisahkan.
4.Data tersembunyi dan tidak dapat diakses oleh fungsi eksternal.
5.Program desain berikut "Bawah UP Pendekatan".

ada yang mau nambahkan?

referensi : kanan, kiri ok.. google.com , myProject.com, kuliahku.com

Comparing Object-Oriented Language

Object-Oriented Languages

Apa yang benar-benar membuat sebuah bahasa pemrograman yang berorientasi objek? Dan, ketika kapan object oritented benar-benar mulai? Banyak orang menunjuk ke awal tahun 1960-an sebagaimana Simula-67 memperkenalkan konsep obyek.

Simula

Seperti namanya, Simula telah dibuat untuk membantu dalam simulasi. Ini bukan sebuah kebetulan bahwa biasanya model simulasi system dunia nyata. Banyak dari sistem dunia nyata yang terdapat ratusan, atau ribuan, bagian dari interaksi.

Awal versi bahasa, Simula-1, telah diperkenalkan pada tahun 1966. Modul program yang ditetapkan oleh Simula yang tidak didasarkan pada prosedur, tetapi benar-benar pada objek. Simula memiliki novel cara memasang objek, sehingga setiap objek memiliki perilaku dan data.

Smalltalk

Mempertimbangkan banyak hal yang pertama adalah benar-benar OO bahasa Smalltalk, dikembangkan di Kelompok Belajar Penelitian Xerox di Palo Alto's Research Center pada awal tahun 1970-an. Di luar, semuanya sudah benar-benar sebuah objek yang memaksa terjadinya paradigma yang OO. Ia adalah hampir mustahil untuk menulis sebuah program di luar yang tidak OO. Ini bukan untuk kasus lain yang mendukung bahasa objek, seperti C + + dan Visual Basic (dan Java, untuk yang lain).

C++

C + + ini berakar pada sebuah proyek untuk mensimulasikan perangkat lunak yang berjalan pada sistem didistribusikan. Simulator ini, sebenarnya ditulis dalam Simula, adalah dimana kepentingannya Bjarne Stroustrup dari ide menggabungkan beberapa fitur Simula dengan sintaks yang digunakan oleh C.

Ketika bekerja di Bell, Stroustrup melakukan  kontak pribadi dengan orang-orang seperti Brian Kernighan dan Dennis Ritchie, yang menulis buku tentang definitif C. Bila awal simulator ditulis dalam Simula gagal, Stroustrup memutuskan untuk menulis ulang dalam C disebut BCPL pendahulunya.

C + + pada awalnya dilaksanakan pada tahun 1982 dengan nama C dengan Kelas. Sebagai nama menyarankan, yang paling penting konsep dengan Kelas C adalah penambahan kelas. Kelas memberikan konsep encapsulation sekarang diperlukan dengan bahasa OO.

Java

Asal Java di elektronik konsumen. Pada 1991, Sun Microsystems mulai menyelidiki bagaimana mungkin memanfaatkan pertumbuhan pasar ini. Beberapa saat kemudian, James Gosling telah menyelidiki kemungkinan membuat hardware-platform perangkat lunak independen hanya untuk tujuan ini. Pada awalnya, ia berusaha untuk menggunakan C + +, tetapi segera ditinggalkan C + + dan memulai penciptaan yang baru dia alih bahasa Oak.

tahun 1995, Java beta 1 telah dirilis, dan browser Netscape Navigator 2,0 menghimpun Java. Java 1,0 secara resmi diluncurkan pada bulan Januari 1996. Selama beberapa tahun terakhir, Java telah berkembang ke dalam rilis Java 2 Platform Standard Edition 6,0 serta platform lainnya seperti Enterprise Edition (J2EE) untuk perusahaan / server pasar dan Micro Edition (J2ME) untuk mobile dan nirkabel.

.NET

Microsoft awalnya menanggapi popularitas Java dengan memproduksi versi Java disebut Visual J + +. Namun, Microsoft memutuskan respon yang lebih komprehensif. Menggunakan banyak dari groundbreaking konsep Java yang dilaksanakan, Microsoft mengembangkannya disebut bahasa C # yang menjadi dasar bagi perusahaan. NET platform. Seperti dengan Java, C # sangat tergantung pada keberhasilan dan kegagalan sebelumnya bahasa.

.NET development environment meliputi banyak yang benar-benar karakteristik dari beberapa platform lainnya.  .NET memperkenalkan banyak konsep yang oleh rilis awal Java. File. NET platform juga membangun atas banyak dari fitur-fitur canggih dari VB6 dan Visual C + + lingkungan.

Visual Basic 6 merupakan salah satu bahasa pemrograman paling populer. Environment program untuk VB6 telah memiliki dampak besar pada nvironment development. VB6 telah berkembang terus ke arah berorientasi objek model hingga akhirnya bergabung dalam daftar bahasa berorientasi objek dengan peluncuran Visual Basic. NET. VB6 tidak sepenuhnya berorientasi objek, tetapi tidak melaksanakan warisan sepenuhnya.

Perbandingan Code
 
Untuk sisa artikel, saya akan (kebanyakan) membiarkan kode itu sendiri untuk berbicara. Di masa mendatang artikel, Anda akan menjelajahi pemrograman struktur berbagai bahasa pemrograman namun; dalam konteks artikel ini, saya tujuannya adalah agar Anda mengambil contoh berikut dan mengembangkan dasar untuk masing-masing dari tiga bahasa: Jawa, C #, dan VB. NET.
Tiga contoh aplikasi adalah sebagai berikut:
·IntSquare: Satu kelas untuk menghitung kuadrat dari angka.
·Person: Satu kelas untuk mengatur dan mendapatkan nama dan alamat orang.
·Shape: Sebuah hirarki dari kelas yang menghitung luas berbagai bentuk.
Contoh ini adalah langkah pertama dalam membuat proyek-proyek di berbagai program bahasa disajikan.
Pada tahap ini, Anda dapat memeriksa kode hanya agar mendapatkan rasa untuk mengetahui sintaks yang digunakan oleh berbagai bahasa. Hal ini sangat membantu dalam pemrograman class. Seringkali, kelas akan fokus pada satu pelajaran bahasa agar pembangunan alat overhead, tidak menyebut tentang belajar petunjuk bahasa, untuk minimum. Meskipun Anda dapat fokus pada satu bahasa untuk memperkuat konstruksi berorientasi objek, sangat membantu untuk melihat contoh dalam bahasa lain untuk menambah dan memperkuat dasar bahasa yang digunakan dalam kelas.

Setelah Anda memiliki kode yg diperiksa, langkah berikutnya adalah untuk memuat berbagai platform pengembangan sehingga anda dapat mengkompilasi dan menjalankan kode. Pengembangan platform adalah topik yang akan Anda menjelajahi panjang di dalam artikel berikutnya.

Untuk setiap contoh ini, saya memberikan komentar singkat mengenai perintahd dalam kode. Dalam setiap kasus, contoh yang identik-setidaknya dalam fungsi. targetnya adalah untuk memecahkan masalah yang sama dengan masing-masing bahasa.
IntSquare
Dalam contoh IntSquare, fokus, sebagai contoh awal, adalah pada sintaks diperlukan untuk kompilasi dan menjalankan program yang sederhana dalam tiga bahasa. Target  di sini adalah cukup sederhana; membuat metode untuk menghitung kuadrat dari angk
Kelas ini memiliki atribut tunggal dan dua methode ( a public interface dan private implementation ).

public class IntSquare {
 
   // private attribute
   private int squareValue;
 
   // public interface
   public int getSquare (int value) {
 
      squareValue =calculateSquare(value);
 
      return squareValue;
 
   }
 
   // private implementation
   private int calculateSquare (int value) {
      return value*value;
 
   }
}
Listing 1a: Java Code for IntSquare Class
public class IntSquare {
 
   // private attribute
   private int squareValue;
 
   // public interface
   public int getSquare (int value) {
 
      squareValue =calculateSquare(value);
 
      return squareValue;
 
   }
 
   // private implementation
   private int calculateSquare (int value) {
 
      return value*value;
 
   }
}
Listing 1b: C# Code for IntSquare Class
Public Class IntSquare
 
   Dim squareValue As Integer
 
   Property accessSquareValue() As Integer
 
      Get
         Return squareValue
      End Get
 
      Set(ByVal Value As Integer)
         squareValue = Value
      End Set
 
   End Property
 
   Public Function calculateSquare(ByVal Value As Integer) _
      As Integer
 
      System.Console.WriteLine(Value)
 
      squareValue = Value * Value
 
      Return squareValue>
 
   End Function
 
End Class
Listing 1c: VB Code for IntSquare Class
Person
Contoh beirkutnya yaitu pembuatan class Person didalamnya disertakan contoh ilustrasi dari konsep encapsulation pada object oriented.
public class Person{
 
   //Attributes
   private String name;
   private String address;
 
   //Methods
   public String getName(){
      return name;
   }
   public void setName(String n){
      name = n;
   }
 
   public String getAddress(){
      return address;
   }
   public void setAddress(String adr){
      address = adr;
   }
 
}
Listing 2a: Java Code for Person Class
public class Person{
 
   //Attributes
   private string name;
   private string address;
 
   //Methods
   public string getName(){
      return name;
   }
   public void setName(string n){
      name = n;
   }
 
   public string getAddress(){
      return address;
   }
   public void setAddress(string adr){
      address = adr;
   }
 
}
Listing 2b: C# Code for Person Class
Public Class Person
 
   Dim name As String
   Dim address As String
 
   Property accessName() As String
 
      Get
         Return name
      End Get
 
      Set(ByVal Value As String)
         name = Value
      End Set
 
   End Property
 
   Property accessAddress() As String
 
      Get
         Return address
      End Get
 
      Set(ByVal Value As String)
         address = Value
      End Set
 
   End Property
 
End Class
 
Shape
 
Contoh berikutnya yaitu Class Shape yang lebih kompleks yang mengilustrasikan inheritance dari konsep object oriented.
//Shape
public abstract class Shape{
 
   protected double area;
 
   public abstract double getArea();
 
}
 
//Rectangle
public class Rectangle extends Shape{
 
   private double length;
   private double width;
 
   public Rectangle(double l, double w){
      length = l;
      width = w;
   }
 
   public double getArea() {
      area = length*width;
      return (area);
   }
}
 
//Circle
public class Circle extends Shape{
 
   private double radius;
 
   public Circle(double r) {
 
      radius = r;
 
   }
 
   public double getArea() {
 
      area = 3.14*(radius*radius);
      return (area);
 
   }
}
 
//TestShape
public class testShape {
 
   public static void main(String args[]) {
 
      Circle circle = new Circle(5);
      Rectangle rectangle = new Rectangle(4,5);
 
   }
 
}
Listing 3a: Java Code for Shape
//Shape
public abstract class Shape{
 
   protected double area;
 
   public abstract double getArea();
 
}
 
//Rectangle
public class Rectangle : Shape{
 
   private double length;
   private double width;
 
   public Rectangle(double l, double w){
      length = l;
      width = w;
   }
 
   public override double getArea() {
      area = length*width;
      return (area);
   }
}
 
//Circle
public class Circle : Shape {
 
   private double radius;
 
   public Circle(double r) {
 
      radius = r;
 
   }
 
   public override double getArea() {
 
      area = 3.14*(radius*radius);
      return (area);
 
   }
}
 
//TestShape
public class TestShape {
 
   public static void Main() {
 
      Circle circle = new Circle(5);
      Rectangle rectangle = new Rectangle(4,5);
 
   }
 
}
Listing 3b: C# Code for Shape
 
Public MustInherit Class Shape
 
   Protected area As Double
 
   Public MustOverride Function getArea() As Double
 
End Class
 
Public Class Rectangle
 
   Inherits Shape
 
   Dim length As Double
   Dim width As Double
 
   Sub New(ByVal l As Double, ByVal w As Double)
 
      length = l
      width = w
 
  End Sub
 
   Public Overrides Function getArea() As Double
 
      area = length * width
      Return area
 
   End Function
 
End Class
 
Public Class Circle
 
   Inherits Shape
 
   Dim radius As Double
 
   Sub New(ByVal r As Double)
 
      radius = r
 
   End Sub
 
   Public Overrides Function getArea() As Double
 
      area = 3.14 * (radius * radius)
      Return area
 
   End Function
 
End Class
 
Module Module1
 
   Sub Main()
 
      Dim myCircle As New Circle(2.2)
      Dim myRectangle As New Rectangle(2.2, 3.3)
      Dim result As Double
 
      result = myCircle.getArea()
      System.Console.Write("Circle area =  ")
      System.Console.WriteLine(result)
 
      result = myRectangle.getArea()
      System.Console.Write("Rectangle area =  ")
      System.Console.WriteLine(result)
 
      System.Console.Read()
   End Sub
 
End Module
Listing 3c: VB Code for Shape
Referensi
http://www.developer.com

Kamis, 11 Desember 2008

Inheritance Pada Python...

Inheritance berarti turunan dari suatu class. Pendefinisian sintaksnya adalah sebagai berikut :

class NamaClassTurunan (NamaClassDasar):



...

...

...



Nama ClassDasar harus didefinisikan dalam ruang lingkup class turunan. Selain sebuah nama ClassDasar, sebuah ekspresi juga diperbolehkan. Contohnya pada saat menurunkan suatu class yang terdapat dalam suatu modul :

class NamaClassTurunan(namamodule.NamaClassDasar)

Menjalankan pendefinisian class turunan sama halnya dengan mendefinisikan class dasar. Pada saat suatu objek class dibangun, classDasar disertakan di dalamnya. Hal ini digunakan sebagai referensi attribut; jika permintaan terhadap suatu attribut tidak ditemukan di dalam class, kemudian mencari attribut tersebut ke dalam classDasar. Aturan ini berkelanjutan jika classDasar yang ditentukan merupakan classTurunan lain.

Berikut ini merupakan classTurunan dari class Mencetak :

>>> class printer (Mencetak):

... def tambah_kata(self,kata):

... self.kata = self.kata + kata



Pada contoh diatas kita membuat suatu classTurunan dengan nama printer yang diturunkan dari class Mencetak, dan ditambahkan suatu metode yang berfungsi menambahkan suatu kata. Contoh penggunaannya :

>>> buku = printer()

>>> buku.kata = "Buku Python"

>>> buku.tambah_kata("Bisa dibeli di Amazon.com")

>>> buku.cetak()


Kata yang anda ingin cetak Buku Python bisa dibeli di Amazon.com

Contoh diatas adalah suatu class turunan yang diturunkan dari class Mencetak.

Seperti yang terdapat pada kode diatas, beberapa metode diatas tidak didefinisikan dalam class printer, tetapi mengapa printer dapat menjalankan metode yang berada pada class Mencetak? hal ini dikarenakan classTurunan akan mencari attribut yang dipanggil pada ClassDasar jika attribut tersebut tidak ditemukan dalam class itu sendiri. Kita juga dapat mendefinisikan classTurunan dari beberapa ClassDasar, seperti halnya satu classDasar, jika attriut yang diminta tidak ada pada class itu sendiri maka akan mencari ke classDasarsatu, kemudian jika tidak ada juga maka akan mencari classDasar yang berikutnya.

disadur dari www.ilmukomputer.org

Rabu, 03 Desember 2008

beberapa isu dari OOP

Ada sejumlah kesalahan yang dilakukan oleh programmer ketika mereka menggunakan bahasa pemrograman berorientasi objek. Salah satu contohnya yaitu penggantian terhadap jenis type dari object yang berkaitan dengan object tersebut. Bila ini terjadi, kelebihan polymorphism dan inheritence menjadi berkurang.

Ini hanyalah satu dari sekian banyak masalah programmer yang dihadapi ketika mencoba untuk membuat sebuah aplikasi dengan pendekatan pemrograman berorientasi objek. Salah satu ciri dari OOP adalah yang mendukung apa yang disebut code centrality. code centrality terhubung ke inheritence. Banyak kritik menunjukkan bahwa code centrality membuat kode lebih mahal dalam proses maintenance.

Biaya maintenance yang dilibatkan dengan code dapat menjadi tinggi dengan melibatkan aplikasi yang besar. Jika ada masalah di tingkat yang lebih tinggi dari sistem, hal ini dapat menyebabkan masalah serius. pada Industri teknologi informasi adalah salah satu yang tinggi turnovernya, dan karyawan baru tidak akan seperti akrab dengan code. Beberapa pengembang yang menjaga tingkat kelas yang lebih rendah telah dikenal untuk menghindari membuat perubahan pada kode untuk memperbaiki bug. developer tersebut akan meminta orang lain untuk memperbaiki masalah. Namun, code centrality dapat diperoleh dengan teknik yang aman. Hal lain yang banyak kritikus keluarkan adalah tentang OOP yang eksklusif dari daftar pilihan mungkin tidak sesuai dengan perubahan yang terjadi dalam dunia nyata.

Namun, mereka yang mendukung OOP yang merespon seperti teknik "komposisi" dapat membantu mereka memecahkan banyak dari masalah ini. Walaupun demikian, beberapa mengatakan bahwa penyesuaian jaringan teknik komposisi struktur data, dan ini mungkin tbukan merupakan alternatif yang baik. Cara lain yang dapat dihindari adalah dengan hanya melihat objek spesifik yang tersedia, dan model hubungan di antara

mereka. Perlu dicatat bahwa inheritence dan polymorphism dapat menjadi suatu hal yang kompleks. Banyak masukan tentang OOP bahwa menggunakan model relasional adalah lebih baik karena memiliki struktur matematika yang didasarkan pada relasional kalkulus dan predikat kalkulus. Sebaliknya, OOP tidak memiliki struktur yang didasarkan pada model matematika.

dan juga ditambahkan bahwa OOP menyerupai database sistem navigasi yang digunakan selama tahun 1960-an. Orang-orang ini mengklaim bahwa database relasional hanya bersifat pengganti. Namun, hal itu tidak menjadi tujuan utama mereka yang mengembangkan OOP. Kemungkinan pemodelan database relasional yang didasarkan pada lokasi yang berbeda dari yang didasarkan pada OOP. Dalam keadaan apapun, ada hubungan antara dua sebab relasional tabel database digunakan dengan model OOP. Banyak orang mempunyai pendapat tentang peran kedua konsep ini bermain.

Beberapa kritikus mengklaim bahwa OOP telah mengakibatkan pengkopian yang tidak diperlukan, sedangkan yang lainnya hanya klaim yang berlawanan. Masalah lainnya yang dilihat pada OOP tersebut disebut

impedance mismatch. Ini akan terjadi antara database relasional dan OOP. Ini akan terjadi jika skala dan penekanan di antara operasi yang dilakukan oleh database dan objek berbeda. Transaksi Database cenderung jauh lebih besar daripada OOP. Walaupun database dapat berguna jika untuk menyimpan informasi di antara objek, data yang berhubungan dengan objek hanya boleh disimpan sekali data yang telah diringkas dan
dikumpulkan.

presentasi dari obyek jangan ditambahkan ke database. Beberapa kritikus menyatakan bahwa karena objek yang kecil, tidak menjadikan OOP akan jadi rumit. Pendukung akan sering merespon dengan menyebutkan bahwa tidak ada overhead kinerja yang diciptakan oleh program berorientasi objek. Mereka akan pergi dan mengatakan bahwa setiap domain akan dimodelkan secara mandiri dari yang lain. Skala arsitektur akan
tergantung pada informasi yang harus disimpan dalam database. Banyak kritikus akan fokus pada sambungan antara database schemas, dan mereka akan menunjukan bahwa duplikasi akan menjadikan konflik.

Mungkin terdapat beberapa masalah dengan OOP, hal yang sama dapat dikatakan untuk pemograman berorientasi subyek. Paradigma yang digunakan akan tergantung pada kebutuhan dari orang yang menggunakannya. Sementara OOP mungkin pendekatan yang lebih baik dalam beberapa situasi, mungkin tidak dapat yang terbaik dalam pendekatan lain.

Sejarah Pemrograman Berorientasi Objek

Dasar untuk OOP dimulai pada awal tahun 1960-an. Sebuah terobosan melibatkan contoh dan objek telah dicapai di MIT dengan PDP-1, dan pertama untuk menggunakan bahasa pemrograman objek adalah Simula 67. Ia dirancang untuk tujuan membuat simulasi, dan dikembangkan oleh Kristen Nygaard dan Ole-Johan Dahl di Norwegia.


Mereka bekerja pada simulasi yang berurusan dengan exploding kapal, dan mereka dapat diwujudkan grup yang berbeda kapal ke kategori. Setiap jenis kapal akan memiliki class, dan class akan menghasilkan perilaku yang unik dan data. Simula tidak hanya bertanggung jawab untuk memperkenalkan konsep class, tetapi juga memperkenalkan instance dari class.

Istilah "object oriented programming" pertama kali digunakan oleh Xerox PARC mereka di luar program bahasa. Istilah ini digunakan untuk merujuk kepada proses menggunakan objek sebagai dasar untuk penghitungan. Tim Smalltalk yang telah terinspirasi oleh Simula 67 proyek, tetapi mereka telah merancang Smalltalk sehingga akan dinamis. Object dapat diubah, diciptakan, atau dihapus, dan ini berbeda dengan sistem statis yang digunakan secara umum. smalltalk juga merupakan bahasa pemrograman pertama kali yang memperkenalkan konsep inheeritance. Hal ini adalah fitur yang diperbolehkan untuk Smalltalk melebihi simula 67 dan pemrograman sistem analog. Meskipun sistem yang canggih pada saat itu belum bisa menggunakan konsep inheritance.

Simula 67 adalah sistem yang telah memberikan inspirasi banyak bahasa pemrograman lain, termasuk Pascal dan Lips. Pada tahun 1980-an, pemrograman berorientasi objek telah menjadi dominan, dan faktor utama dalam hal ini yakitu C++. object oriented programming juga penting untuk pengembangan grafik user interface. Cocoa dengan struktur yang ada dalam Mac OS X adalah contoh yang baik dari GUI yang dinamis yang bekerja dengan bahasa pemrograman berorientasi objek. Paradigma dari pemrograman ini juga telah memainkan peranan penting dalam pengembangan event-driven programming.

Niklaus Wirth dan asosiasinya yang mencari daerah seperti modular programming dan abstraction dan mereka mengembangkan sistem yang menghimpun dua unsur ini. Kedua sistem ini adalah Oberon dan Modula-2. Oberon menggunakan pendekatan yang unik untuk class dan objek orientasi yang jauh berbeda dibandingkan C++ atau smalltalk. Sejak diperkenalkannya OOP, sejumlah besar bahasa pemrograman modern sekarang menggunakan konsep ini. Beberapa diantaranya adalah Fortran, BASIC, dan Pascal. Ada beberapa masalah kompatibilitas, karena banyak bahasa pemrograman yang tidak dirancang dengan pendekatan OOP. Pemrograman bahasa berorientasi objek yang "murni" tidak memiliki banyak fungsi yang diperlukan oleh programmer.

Untuk memecahkan masalah tersebut, sejumlah peneliti telah mencoba membuat desain baru untuk bahasa pemrograman yang menggunakan kosep obejct oriented yang masih tetap memnggunakan fungsi yang diperlukan oleh programer. Satu contoh dari sebuah bahasa pemrograman yang telah dicapai adalah Eiffel. Bahasa pemrograman lain yang telah berusaha untuk memecahkan masalah ini adalah Java. Java menjadi populer karena menggunakan virtual Machine, dan sangat mirip dengan C++ dan C. mesin virtual penting karena memungkinkan kode untuk dijalankan pada berbagai platform tanpa perlu diubah. Sistem lain yang serupa adalah Microsoft .NET. Banyak pengembang sekarang memahami pentingnya OOP, dan sedang aktif menggunakan dalam programnya masing-masing. Banyak peneliti terus membuat pengembangan dengan menggunakan pendekatan object oriented.

Ada sejumlah bahasa lain yang telah berhasil mengkombinasikan pendekatan objek oriented dengan prosedur yang berguna untuk programmer. Python adalah salah satu contoh, dan Ruby menggunakan pendekatan yang serupa juga.


Penggunaan pendekatan yang berorientasi objek telah menyebabkan pengembangan dalam bahasa modeling, design patern, dan lain sebagainya.Kemungkinan OOP merupakan paradigma pemrograman yang akan terus berkembang seperti yang kita maju ke depan. Ini merupakan bahasa yang kuat untuk terus ditingkatkan selama bertahun-tahun. Ini adalah perdebatan dalam komunitas, sebagai kritikus menunjukkan sejumlah masalah dengan struktur. Namun, popularitas bahasa pemrograman seperti Java menunjukkan bahwa paradigma ini akan terus ada.

sumber : http://www.exforsys.com

Sabtu, 01 November 2008

Derivation and inheritance pada Ruby

Derivation and Inheritance

pada bagian ini akan kita bahas tentang kosep derivation of class. pada ruby derivasi class merupakan fitur yang sangat berguna, dikarenakan programmer diijinkan untuk mendefinisikan class baru dengan cara melakukan extending class yang sudah ada. dengan menggunakan class turunan, programmer bisa mengekploitasi commonalities yang berada pada class dalam sebuah program. class yang berbeda dapat melakukan sharing nilai dan operasi.

Derivation merupakan pendefinisian class dengan cara meng-Extend dari class yang telah ada. class yang baru disebut class turunan. dan yang lama yang dijadikan referensi disebut dengan base class.

dikutip dari :
http://www.brpreiss.com

didalam Ruby, setiap class merupakan turunan dari sebuah base class. jika tidak ada base class yang dideklarasikan secara explisit ketika class baru didefinisikan, object base class is assumed. tidak seperti pada object oriented pada bahasa lain, Ruby tidak support untuk multiple inheritance.

perhatikan contoh berikut ini :


Program : Person class



Program: Parent class.

class turunan akan mewariskan semua atribut yang dimiliki oleh base class. tentu saja class turunan berisi semua atribut yang dimiliki oleh base class dan class turunan akan mensuport semua operasi yang sama yang terdapat pada base class. sebagai contoh :


p = Person.new
q = Parent.new

karena p adalah person, maka p akan memiliki atribut @name dan @sex dan methode to_s. lebih jauh lagi, karena parent is derived from person, maka object q juga memiliki atribut @name dan @sex dan methode to_s.

class turunan juga dapat meng-extend base clas untuk beberapa cara : atribut pada instance yang baru dapat digunakan, methode baru dapat didefinisikan, dan existing methode dapat dilakukan overridden. cebagai contoh : parent class menambahkan atribut baru @children dan methode child.

jika methode didefinisikan pada class turunan yang memiliki nama yang sama pada base class, maka methode pada class turunan akan meng-overridde methode pada base class. sebagai contoh : methode to_s pada parent class akan mengoverridde methode to_s pada class Person. oleh karena itu, p.to_s akan meng-invoke Person.to_s yang mana q.to_s meng-invoke parent.to_s.