DAN PEMROGRAMAN II
: 1,5
: Times New Roman
: 12
: Top 3, Left 4, Right 3, Bottom 3
: A4
Nilai 20
Nilai 10
Nilai 40
Nilai 15
Nilai 5
Nilai 10
100
: 15 %
: 30 %
: 20 %
: 35 %
100 %
100 %
MODUL I
DASAR PEMROGRAMAN BERORIENTASI OBJEK
I. TUJUAN
Kelas (Class) terdiri dari model objek yang memiliki atribut (data
members) dan Behaviors (member functions), dan Member functions yaitu
Methods yang dipanggil sebagai response terhadap pesan. Kelas didefinisikan
dengan keyword class.
Mode Akses akses yang ada pada kelas ada tiga yaitu private yang
merupakan default mode akses dan dapat diakses oleh member functions, public
yang dapat diakses oleh setiap Accessible fungsi dalam program, dan protected
yang biasanya digunakan untuk pewarisan .
Fungsi Constructor merupakan member function khusus yang
menginisialisasi data members dan memiliki nama yang sama dengan nama kelas.
Fungsi Constructor dipanggil saat membuat objek dari kelas dan tidak memiliki
tipe balikan.
Member functions yang didefinisikan di luar kelas dilakukan dengan
menggunakan binary scope resolution operator (::) yang berfungsi untuk
mengikat nama fungsi ke nama kelas dan mengindentifikasi fungsi dari suatu
kelas tertentu.
Berikut ini merupakan format dari member functions.
NilaiBalikan NamaKelas::NamaFungsi( ){
void Sepeda::mengubahGir(int g)
{
gir = g;
}
void Sepeda::mengerem()
{
cout<< "Kecepatan dan putaran berkurang ..." ;
}
void Sepeda::tampilInfo()
{
cout<< "Gir : " << gir << endl << "Kecepatan : "
<<kecepatan<< endl << "Putaran
: " << putaran << endl;
}
int main()
{
Sepeda sepeda1(10,60,3),
sepeda2(4,12,1),
sepeda3(35,80,5);
sepeda1.tampilInfo();
sepeda2.tampilInfo();
sepeda3.tampilInfo();
getch();
return 0;
}
int s )
0;
: 0;
: 0;
{
cout<< setfill( '0' ) << setw( 2 ) << hour << ":"
<<setw( 2 ) << minute << ":"
<<setw( 2 ) << second;
}
void Time::printStandard()
{
cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 )
<< ":" <<setfill( '0' ) << setw( 2 ) << minute
<< ":" <<setw( 2 ) << second
<<( hour< 12 ? " AM" : " PM" );
}
int main()
{
Time t;
cout<< "The initial universal time is ";
t.printUniversal();
cout<< "\nThe initial standard time is ";
t.printStandard();
t.setTime( 13, 27, 6 );
cout<< "\n\nUniversal time after setTime is ";
t.printUniversal();
cout<< "\nStandard time after setTime is ";
t.printStandard();
t.setTime( 99, 99, 99 );
cout<< "\n\nAfter attempting invalid settings:"
<< "\nUniversal time: ";
t.printUniversal();
cout<< "\nStandard time: ";
t.printStandard();
cout<< endl;
getch();
return 0;
}
3. Buatlah sebuah program untuk menghitung volume dan keliling sebuah kotak,
dengan rumus V = panjang x lebar x tinggi, dan K = (2 x panjang) + (2 x
lebar) + (2 x tinggi). Program tersebut harus memiliki setidaknya 1 (satu) buah
Class dan 1 (satu) buah Constructor.
MODUL II
PEWARISAN
I. TUJUAN
Pewarisan ada dua jenis yaitu pewarisan tunggal dan pewarisan jamak. Pada
protected access, protected members dapat diakses oleh member kelas dasar, friend kelas
dasar, member kelas turunan, dan friend kelas turunan. Kelas turunan dapat
merujuk/mengakses langsung public dan protected data member kelas induk dengan
menggunakan nama atribut yang yang diakses.
III. LANGKAH KERJA
2. Buatlah program untuk menghitung luas dan keliling persegi panjang serta
volume dan keliling kotak. Program tersebut harus menerapkan prinsip
pewarisan!
MODUL III
POLIMORFISME
I. TUJUAN
}
float Lingkaran:: cariLuas()
{
cout << "Luas lingkaran : " << 3.4 * jejari * jejari << endl;
}
Segitiga::Segitiga(float a, float t)
{
alas = a;
tinggi = t;
}
float Segitiga:: cariLuas()
{
cout << "Luas Segitiga : " << 0.5 * alas * tinggi << endl;
}
MAbstrak.cpp
#include "Bentuk2D.h"
#include <iostream.h>
#include <stdlib.h>
int main() {
Bentuk2D* b2d;
bool loop = true;
int pilihan;
do {
cout <<"1: Segiempat, 2: Lingkaran, 3: Segitiga >> ";
cin >> pilihan;
} while ( pilihan < 1 || pilihan > 3 );
switch ( pilihan ) {
case 1: b2d = new Segiempat(4.0, 5.0); break;
case 2: b2d = new Lingkaran (7.0); break;
case 3: b2d = new Segitiga (2.0, 10.0); break;
case 4: loop = false;
}
b2d->cariLuas();
delete b2d;
return 0;
}
class Shape {
public:
virtual double area() const { return 0.0; }
virtual double volume() const { return 0.0; }
virtual void printShapeName() const = 0;
virtual void print() const = 0;
};
#endif
point1.h
#ifndef POINT1_H
#define POINT1_H
#include <iostream>
#include "shape.h"
class Point : public Shape {
public:
Point( int = 0, int = 0 );
void setPoint( int, int );
int getX() const { return x; }
int getY() const { return y; }
virtual void printShapeName() const { cout << "Point: "; }
virtual void print() const;
private:
int x, y;
};
#endif
point1.cpp
#include "point1.h"
Point::Point( int a, int b ) { setPoint( a, b ); }
void Point::setPoint( int a, int b )
{
x = a;
y = b;
}
void Point::print() const
{ cout<< '[' << x << ", " << y << ']'; }
circle1.h
#ifndef CIRCLE1_H
#define CIRCLE1_H
#include "point1.h"
class Circle : public Point {
public:
Circle( double r = 0.0, int x = 0, int y = 0 );
void setRadius( double );
double getRadius() const;
virtual double area() const;
virtual void printShapeName() const { cout << "Circle: "; }
virtual void print() const;
private:
double radius;
circle1.cpp
#include <iostream>
#include "circle1.h"
Circle::Circle( double r, int a, int b )
: Point( a, b )
{ setRadius( r ); }
void Circle::setRadius( double r ) { radius = r > 0 ? r : 0; }
double Circle::getRadius() const { return radius; }
double Circle::area() const
{ return 3.14159 * radius * radius; }
void Circle::print() const
{
Point::print();
cout<< "; Radius = " << radius;
}
main.cpp
#include <iostream>
#include <stdlib.h>
#include
#include
#include
#include
"shape.h"
"point1.h"
"circle1.h"
"cylindr1.h"
// create a Point
// create a Circle
point.printShapeName();
point.print();
cout<< '\n';
// static binding
// static binding
circle.printShapeName();
circle.print();
cout<< '\n';
// static binding
// static binding
Shape *arrayOfShapes[ 2 ];
arrayOfShapes[ 0 ] = &point;
arrayOfShapes[ 1 ] = &circle;
17
MODUL IV
RELASI KELAS
I. TUJUAN
18
{
private:
float sbX, sbY;
public:
Titik()
{
sbX = sbY = 0.0f;
}
Titik(float x, float y)
{
sbX = x; sbY = y;
}
};
void posisiTitik()
{
cout<< "[" << sbX << ", " << sbY << "]" << endl;
}
class Lingkaran
{
private:
float jejari;
Titik titikPusat;
public:
Lingkaran(float j)
{
jejari = j;
}
Lingkaran(float x, float y, float j):titikPusat(x,y)
{
jejari = j;
}
void cetakLingkaran()
{
};
int main()
{
Lingkaran L1(3.0);
L1.cetakLingkaran();
L2.cetakLingkaran();
}
19
};
void cetakMK()
{
cout<< kodeMK << " : " << namaMK << "
<<endl;
}
class Dosen
{
private:
char* NPP; char*
Nama;
MataKuliah* mk;
int indeks;
public:
Dosen(char* noPeg, char* nm)
{
NPP = noPeg;
Nama = nm;
indeks = 0;
}
void tambahMK (MataKuliah matakuliah)
{
mk[indeks] = matakuliah;
indeks++;
}
void cetakInformasi()
{
cout<< Nama << " Mengajar : " << endl;
for (int i=0; i<5; i++)
mk[i].cetakMK();
}
};
20
int main()
{
Dosen dsn("P001", "Steve Owen");
MataKuliah mk1("MK001", "PBO", 3);
MataKuliah mk2("MK002", "Struktur Data", 3);
MataKuliah mk3("MK003", "R Perangkat Lunak", 3);
MataKuliah mk4("MK004", "Analisis Algoritma", 2);
MataKuliah mk5("MK005", "Sistem Operasi", 3);
dsn.tambahMK(mk1);
dsn.tambahMK(mk2);
dsn.tambahMK(mk3);
dsn.tambahMK(mk4);
dsn.tambahMK(mk5);
dsn.cetakInformasi();
}
21
MODUL V
OPERATOR OVERLOADING DAN EXCEPTION HANDLING
I. TUJUAN
Seperti bahasa tingkat tinggi yang lain, C++ memiliki beberapa operator +, -, \, *,
<<, >>, &, [], =, dll. Operator ini telah didefinisikan (pre-defined) dan digunakan untuk
tipe tertentu. Misal: operator + hanya dapat digunakan untuk tipe dasar seperti integer,
float, dll. Kadang-kadang diperlukan untuk meredefinisi operator ini untuk digunakan
22
untuk tipe bentukan. Misalnya Kelas Complex a dan b, apakah bisa dilakukan a+b?
Manipulasi bilangan kompleks lebih mudah apabila dapat memperlakukannya seperti
pada tipe dasar. Sehingga dapat dilakukan, hal-hal seperti
Complex a(2,4);
Complex b(4,5);
. . .
Complex c = a + b;
Bukannya
Complex a(2,4);
Complex b(4,5);
. . .
Complex c = a.tambah(b);
Operator yang digunakan pada kelas dalam C++ dinyatakan dalam pemanggilan
fungsi. Jenis operator ada dua yaitu operator uner dan operator biner.Operator uner hanya
membutuhkan satu argument,misalnya ++, --, ~. Operator biner membutuhkan dua
argument, misalnya +, -, /, *.
Operator dalam C++ diimplementasikan dengan pemanggilan fungsi. User dapat
meredefinisikan arti suatu operator pada suatu kelas dengan melakukan redefinisi method
yang berkaitan dengan operator tersebut. Tidak semua operator bisa di-overload. Ada
batasan-batasan yang bisa dilakukan dalam operator overloading.
Berikut ini merupakan daftar operator yang dapat di-overload dan yang tidak
dapat di-overload.
Operator yang dapat di-overload
+
&
<
>
+=
-=
*=
/=
%=
^=
&=
|=
<<
>>
>>=
<<=
==
!=
<=
>=
&&
||
++
--
->*
->
[]
()
new
delete
new[]
delete[]
.*
::
?:
sizeof
23
double real;
double imaginer;
public:
complex(double re=0, double im=0)
{
real = re;
imaginer = im;
}
complex operator-()
{
complex result;
result.real = -real;
result.imaginer = -imaginer;
return result;
}
complex operator+(complex c)
{
complex result;
result.real = real + c.real;
result.imaginer = imaginer + c.imaginer;
return result;
}
complex operator-(complex c)
{
complex result;
result.real = real - c.real;
result.imaginer = imaginer - c.imaginer;
return result;
}
void display()
{
cout << '(' << real << ',' << imaginer << ')' << endl;
}
};
int main()
{
complex z(1,2), w(3,4), b;
complex a = z + w;
a.display();
a = z - w;
a.display();
b=-a;
b.display();
}
24
MODUL VI
TEMPLATE CLASS
I. TUJUAN
25
CetakArray(c, cCount);
return 0;
}
26