Created
May 21, 2017 07:54
-
-
Save omayib/03c52443646ab2ea6eb1d686cd48788f to your computer and use it in GitHub Desktop.
Pemahaman tentang OOP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
21 May 2017 | |
created by Arif Akbarul Huda. | |
PENGANTAR | |
Pak Amir adalah orang terpandang didesanya yang memiliki hobi membaca. | |
Dirumahnya tersimpan ratusan koleksi buku. | |
Supaya bermanfaat, Pak Amir membuat perpustakaan pribadi dan warga sekitar boleh meminjam. | |
Perpustakaan tersebut disambut sangat baik oleh warga sekitar. | |
Untuk mengelola administrasi peminjaman, Pak Amir mempekerjakan dua orang anak buah yaitu Wildan dan Tuti. | |
Wildan bertanggung jawab mengelola pendaftaran dan memverifikasi anggota perpustakaan. | |
Sedangkan Tuti berperan sebagai manager transaksi peminjaman yang tugasnya adalah mencatat setiap transaksi peminjaman. | |
Supaya diakui sebagai anggota perpustakaan, seseorang harus mendaftarkan diri kepada Wildan dengan mencantumkan nama dan nomor telepon. | |
Wildan berhak melakukan verifikasi setiap pengunjung perpustakaan, memastikan bahwa orang tersebut sudah terdaftar sebagai anggota. | |
Setelah resmi menjadi anggota, seseorang boleh meminjam kapanpun dengan syarat hanya boleh meminjam satu buah buku dalam sekali transaksi. | |
Caranya, orang tersebut harus datang ke Tuti dengan membawa satu buah buku yang akan dipinjam. | |
Selanjutnya Tuti akan memastikan bahwa orang tersebut tidak sedang meminjam buku lain. | |
Kalau diketauhi ternyata masih memiliki pinjaman, maka seseorang tidak diperbolehkan meminjam buku lagi. | |
Sebaliknya, jika statusnya tidak sedang meminjam maka Tuti akan mencatat dalam buku transaksi peminjaman. | |
Dalam sebuah sistem, seorang pengunjung direpresentasikan dengan `Person`. | |
Peran Wildan direpresentasikan dengan `AuthManager` sedangkan peran Tuti direpresentasikan dengan `LoanManager`. | |
*/ | |
#include <iostream> | |
#include <vector> | |
#include <algorithm> | |
#include <map> | |
using namespace std; | |
class Person{ | |
private: | |
public: | |
Person(string name, string phoneNumber){ | |
}; | |
string getName(){ | |
}; | |
string getPhoneNumber(){ | |
} | |
void setAsVerifiedPerson(){ | |
}; | |
bool isVerified(){ | |
}; | |
bool operator <(const Person& rhs) const{ | |
return this->name < rhs.name; | |
}; | |
}; | |
class AuthManager { | |
private: | |
public: | |
void registering(Person person){ | |
}; | |
void verifiyingPerson(Person& personTobeVerify){ | |
}; | |
bool isRegistered(Person person){ | |
}; | |
}; | |
class Book { | |
private: | |
public: | |
Book(string title, string author){ | |
}; | |
string getTitle(){ | |
} | |
string getAuthor(){ | |
} | |
bool operator <(const Book& rhs) const{ | |
return this->title < rhs.title; | |
} | |
}; | |
class LoanManager{ | |
private: | |
map<Person,Book> loanHistory; | |
public: | |
bool borrowed(Person person, Book book){ | |
}; | |
bool isAllowed(Person person){ | |
}; | |
}; | |
int main(){ | |
//======================================================= | |
// BAGIAN 1 : POIN 30 | |
//======================================================= | |
cout<<"===================BAGIAN 1 (30)==========================="<<endl; | |
AuthManager authManager; | |
LoanManager loanManager; | |
Person parjono = Person("Parjono","08245108573"); | |
Person sulaiman = Person("Sulaiman","085647284634"); | |
Person triyono = Person("Triyono","081723957392"); | |
Person udin = Person("Udin","089923833392"); | |
cout<<"person 1 : "<< parjono.getName()<<" , "<< parjono.getPhoneNumber() <<endl;//result : parjono | |
cout<<"person 2 : "<< sulaiman.getName()<<" , "<< sulaiman.getPhoneNumber() <<endl;//result : sulaiman | |
cout<<"person 3 : "<< triyono.getName()<<" , "<< triyono.getPhoneNumber() <<endl;//result : triyono | |
cout<<"person 4 : "<< udin.getName()<<" , "<< udin.getPhoneNumber() <<endl;//result : udin | |
cout<<"----------------------------------------------"<<endl; | |
Book pemrogramanAndroid = Book("Pemrograman Android","Gunawan S."); | |
Book dataMining = Book("Data Mining","Akbarul Huda"); | |
Book pengantarSistemCerdas = Book("Pengantar Sistem Cerdas","Arif Akbarul"); | |
Book robotikaMenggunakanArduino = Book("Robitika Menggunakan Arduino","Nabila Hafsya Z."); | |
Book mahirPemrogramanWeb = Book("Mahir Pemrograman Web","Hafsya Z."); | |
cout<<"book 1: "<<pemrogramanAndroid.getTitle()<<" , "<<pemrogramanAndroid.getAuthor()<<endl; | |
cout<<"book 2: "<<dataMining.getTitle()<<" , "<<dataMining.getAuthor()<<endl; | |
cout<<"book 3: "<<pengantarSistemCerdas.getTitle()<<" , "<<pengantarSistemCerdas.getAuthor()<<endl; | |
cout<<"book 4: "<<robotikaMenggunakanArduino.getTitle()<<" , "<<robotikaMenggunakanArduino.getAuthor()<<endl; | |
cout<<"book 5: "<<mahirPemrogramanWeb.getTitle()<<" , "<<mahirPemrogramanWeb.getAuthor()<<endl; | |
cout<<"----------------------------------------------"<<endl; | |
/* | |
======================================================= | |
BAGIAN 2 : POIN 30 | |
Keterangan nilai status peminjaman : | |
true(1) = valid/verified | |
false(0) = not valied/not verified | |
======================================================= | |
*/ | |
cout<<"===================BAGIAN 2 (30)==========================="<<endl; | |
cout<<"status verifikasi "<<parjono.getName()<<" : "<<parjono.isVerified()<<endl;//result:0 | |
cout<<"status verifikasi "<<sulaiman.getName()<<" : "<<sulaiman.isVerified()<<endl;//result:0 | |
cout<<"status verifikasi "<<triyono.getName()<<" : "<<triyono.isVerified()<<endl;//result:0 | |
cout<<"status verifikasi "<<udin.getName()<<" : "<<udin.isVerified()<<endl;//result:0 | |
cout<<"----------------------------------------------"<<endl; | |
//parjono, sulaiman, dan triyono mendaftarkan diri sebagai anggota | |
authManager.registering(parjono); | |
authManager.registering(sulaiman); | |
authManager.registering(triyono); | |
/* | |
beberapa hari kemudian parjono ingin meminjam buku. Wildan harus memastikan | |
bahwa parjono dan sulaiman adalah benar-benar anggota perpustakaan. | |
*/ | |
authManager.verifiyingPerson(parjono); | |
authManager.verifiyingPerson(sulaiman); | |
authManager.verifiyingPerson(udin); | |
cout<<"status verifikasi "<<parjono.getName()<<" : "<<parjono.isVerified()<<endl;//result:1 | |
cout<<"status verifikasi "<<sulaiman.getName()<<" : "<<sulaiman.isVerified()<<endl;//result:1 | |
cout<<"status verifikasi "<<triyono.getName()<<" : "<<triyono.isVerified()<<endl;//result:0 | |
cout<<"status verifikasi "<<udin.getName()<<" : "<<udin.isVerified()<<endl;//result:0 | |
cout<<"----------------------------------------------"<<endl; | |
/* | |
======================================================= | |
BAGIAN 3 : POIN 40 | |
Keterangan nilai status peminjaman : | |
true(1) = berhasil | |
false(0) = gagal | |
======================================================= | |
*/ | |
cout<<"===================BAGIAN 3 (40)==========================="<<endl; | |
//parjono meminjam buku Pemrograman android. | |
bool result1 = loanManager.borrowed(parjono,pemrogramanAndroid); | |
cout<<"status transaksi 1 peminjaman "<<result1<<endl;//result:1 | |
//beberapa hari kemudian parjono pinjam buku yang lain, namun buku yg pertama belum dikembalikan. | |
bool result2 = loanManager.borrowed(parjono,dataMining); | |
cout<<"status transaksi 2 peminjaman "<< result2 <<endl;//result:0 | |
//pada hari yg sama, Sulaiman juga meminjam buku | |
bool result3 = loanManager.borrowed(sulaiman,mahirPemrogramanWeb); | |
cout<<"status transaksi 3 peminjaman "<< result3 <<endl;//result:1 | |
//tiba-tiba ada Triyono yg terburu2 juga ingin meminjam buku, padahal belum diverifikasi oleh Wildan | |
bool result4 = loanManager.borrowed(triyono,pengantarSistemCerdas); | |
cout<<"status transaksi 4 peminjaman "<< result4 <<endl;//result:0 | |
//begitu juga dengan Udin, belum resmi menjadi anggota, tapi langsung ingin pinjam buku | |
bool result5 = loanManager.borrowed(udin,pengantarSistemCerdas); | |
cout<<"status transaksi 5 peminjaman "<< result5 <<endl;//result:0 | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment