Jump to content
troikasix

Objek Oriented Secara Bit Dan Byte

Recommended Posts

Memahami kaitan OBJEK dengan MEMORI ALLOCATION - untuk bebudak baru belajar.

Kat kolej/universiti, bila bincang pasal objek, lecturer sebuk cakap objek adalah benda mcam orang, basikal, rumah dan bermacam lagilah objek seharian yang kita boleh nampak.

Tapi nak translate jadi programming mmg tak masuk akal. Komputer tak paham 'orang', 'meja' dan 'kerusi'.

Asal-Usul Objek dalam C++

Bila kita membuat deklarasi pembolehubah

int x;
komputer akan simpan ruangan bersaiz 4 byte. Dan bila kita masukkan nilai pada pembolehubah tersebut,
x = 23;
komputer akan masukkan nilai 23 ke ruangan yang disediakan tadi. Ini adalah perkara paling asas dalam programming. (Variable declaration). Perkataan lain seperti char (1 byte), double (8 byte), float(4 byte) dan long (8 byte) juga bertujuan sama, cuma berbeza dari segi saiz memori yang akan diperuntukkan. Lahirnya struct Timbul masalah bila kita perlu menggunakan jenis data yang pelik2 seperti Tarikh dan Alamat kediaman. Maka diperkenalkan perkataan struct dalam C. Daripada buat camni
int day;
int month;
int year;

void displayDate( int day, int mth, int yr )
{
    cout << day << "/" << mth << "/" << yr << endl;
}
Gunakan struct lebih baik
struct Date
{
    int day;
    int month;
    int year;
};

void displayDate( Date tl )
{
    cout << tl.day << "/" << tl.mth << "/" << tl.yr << endl;
}
Dan digunakan sebegini
int main (void)
{
    // Sejenis datatype baru, kompiler menyediakan ruang memori sebanyak
    // 12 byte (4 + 4 + 4)
    Date tl; 

    tl.day = 31;
    tl.month = 8;
    tl.year = 1957

    displayDate( tl );
}
Sejenis pembolehubah baru telah tercipta hasil gabungan 3 pembolehubah int. Perkataan struct tidak akan wujud lagi selepas program dikompil. Komputer cuma akan melihat ruangan 12 byte, untuk kegunaan menyimpan data. Deklarasi struct sememangnya cuma digunakan sebagai rujukan semasa proses kompil, setiap kali peruntukan memori perlu dibuat. Teknik ni memang bagus dan digunakan dengan meluas dalam program bahasa C. Windows API banyak menggunakan perkataan struct untuk memudahkan proses menulis program seperti: POINT //koordinat pada skrin RECT //Kotak pada skrin Lahirnya class Dengan teknik berorientasikan objek, C++ memperkenalkan keyword 'class' untuk memajukan lagi 'struct' tadi.
class Date
{
public:
    int day;
    int month;
    int year;

    void displayDate()
    {
        cout << day << "/" << mth << "/" << yr << endl;
    }
}

int main (void)
{
    // Datatype baru, kompiler perlu menyediakan ruang memori sebanyak
    // 12 byte (4 + 4 + 4)
    Date tl; 

    tl.day = 31;
    tl.month = 8;
    tl.year = 1957

    tl.displayDate( );
}
Perkataan class memajukan struct dengan menambah kebolehan fungsi di dalamnya. Ini berlaku kerana kebanyakan fungsi hanya sesuai untuk satu jenis struct. Maka fungsi2 ini dimasukkan sekali. Perkataan class juga akan hilang selepas proses kompil berlaku. Cuma saiz memori sahaja yang dapat dilihat apabila applikasi dijalankan. Jadi apakah sebenarnya objek yang difahami oleh komputer, tak lain cuma Memori Allocation jenis data yang kita cipta sendiri. Kesimpulan 1- *Objek bagi lecturer kita, adalah sebarang benda *class atau struct dimata komputer, menjawab soalan berapa ruang perlu disediakan dalam memori. Ruangan memori tersebut yang dirujuk sebagai objek. 2- *struct merupakan gabungan beberapa deklarasi pembolehubah *class merupakan struct + fungsi. Dengan formula A = B dan B = C, maka A = C, kita boleh katakan, sebarang pembolehubah adalah juga merupakan objek
int x;  //x merupakan deklarasi objek dari jenis int.
double y; //y merupakan deklarasi objek dari jenis double
Date dt; //dt merupakan deklarasi objek dari jenis Date

Harap ini membantu rakan kita yang baru belajar Orientasi Objek.

Share this post


Link to post
Share on other sites

:blink: hahaha.. aku tak terrer sangat c/c++ dan oop konsep. tapi ni kali kedua aku jumpa artikel yg mengaitkan struct dgn object dan class, yg 1st aku baca dalam buku. aku sangat mengakui ni salah satu cara paling bagus utk explain oop melalui c++.

terima kasih banyak2.

Kat kolej/universiti, bila bincang pasal objek, lecturer sebuk cakap objek adalah benda mcam orang, basikal, rumah dan bermacam lagilah objek seharian yang kita boleh nampak.

