Jump to content
Sign in to follow this  
hairulfadly

Pengaturcaraan Berorientasian Objek (oop)

Recommended Posts

Mungkin korang semua tidak atau pernah dengar mengenai Object Oriented Programming.

Atau dalam istilah melayunya pengaturcaraan berorientasikan objek atau OOP.

Biar aku terangkan :)

(Object-oriented Programming) ialah paradigma pengaturcaraan sesebuah komputer.

Ia adalah untuk menekankan yang OOP boleh mengubah cara sesuatu perisian dibangunkan.

Dalam membangunkan OOP terdapat beberapa konsep asas yang perlu diketahui iaitu :

Konsep Asas

1. Kelas (class) — sebuah kelas mentakrifkan ciri-ciri abstrak bagi sesuatu benda.

Ini termasuklah sifat-sifat yang ada padanya dan peranannya.

Contohnya, kelas Kucing akan terdiri dari sifat-sifat yang ada pada kucing (baka, bulu, jantina dan sebagainya).

2. Objek (object) — tentuan (instance) bagi suatu kelas.

Kelas Kucing memiliki semua sifat yang mungkin ada pada seekor kucing,

manakala objek SiComel memiliki sifat-sifat yang tertentu sahaja.

Kucing mempunyai bulu, SiComel mempunyai bulu putih bertompok hitam.

3. Kaedah (method) — kebolehan bagi sebuah objek.

SiComel, sebagai seekor Kucing, mempunyai kebolehan mengiau.

Maka mengiau() ialah salah satu kaedah bagi SiComel.

SiComel juga boleh memiliki kaedah lain, umpamanya makan() atau berlari().

Dalam sebuah aturcara, penggunaan satu kaedah hanya berkesan pada objek yang ditentukan sahaja,

semua Kucing boleh mengiau, tetapi anda mesti ada seekor sahaja untuk mengiau.

4. Pewarisan (inheritance) — Lazimnya sebuah kelas boleh memiliki "subkelas" yang mengkhususkan kelas tersebut.

Contohnya, kelas Kucing boleh mempunyai subkelas KucingSiam, KucingBurma dan KucingParsi.

Semua subkelas ini akan "mewarisi" segala sifat yang ada pada keturunannya;

contohnya apabila kelas Kucing memiliki kaedah mengiau(),

maka setiap subkelasnya (KucingSiam, KucingBurma dan KucingParsi) juga akan memiliki kaedah mengiau.

Ini bermakna bahawa seorang pengaturcara akan menulis kaedah ini sekali sahaja.

Subkelas boleh "mentakrifkan semula" (mengubah), menyekang atau menambah ciri-ciri yang tidak ada pada kelas asalnya.

Contohnya Kucing memiliki sifat bulu, maka KucingSiam menentukan sifat bulu kepada 'licin dan berkilat'.

5. Pengkapsulan (encapsulation) — Mengasingkan pelaksanaan (implementasi) daripada antaramuka

6. Pengabstrakan (abstraction)

7. Polimorfisme (polymorphism) — Menggunakan nama yang sama untuk memulakan operasi yang berlainan

pada objek yang menggunakan jenis data berbeza.

Setakat ni dulu. Kalau ada sebarang penambahan dari ahli puteranian amatlah dialu-alukan. :blush:

Edited by hairulfadly

Share this post


Link to post
Share on other sites

Tambahan daripada aku. Kiranya salah harap sudi perbetulkan. Merujuk kepada nombor 6. Pengabstrakan (abstraction). Cara paling mudah menerangkan tentang abstract adalah mempunyai kepala tanpa badan. Bermakna apabila sesuatu class defined as abstract kesemua method dalam tu hanya mempunyai nama semata-mata, tiada logik dalamnya. Method didalam kelas tersebut mesti define sebagai abstract juga.

public abstract class Contoh {
         public abstract String hello();
}
Sebagaimana dapat dilihat, dalam class tersebut tiada logik dinyatakan. Apabila sesuatu class ingin menggunakannya maka class tersebut perlu extends:
public class Guna extends Contoh {
          public String hello() {
                   return "Hello World";
          }
}
Itu daripada aku. Kiranya silap harap perbetulkan B)TAMBAHAN: Kalau dalam Java atau C++ polymorphism merupakan sesuatu yang mudah dilakukan. Tapi pada PHP developers, pernah terfikir macam mana nak buat polymorphism? Sedangkan dalam satu-satu class PHP setiap method tidak boleh menggunakan nama yang sama. Teknik yang digunakan adalah menyerupai overload:
<?php 
public class HelloWorld
{
          public greet($hello, $world)
          {
                   return $hello." ".$world;
          }
}
?>
Itu merupakan kelas utamanya. Kita akan lakukan polymorphism dengan menggunakan extends:
<?php
public class Melayu extends HelloWorld
{
            public greet($hello)
            {
                   return parent::greet($hello, "Dunia");
            }
}
?>
Memandangkan ada pelbagai cara orang kita menyebut Hello (hello, harlo, halluuu, allo) akan tetapi hanya satu untuk Dunia maka contoh ini aku gunakan. B)TAMBAHAN: Bila nak gunakan class PHP tersebut:
<?php
$hello = Melayu::greet("HaLLo");

echo $hello;
?>

Ini akan menghasilkan HaLLo Dunia

p/s: @hairulfadly good thread. Keep it up and running B)

Edited by SHiDi

Share this post


Link to post
Share on other sites

Kalau korang buat flowchart or ilustration lagi senang paham kot. Nak baca2 konsep nie macam malas dan susah nak tangkap plak pasal OOP nie. Lagi pun bab2 teori nie kebanyakan orang mudah ngantuk.. hehehe. Just my opinion jer. Pasal kucing tu, memang bertepatan sekali konsep yang diterapkan... :D, senang nak imagine camner kucing punya sifat semua tu... hehehe.

Share this post


Link to post
Share on other sites

aku rasa ada kesilapan dalam penerangan ko tentang abstraction class...

ni aku rujuk oop dalam php la yer

dalam php:abstraction class bermaksud class yang mempunya concrete method dan juga abstraction method

asbtraction class tidak boleh di instantiate(betul ke aku eja tu --kira x boleh create objek dari abstract class)

abstract class mesti di extends oleh child class

contoh:

abstract class user(){

//abstract method

abstract function get_user_detail(){}

//concrete method

public function create_user(){

//ur logic goes here...

//bla..bla..

}

}

kalau ko nak declare fully abstract baik ko guna interface jer..

interface user{

private create_user(){}

private get_user_detail(){}

}

interface sama dgn abstract..iaitu ianya tidak boleh di instantiate..so kena extends..tapi cara extends x sama dgn abstract class..

cth extends: class user_detail implemets user{

//logic goes here

}

perhatian penggunaan keyword implemetes rather than the word extends...

kebanyakan programmer lebih menggunakan interface drp abstract class adalah kerana php sendiri tidak menyokong multiple inheritance..tapi satu class boleh implements lebih dr satu interface

Edited by slier

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...