Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Operator overloading.

Presentasi serupa


Presentasi berjudul: "Operator overloading."— Transcript presentasi:

1 Operator overloading

2 Konsep overloading terhadap operator didasarkan pada operasi yang terjadi sehari-hari misalkan operator + biasa digunakan untuk menjumlahkan bilangan bulat ataupun bilangan pecahan. 4 + 5 Bagaimana jika operator + digunakan untuk penjumlahan bilangan kompleks?

3 Untuk menjumlahkan bilangan kompleks, perlu sedikit modifikasi dalam penggunaan operator +
Penambahan bilangan kompleks melibatkan penambahan sisi real dan imajiner (3 - 5i) + (6 + 7i) = (3 + 6) + (-5 + 7)i = 9 + 2i

4 Operator overloading artinya melakukan modifikasi / overloading pada operator (+, -, *, dsb) sesuai kebutuhan Syntax operator overloading: Tipe operator simbol_operator ( argument )

5 Operator yang dapat di-overloading
+ - * / % ^ & | ~ ! = > < += -= *= /= %= ^= &= |= >= <= && || == != <<= >>= << >> ++ -- ->* , -> [] () new New[] delete Delete[]

6 Operator yang tidak dapat di-overloading
Kegunaan Contoh . Operator anggota struct atau class Cin.getline() .* Operator pointer ke anggota Object.*anggota : : Operator lingkup Class::anggota ? : Ungkapan kondisi C=(a>b)?a:b

7 Overloading operator biner
Operator biner merupakan operator dengan dua operand, contoh operator+. Bentuk umum overloading operator biner adalah: TipeData operator simbol_operator (object )

8 #include <iostream>
using namespace std; class complex { float riil; float imajiner; public: complex() { riil=0; imajiner=0; }; complex(float real, float imaginer) riil=real; imajiner=imaginer; void display(void) cout<<"["<<riil<<"]+["<<imajiner<<"i]\n"; complex operator +(complex c) { complex temp; temp.riil = riil+c.riil; temp.imajiner=imajiner+c.imajiner; return(temp); }; main() complex c1(2.5, 6.1); complex c2(3.3, 4.5); complex c3; c3=c1+c2; cout<<"\nC1="; c1.display(); cout<<"\nC2="; c2.display(); cout<<"\nC3="; c3.display(); system("pause"); }

9 Lengkapi program di atas untuk operasi berikut
Addition (a + bi) + (c + di) = (a + c) + (b + d)i. Substraction (a + bi) - (c + di) = (a - c) + (b - d)i. Multiplication (a + bi) * (c + di) = (ac - bd) + (ad + bc)i. c* (a + bi) = c*a + c*bi Addition dengan bilangan integer (a + bi) + x= (a+x) + bi

10 Lengkapi program di atas untuk operasi berikut
Increment (a + bi)++ = (a ++) + (b++)i Operator << (operator keluaran setelah cout) tampil : Riil = a, Imajiner=b; Operator >> (operator masukan setelah cin) tampil : Masukkan bilangan riil : Masukkan bilangan imajiner :

11 Overloading operator increment dan decrement
Operator increment ada dua macam yaitu: Pre increment, dengan format: Nama_kelas operator++(); Post increment dengan format: Nama_kelas operator++(int); Operator decrement juga ada dua yaitu: Predecrement, dengan format: Nama_kelas operator--(); Post decrement, dengan format: Nama_kelas operator--(int);

12 Contoh Program // Program c++ dengan operator decrement &increment
#include <constream.h> class Date { private: int month, day, year; static const int days[ ] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; void helpIncrement(); public: Date(int m=1, int d=1, int y=1990); void setDate(int m, int d, int y); Date operator++(); Date operator++( int ); const Date operator+= ( int ); int leapYear( int ); int endOfMonth( int ); };

13 // pre increment Date Date::operator++() { helpIncrement(); return (*this) } // post increment Date Date::operator++(int){ Date temp = *this void Date::helpIncrement(){ if (endOfMonth( day ) && month == 12) { day = 1; month = 1; ++year;

14 else if ( endOfMonth(day) ) {
} else ++day; int Date::endOfMonth( int d) { if ( month ==2 && leapYear( year ) ) return (d == 29); return (d == days[ moth ]); int Date::leapYear( int yr){ if ( (yr%40 == 0) || (yr%100 != 0 && yr%4 == 0) ) return 1;

15 return 0; } const Date operator+= ( int addays) { for (int I=0; I < addays; I++) helpIncrement(); return *this;

16 Operator overloading dengan friend
Operator overloading yang sering menggunakan friend adalah << pada cout dan >> pada cin Dengan overloading ini dimungkinkan menuliskan statement: cin >> object; cout << object;

17 Operator overloading dengan friend
Bentuk umum dari overloading terhadap operator << adalah: ostream& operator << (ostream& output, object) { // tubuh fungsi return (output); } Bentuk umum dari overloading terhadap operator >> adalah: istream& operator >> (istream& input, object &) { return (input);

18 Contoh Program // program C++ operator >> dan << dengan friend #include <constream.h> #include <string.h> class Buku { private: int Nomor; char Judul[30]; char Pengarang[10]; public: Buku(); friend ostream& operator << (ostream& o, Buku b1); friend istream& operator >> (istream& i, Buku &b1); };

19 // definisi fungsi Buku::Buku() { Nomor = 0; strcpy(Judul, ""); strcpy (Pengarang, ""); } //definisi fungsi friend ostream& operator<<(ostream& out, Buku b1){ out << "Nomor buku: " << b1.Nomor << endl; out << "Judul buku: " << b1.Judul << endl; out << "Pengarang: " << b1.Pengarang << endl; return (out); istream& operator>> (istream& in, Buku& b1){ cout << "inputkan Nomor buku "; in >> b1.Nomor; cout << "inputkan Judul buku ";

20 in >> b1.Judul; cout << "inputkan Pengarang "; in >> b1.Pengarang; return (in); } void main() { Buku buku_C; cin >> buku_C; cout << buku_C;


Download ppt "Operator overloading."

Presentasi serupa


Iklan oleh Google