1 Pertemuan 14 Operator Overloading Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.

Slides:



Advertisements
Presentasi serupa
Pemrograman Berorientasi Objek
Advertisements

Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Fungsi Friend Dalam bahasa C++ kita dapat membuat suatu fungsi yang berada di luar kelas (class) dan dapat meng-ak-ses bagian private suatu kelas. Fungsi.
Overloading Terhadap Operator
OPERATOR OVERLOADING The ability to provide the operators with a special meaning for a data type but its original meaning is not lost. Example: Operator.
Class.
POINTER (VAR.PENUNJUK)
#include //bagian modul int hitung(x,y) { return(x+y); } //bagian utama main() { int jumlah,a,b; a=8; b=2; jumlah=hitung(a,b); cout
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Operator Overloading Pertemuan 20 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Object Oriented Programming Bag.2 Pertemuan 24 Dasar Pemrograman Renni Angreni, S.Kom.
1 Pertemuan 4 ELEMEN DASAR C++ Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Friend. Adalah fungsi bukan anggota kelas yg dapat mengakses anggota kelas. Secara umum friend berguna jika terdapat suatu operasi yg hendak mengakses.
1 Pertemuan 6 Encapsulation Lanjutan Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
STREAM INPUT/OUPUT Pertemuan 4 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
1 Pertemuan 5 STREAM INPUT/OUPUT Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
Pertemuan Operand dan Operator
1 Pertemuan 1 Algoritma Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
1 Pertemuan 17 Polymorphism Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
1 Pertemuan 9 Inheritance Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
1 Pertemuan 2 Function & Pointer Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
OPERASI JUMP DAN EXCEPTION HANDLING
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Nested Object. Friend Keyword. Pointer This. Operator Overloading.
Fungsi, Array dan String
1 Pertemuan 8 Structure Data Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
METHODS Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
1 Pertemuan 18 Template Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Struktur Kendali Pengulangan Pertemuan 6 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
1 Pertemuan 5 Encapsulation Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Pertemuan 10 Constructor dan Destructor
Algoritma sorting dasar (lanjutan) Pertemuan 11
Pertemuan 5 Balok Keran dan Balok Konsol
1 Pertemuan 7 Review 1 – 6 Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Matakuliah : R0022/Pengantar Arsitektur Tahun : Sept 2005 Versi : 1/1
1 Pertemuan 16 Multiple Inheritance Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
1 Pertemuan 8 Array & Pointer of Class Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
1 Pertemuan 12 Template Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Template 1. Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat merancang sebuah program dengan menggunakan template 2.
Matakuliah : R0262/Matematika Tahun : September 2005 Versi : 1/1
4. File Data Structure + Algorithm = Program UNIV. INDONUSA Esa Unggul.
File & Stream - Yessy Asri
Matakuliah : H0112 – Pemrograman Bahasa Tingkat Tinggi
Matakuliah : K0074/Kalkulus III Tahun : 2005 Versi : 1/0
Pertemuan 3 Sistem I/O C++
Polymorphism Pertemuan 23-24
File & Stream - Yessy Asri
Constructor dan Destructor Pertemuan 17
Inheritance Pertemuan 21
Operator overloading.
Pertemuan Operasi Store - Compute
Class dan Objek Lanjutan Pertemuan 18
Pertemuan 9 Pemrograman Berbasikan Objek
Sumber : repository.binus.ac.id/content/T0454/T ppt
Pemrograman Berorientsi Objek Pertemuan 15
Structure Data - Struct Pertemuan 8
Operator dan Operasi Input Output pada C++ Pertemuan 11
Inheritance lanjutan Pertemuan 22
Class.
Matakuliah : I0014 / Biostatistika Tahun : 2005 Versi : V1 / R1
Generic Data Type Pertemuan 25
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Matakuliah : M0074/PROGRAMMING II Tahun : 2005 Versi : 1/0
Materi 9 Pembahasan CLASS Dalam C++
Teknik Pemrog. Terstruktur 2
File & Stream - Yessy Asri
Transcript presentasi:

1 Pertemuan 14 Operator Overloading Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5

