Operator Overloading Pertemuan 20 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.

Slides:



Advertisements
Presentasi serupa
Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Advertisements

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.
10 KELAS class nama_class struct nama_struct
Algoritma Searching Pertemuan 13
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.
STRUKTUR DATA STRUCT DAN POINTER
Pointer Dr. Lily Wulandari.
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
1 Pertemuan 14 Operator Overloading Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
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.
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.
SORTING Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
OPERASI JUMP DAN EXCEPTION HANDLING
File Matakuliah: XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan: 9 Tahun: 2008 Versi: 1/0.
Polymorphism Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 5 Tahun : 2008 Versi : 1/0.
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.
Polymorphism Pertemuan 9 Matakuliah: M0864/Programming I Tahun: 2009.
Pertemuan 10 Constructor dan Destructor
Matakuliah : T0456 / Algoritma dan Metode Object
Algoritma sorting dasar (lanjutan) Pertemuan 11
1 Pertemuan 7 Review 1 – 6 Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Fungsi Logaritma Pertemuan 12
1 Pertemuan 16 Multiple Inheritance Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
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.
// Contoh program c++ dengan fungsi template
Pengertian Algoritma Pemrograman Pertemuan 1
Matakuliah : H0112 – Pemrograman Bahasa Tingkat Tinggi
Inheritance Pertemuan 8
Polymorphism Pertemuan 23-24
Constructor dan Destructor Pertemuan 17
Inheritance Pertemuan 21
Operator overloading.
Class dan Objek Lanjutan Pertemuan 18
Pertemuan 9 Pemrograman Berbasikan Objek
Sumber : repository.binus.ac.id/content/T0454/T ppt
Struct.
Pemrograman Berorientsi Objek Pertemuan 15
METODE (2) SUSSI.
Regresi Dalam Lambang Matriks Pertemuan 09
KRITERIA DESAIN, STANDAR DESAIN, DAN METODE ANALISIS PERTEMUAN 6
Structure Data - Struct Pertemuan 8
Operator dan Operasi Input Output pada C++ Pertemuan 11
Matakuliah : M0864/Programming I
Inheritance lanjutan Pertemuan 22
Generic Data Type Pertemuan 25
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Matakuliah : M0074/PROGRAMMING II Tahun : 2005 Versi : 1/0
KAPASITAS PENAMPANG MENAHAN GAYA LINTANG Pertemuan 13
Prategang Pada Struktur Statis Tak Tentu Pertemuan 13
(Object Oriented Programming)
Transcript presentasi:

Operator Overloading Pertemuan 20 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007

Bina Nusantara Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menerapkan operator overloading pada pembuatan class. Buku Referensi:  C++ - How to program, Deitel & Deitel, Prentice Hall, Websites :  3

Bina Nusantara Outline Materi Manfaat overloading operator Operator yang dapat dioverloading Operator yang tidak dapat dioverloading Overloading operator dengan friend Contoh program overloading 4

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

Bina Nusantara 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 )

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

Bina Nusantara OperatorKegunaanContoh.Operator anggota struct atau classCin.getline().*Operator pointer ke anggotaObject.*anggota : Operator lingkupClass::anggota ? :Ungkapan kondisiC=(a>b)?a:b Operator yang tidak dapat dioverloading

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

Bina Nusantara 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);

Bina Nusantara 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;

Bina Nusantara 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); }

Bina Nusantara 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); }

Bina Nusantara 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; }

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

Bina Nusantara 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

Bina Nusantara 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); };

Bina Nusantara // 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 ";

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

Bina Nusantara 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

Bina Nusantara 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 ); };

Bina Nusantara // 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; } else if ( endOfMonth(day) ) { day = 1; ++month; } else ++day; }

Bina Nusantara 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 return 0; } const Date operator+= ( int addays) { for (int I=0; I < addays; I++) helpIncrement(); return *this; }

Bina Nusantara 24 Diskusi dan Tanya Jawab Latihan soal