Apr
16
2014
0

Object Oriented Program – TM04

TM 04 : Class Time

a. Desain klas dengan nama Time yang mempunyai tiga data anggota yaitu hour, minute dan second dengan level akses adalah private. Selain fungsi anggota baku constructor dan destructor, class Time juga mempunyai tiga fungsi anggota lain yang prototipenya adalah sebagai berikut: void setData() , fungsi konstant void getData() dan fungsi konstant void printData(). Tugas ketiga fungsi terakhir ini adalah sebagai berikut: fungsi setData() untuk memberi nilai hour, minute dan second , fungsi getData() untuk mengambil nilai data yang diisi oleh fungsi setData(), sedangkan fungsi printData() untukmencetak ketiga data anggota tersebut.

b. Definisikan atau implementasikan constructor dan destructor di dalam klas sedangkan fungsi setData() , getData() dan printData() di luar klas Time. Untuk definisi fungsi yang ada di luar class jangan lupa untuk menggunakan scope resolution operator.

c. Berikan alasan mengapa fungsi getData() dan printData() perlu dibuat konstant?

d. Selanjutnya tulis fungsi main() untuk mengetes klas yang Anda desain.

=====Jawab=====

#include <iostream>
#include <iomanip>
using namespace std;

class Time{
private : int hour,minute,second;
public :
	void setData(int ,int ,int );
	int getData()const;
	void printData()const;
	Time(){
	hour = minute = second =0;
	}
	~Time(){}
};

void Time::setData(int h,int m,int s){
	hour = h;
	minute = m;
	second = s;
}

int Time::getData()const{
	return hour * 3600 + minute * 60 
		+ second;
}

void Time::printData()const{

	cout << setw(2) << setfill('0') << right 
		<< hour << ":" << setw(2) << setfill('0') <<
		minute 
		<< ":" << second;
}

//KENAPA GETDATA DAN PRINTDATA HARUS CONST?? KARENA UNTUK MENGHITUNG WAKTU, ADA RUMUS KONSTAN, YAKNI :
//1JAM=3600DETIK, 
//1MENIT=60DETIK

void main(){
	Time obj;
	int h,m,s;
	do{
		cout <> h;
		cin.sync();cin.clear();
	}while(h  23);

	do{
		cout <> m;
		cin.sync();cin.clear();
	}while(m  59);

	do{
		cout <> s;
		cin.sync();cin.clear();
	}while(s  59);

	obj.setData(h,m,s);
	obj.printData();
	cin.get();
}
Written by gotomarch in: Uncategorized |
Apr
16
2014
0

Object Oriented Program – TM03

TM 03 : ADT Array dan Struct

Array adalah suatu ADT. Seperti halnya ADT lain, array mempunyai data anggota dan operasi, metode atau fungsi anggota. Elemen array diakses berdasarkan posisinya di dalam array relatif terhadap elemen pertama. Operasi utama array adalah store dan retrieve. Operassi store untuk menyimpan elemen e di indeks i array A[] adalah A[i] = e sedangkan operasi retrieve untuk mengambil suatu elemen dari array A[] di indeks i dan disimpan di elemen e adalah e = A[i].

a. Desain class Array berdasarkan uraian ADT Array di atas dengan ketentuan level akses data anggota adalah private dan level akses fungsi anggota adalah public. Selain itu jangan lupa untuk menambahkan constructor dan destructor pada class tersebut. Dalam desain ini, semua fungsi anggota kecuali constructor dan destructor, harus berbentuk prototype.

const int MAX =10;

class Array {

private :

int A[MAX};

int i, e;

public :

Array() { for ( i =0; i < MAX; i++) A[i] = 0; }

~Array();

void store( int, int );

int retrieve (int, int);

};

b. Selanjutnya definisikan semua fungsi anggota di luar class Array. Ingat jangan lupa untuk menggunakan scope resolution operator ::

void Array :: store (int i, int e) { A[i] = e; }

int Array :: retrieve (int i, int e) { e = A[i]; }

c. Terakhir, tulis fungsi main() sebagai driver untuk menguji desain kamu.

void main() {

int e;

Array a;

a.store(1,11);

a.store(2,22);

a.store(3,33);

cout << endl << a,retrieve (3,e);

cout << endi << a.retrieve(2,e);

cout << endl <. Bentuk umumnya adalah sebagai berikut:

.

®

Operasi utama di struct adalah store(e) dan retrieve(). Operassi store(e) untuk menyimpan elemen e di field i struct s adalah s.i = e sedangkan operasi retrieve() untuk mengambil suatu elemen dari struct s di field i dan disimpan di elemen e adalah e = s.i.

a. Diketahui struktur dtMhs dengan tiga data anggota : nim, nama dan IPK serta fungsi anggota store() dan retrieve(). Desain class dtMhs berdasarkan uraian di atas dengan ketentuan level akses data anggota adalah private dan level akses fungsi anggota adalah public. Selain itu jangan lupa untuk menambahkan constructor dan destructor pada class tersebut. Dalam desain ini, semua fungsi anggota kecuali constructor dan destructor, harus berbentuk prototype.

b. Selanjutnya definisikan semua fungsi anggota di luar class Struct Ingat jangan lupa untuk menggunakan scope resolution operator ::

c. Terakhir, tulis fungsi main() sebagai driver untuk menguji desain kamu.

=====Jawab=====

#include <iostream>
using namespace std;

class dtMhs
{
private:
	struct
	{
		char nim[15];
		char nama[30];
		float IPK;
	}data;
	int i;
public :
	dtMhs()
	{
		strcpy(data.nim,"");
		strcpy(data.nama,"");
		data.IPK = 0;
	}
	~dtMhs()
	{
		strcpy(data.nim,"");
		strcpy(data.nama,"");
		data.IPK = 0;
	}
	void storenim(char*);
	void storenama(char*);
	void storeIPK(float);
	char* retrievenim();
	char* retrievenama();
	float retrieveIPK();
};

void dtMhs :: storenim(char* ni)
{
	strcpy(data.nim,ni);
}
void dtMhs :: storenama(char* na)
{
	strcpy(data.nama,na);
}
void dtMhs :: storeIPK(float ip)
{
	data.IPK=ip;
}
char* dtMhs:: retrievenim()
{
	return data.nim;
}
char* dtMhs:: retrievenama()
{
	return data.nama;
}
float dtMhs:: retrieveIPK()
{
	return data.IPK;
}

void main()
{
	dtMhs obj1;
	obj1.storenim("1701290425");
	obj1.storenama("Kenneth");
	obj1.storeIPK(3.5);
	cout<<"Mahasiswa 1 :"<<endl;
	cout<<"NIM  : "<< obj1.retrievenim()<<endl;
	cout<<"Nama : "<< obj1.retrievenama()<<endl;
	cout<<"IPK  : "<< obj1.retrieveIPK()<<endl<<endl;

	dtMhs obj2;
	obj2.storenim("1701290426");
	obj2.storenama("TEST");
	obj2.storeIPK(2.7);
	cout<<"Mahasiswa 2 :"<<endl;
	cout<<"NIM  : "<< obj2.retrievenim()<<endl;
	cout<<"Nama : "<< obj2.retrievenama()<<endl;
	cout<<"IPK  : "<< obj2.retrieveIPK()<<endl;
	cin.get();
}
Written by gotomarch in: Uncategorized |

Powered by WordPress. Theme: TheBuckmaker. Zinsen, Streaming Audio