2 Learning Outcomes Pada akhir pertemuan ini, diharapkan : Mahasiswa dapat Mendemonstrasikan operator overloading sebagai pengganti member function

3 Outline Materi Operator Overloading Overloading operator biner Operator overloading dengan friend Overloading operator increment dan decrement

4 Operator Overloading Konsep overloading terhadap operator didasarkan pada operasi yang terjadi sehari-hari misalkan operator + dapat digunakan untuk menjumlahkan bilangan bulat ataupun bilangan pecahan

5 Operator Overloading Sehingga dengan menggunakan operator overloading ini dimungkinkan terjadi operasi sbb: VectorA + VectorB Dimana VectorA dan VectorB adalah object Vector. Syntax operator overloading: Tipe operator simbol_operator ( argument )

6 Operator yang dapat dioverloading +-*/%^& |~!=><+= -=*=/=%=^=&=|= >=<=&&||==!=<<= >>=<<>>++--->*, ->[]()newNew[]deleteDelete[]

7 Operato r KegunaanContoh. Operator anggota struct atau class Cin.getline().* Operator pointer ke anggotaObject.*anggot a : Operator lingkupClass::anggota ? : Ungkapan kondisiC=(a>b)?a:b Operator yang tidak dapat dioverloading

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

9 Contoh Program // program C++ dengan fungsi friend #include class Complex { private: double r, i; public: Complex() {r = 0; i = 0;} Complex(double x){ r = x; i=0; } Complex(double a, double b) {this->r = a; this->i = b;} Complex(Complex &c) {r = c.r; i = c.i; } void setReal(double x) { r=x;} void setIm(double y) { i=y;} double getReal(){ return r; } double getIm() { return i;} Complex operator +(Complex c1); Complex operator -(Complex c1);

10 Complex operator *(Complex c1); Complex operator *(int A1); Complex operator *(double A1); friend istream& operator >> (istream& in, Complex& c1); friend ostream& operator << (ostream& out, Complex c1); }; void main() { clrscr(); Complex A(2,3), B, C; cout > B; cout << "Bil komplek I: "; cout << A << endl; cout << "Bil komplek II: "; cout << B << endl; C = B+A; cout << "Bil komplek III: "; cout << C << endl; C = B-A;

11 cout << "Bil komplek IV: "; cout << C << endl; C = B*A; cout << "Bil komplek V: "; cout << C << endl; cout << "Bil komplek VI: "; cout << C*2 << endl; cout << "Bil komplek VI: "; cout << C*2.5 << endl; } Complex Complex::operator +(Complex c1) { this->r += c1.r; this->i += c1.i; return (*this); } Complex Complex::operator -(Complex c1) { this->r -= c1.r; this->i -= c1.i; return (*this); }

12 Complex Complex::operator *(Complex c1) { Complex temp; temp.r = r*c1.r-i*c1.i; temp.i = r*c1.i+c1.r*i; return(temp); } Complex Complex::operator *(int c1){ r = r*c1; i = c1*i; return(*this); } Complex Complex::operator *(double c1){ r = c1*r; i = c1*i; return(*this); }

13 istream& operator >> (istream& in, Complex& c1) { cout > c1.r; cout > c1.i; return in; } ostream& operator << (ostream& out, Complex c1) { if (c1.i!=0.0 && c1.r!=0.0) out << c1.r <<" + "<<c1.i<<"i"; else if (c1.i ! = 0.0) out << c1.i; else out << c1.r <<"i"; return out; }

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

15 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 &) { // tubuh fungsi return (input); } Operator overloading dengan friend

16 Contoh Program // program C++ operator >> dan << dengan friend #include 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); };

17 // 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 ";

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

19 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); Overloading operator increment dan decrement

20 Contoh Program // Program c++ dengan operator decrement &increment #include 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 ); };

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

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

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

24 Penutup Untuk dapat menggunakan operator overloading sebagai pengganti member function, mahasiswa membahas tugas pertemuan 14 no 1, 2, dan 3. (diskusikan dalam kelompok)