To repeat what others have said, requires education; to challenge it, requires brains. (Mary Pettibone Poole)

Share this post


Link to post
Share on other sites

*struct merupakan gabungan beberapa deklarasi pembolehubah

*class merupakan struct + fungsi.

:lol: Aku nak betulkan sikit aa... struct dan class sebenarnya 99.999% sama, bezanya member bagi struct adalah "private" jika tak diberitahu (by default) dan member bagi class adalah "public" jika tak diberitahu. Dua-dua boleh ada pembolehubah dan fungsi.

Share this post


Link to post
Share on other sites

Cayolah CFoo++. Tahniah tahniah. Nampak jugak kau yeee.... hahaha.

Tambah sket lagi.

Kalau dalam fail *.c : struct tak buleh ada member function sebab C tak support. Yang CFoo cakap tadi betul dalam fail *.cpp.

Jadi jgn terperangkap dengan "struct + member function" dalam *.h pastu #include dalam fail *.c

P/S: Aku tak penah buat fail *.c lagi skang ni.

Share this post


Link to post
Share on other sites

utk yg br belajar, i nak tambah sikit berkaitan rules for variable yg kita gune dlm c++...

some example for ilegal identifier,

Ilegal Identifier: employeee Salary

Description: antara employee dgn Salary tak blh ade space. so mesti letak underscore(_)

Ilegal Identifier: Hello!

Description: tanda seruan tak blh digunakan dlm identifier.

Ilegal Identifier: one + two

Description: symbol tambah(+) juga tak blh digunakan dlm identifier.

Ilegal Identifier: 2nd

Description: identifier juga tak blh di mulai dgn digit atau nombor.

Share this post


Link to post
Share on other sites

boleh terang dengan lebih jelas lagi tentang benda tu????? nak pahamkan lagi.....

Tang mana tak faham? Tang CFoo cakap ke? Tang saya cakap?

Memula saya kata:

class == struct + member function

CFoo betulkan:

class == struct

Dalam Bahasa C++

- keyword 'class' dan 'struct' adalah sama sebab struct pun boleh ada member function.

- Bezanya, secara otomatik, member dalam 'class' adalah private ttp struct public. (sbb tu CFoo kata 99.9999% sama)

Dalam Bahasa C

- keyword class tidak wujud

- struct tidak boleh ada member function. Hanya variable.

Jadi contoh code berikut adalah valid dalam bahasa C++ tapi tidak valid dalam bahasa C

class Date
{
   int day;          <-------------- Member variable semua private secara default
   int month;
   int year;
public:               <----------------- Kena letak perkataan ni
   void displayDate();
};
// Ataupun boleh guna struct
struct Date
{
   int day;       <-------- Otomatik jadi public decklaration
   int month;
   int year;
   void displayDate();  <--- Nampak tak member function dalam struct ni diperbolehkan
};

Timbul persoalan, macamana compiler nak tahu, kita tulis dalam bahasa C++ ataupun C? Sebab compiler sekarang boleh compile kedua2 bahasa sekali jalan,

Jawapan: Berdasarkan fail extension

*.CPP <--- Fail ini dikompail ikut bahasa C++

*.C <--- Fail ini dikompail ikut bahasa C

Share this post


Link to post
Share on other sites

satu2nya buku yg aku pernah baca yg ajar OOP konsep dari struct ke class ialah Thinking in C++ - Bruce Eckel. apa kata kita tetapkan buku ni sebagai buku teks utk forum c/c++ putera.com ni. aku pilih buku ni bukan sebab tu saja, tapi penjelasan dari Eckel ni sangat bagus, step by step, dan lebih mudah utk difahami secara mendalam. tambahan pula, buku ni boleh di download secara percuma disini - http://mindview.net/Books/TICPP/ThinkingInCPP2e.html

Share this post


Link to post
Share on other sites

Aku pun tak ingat mana aku dapat info pasal benda ni. Tapi mungkin buku yang sama kot. Memang aku pun baca buku tu gak dulu.

Share this post


Link to post
Share on other sites

nice intro.. harap sambungannya lebih menunjukkan "bit dan byte"nya. For example saya suka juga baca bagaimana compiler mengubah object oriented code ke machine code, "this" pointer, vtable dan benda2 macam tu...

oleh kerana "bit dan byte" relevan kat sini ;), saya suka nak ingatkan yang data type "int" tak semestinya 32-bit wide (but this is generally true for modern arch) dan data type "long" is not always mapped to 64-bit (in 32-bit arch it's still 32-bit wide). "long long" barulah sentiasa 64-bit.

Share this post


Link to post
Share on other sites

bro dah dekat nak masuk setahun dah ni.bila nak sambung siri tutorial ni bro?

Share this post


Link to post
Share on other sites

Rasanyer dah sambung dgn topik vtable pointer. Tapi aku try search balik, system kata aku tak log in, camner yek?

Share this post


Link to post
Share on other sites

forum ni giler sikit.kalo jd mcm tu ko kena clearkan/del semua temporary files, history, cookies n then log in balik.br bleh ok balik.

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...

×
×
  • Create New...