Nama : Satria Iqbal Pamungkas
NIM : 5302422091
Prodi : Pendidikan Teknik Informatika dan Komputer
Jurusan : Teknik Elektro
MK : Pemrograman Berorientasi Objek
JOBHEEET
Inheritance, Methods and Its Variation
Job: Public, protected, private
Program 1
#include <iostream>
using namespace std;
class Line {
public:
double length;
void setLength( double len );
double getLength( void );
};
// Member functions definitions
double Line::getLength(void) {
return length ;
}
void Line::setLength( double len) {
length = len;
}
// Main function for the program
int main() {
Line line;
// set line length
line.setLength(6.0);
cout << "Length of line : " << line.getLength() <<endl;
// set line length without member function
line.length = 10.0; // OK: because length is public
cout << "Length of line : " << line.length <<endl;
return 0;
}
Program 2
#include <iostream>
using namespace std;
class Box {
public:
double length;
void setWidth( double wid );
double getWidth( void );
private:
double width;
};
// Member functions definitions
double Box::getWidth(void) {
return width ;
}
void Box::setWidth( double wid ) {
width = wid;
}
// Main function for the program
int main() {
Box box;
// set box length without member function
box.length = 10.0; // OK: because length is public
cout << "Length of box : " << box.length <<endl;
// set box width without member function
// box.width = 10.0; // Error: because width is private
box.setWidth(10.0); // Use member function to set it.
cout << "Width of box : " << box.getWidth() <<endl;
return 0;
}
Progam 3
#include <iostream>
using namespace std;
class Box {
protected:
double width;
};
class SmallBox:Box { // SmallBox is the derived class.
public:
void setSmallWidth( double wid );
double getSmallWidth( void );
};
// Member functions of child class
double SmallBox::getSmallWidth(void) {
return width ;
}
void SmallBox::setSmallWidth( double wid ) {
width = wid;
}
// Main function for the program
int main() {
SmallBox box;
// set box width using member function
box.setSmallWidth(5.0);
cout << "Width of box : "<< box.getSmallWidth() << endl;
return 0;
}
Job: Object as Argumnet
Program 1
#include <iostream>
using namespace std;
class Demo {
private:
int a;
public:
void set(int x)
{
a = x;
}
void sum(Demo ob1, Demo ob2)
{
a = ob1.a + ob2.a;
}
void print()
{
cout << "Value of A : " << a << endl;
}
};
int main()
{
//object declarations
Demo d1;
Demo d2;
Demo d3;
//assigning values to the data member of objects
d1.set(10);
d2.set(20);
//passing object d1 and d2
d3.sum(d1, d2);
//printing the values
d1.print();
d2.print();
d3.print();
return 0;
}
Program 2
#include <iostream>
using namespace std;
class Student {
public:
double marks;
// constructor to initialize marks
Student(double m) {
marks = m;
}
};
// function that has objects as parameters
void calculateAverage(Student s1, Student s2)
{
// calculate the average of marks of s1 and s2
double average = (s1.marks + s2.marks) / 2;
cout << "Average Marks = " << average << endl;
}
int main() {
Student student1(88.0), student2(56.0);
// pass the objects as arguments
calculateAverage(student1, student2);
return 0;
}
Program 3
#include<iostream>
Using namespace std;
class weight {
int kilogram;
int gram;
public:
void getdata ();
void putdata ();
void sum_weight (weight,weight) ;
} ;
void weight :: getdata() {
cout<<"/nKilograms:";
cin>>kilogram;
cout<<"Grams:";
cin>>gram;
}
void weight :: putdata () {
cout<<kilogram<<" Kgs. and"<<gram<<" gros.\n";
}
void weight :: sum_weight(weight w1,weight w2) {
gram = w1.gram + w2.gram;
kilogram=gram/1000;
gram=gram%1000;
kilogram+=w1.kilogram+w2.kilogram;
}
int main () {
weight w1,w2 ,w3;
cout<<"Enter weight in kilograms and grams\n";
cout<<"\n Enter weight #1" ;
w1.getdata();
cout<<" \n Enter weight #2" ;
w2.getdata();
w3.sum_weight(w1,w2);
cout<<"/n Weight #1 = ";
w1.putdata();
cout<<"Weight #2 = ";
w2.putdata();
cout<<"Total Weight = ";
w3.putdata();
return 0;
}
Object as Array
Program 1
#include <iostream>
using namespace std;
class Student {
public:
string name;
int rollno;
Student() {}
Student(string x, int y) {
name = x;
rollno = y;
}
void printDetails() {
cout << rollno << " - " << name << endl;
}
};
int main() {
//declare array with specific size
Student students[5];
//assign objects
students[0] = Student("Ram", 5);
students[1] = Student("Alex", 1);
students[2] = Student("Lesha", 4);
students[3] = Student("Emily", 3);
students[4] = Student("Anita", 2);
for(int i=0; i < 5; i++) {
students[i].printDetails();
}
}
Progam 2
#include <iostream>
using namespace std;
class Student {
public:
string name;
int rollno;
Student() {}
Student(string x, int y) {
name = x;
rollno = y;
}
void printDetails() {
cout << rollno << " - " << name << endl;
}
};
int main() {
//declare array with specific size
Student students[] = {Student("Ram", 5), Student("Lesha", 4),
Student("Anita", 2)};
for(int i=0; i < 3; i++) {
students[i].printDetails();
}
}
Multi Inheritance
Program 1
// multiple inheritance.cpp
#include
using namespace std;
class A
{
public:
int x;
void getx()
{
cout << "enter value of x: "; cin >> x;
}
};
class B
{
public:
int y;
void gety()
{
cout << "enter value of y: "; cin >> y;
}
};
class C : public A, public B //C is derived from class A and class
B
{
public:
void sum()
{
cout << "Sum = " << x + y;
}
};
int main()
{
C obj1; //object of derived class C
obj1.getx();
obj1.gety();
obj1.sum();
return 0;
}
Program 2
#include <iostream>
using namespace std;
class Laptop {
protected:
string processor = "AMD Ryzen 7";
string merk = "Lenovo";
string memory = "8 GB";
public:
string cekLaptop() {
return "Ini berasal dari class Laptop";
}
};
class Smartphone {
protected:
string jaringan = "3G/4G";
public:
string cekSmartphone() {
return "Ini berasal dari class Smartphone";
}
};
class SmartLaptop: public Laptop, public Smartphone{
public:
string lihatSpec() {
return "Merk: " + merk + ", processor: " + processor +
", jumlah memory: " + memory + ", jaringan " +
jaringan;
}
string cekSmartLaptop() {
return "Ini berasal dari class SmartLaptop";
}
};
int main()
{
SmartLaptop smartLaptopAndi;
cout << smartLaptopAndi.lihatSpec() << endl;
cout << smartLaptopAndi.cekLaptop() << endl;
cout << smartLaptopAndi.cekSmartphone() << endl;
cout << smartLaptopAndi.cekSmartLaptop() << endl;
return 0;
}
Tugas
1. Tranformasikan setiap kode c++ diatas kedalam bahasa Python kemudian berikan
ulasan tentang ouputnya.
Jawab:
1. Job: Public, protected, private
a. Program 1
Output program 1 pada C++
Code dan Output program 1 pada python
Ulasan:
Kode Python pertama-tama mendefinisikan kelas Line dengan tiga metode: __init__
(konstruktor), setLength, dan getLength. Panjang garis line diatur ke 6.0 menggunakan
setLength, dan panjangnya dicetak menggunakan metode getLength(). Outputnya akan
menjadi: "Length of line: 6.0". Panjang garis line diatur langsung ke 10.0 tanpa
menggunakan metode anggota, karena atribut length bersifat publik. Panjangnya
kemudian dicetak langsung. Outputnya akan menjadi: "Length of line: 10.0". Hasil
keluaran (output) dari kode Python ini akan sama dengan kode C++ yang asli.
b. Program 2
Output program 2 pada C++
Code dan Output program 2 pada python
Ulasan: Panjang kotak diatur ke 10.0 tanpa menggunakan metode anggota karena
panjang adalah atribut publik. Outputnya akan mencetak: "Panjang kotak: 10.0".
Untuk mengatur lebarnya Menggunakan metode anggota setWidth , dan kemudian
menggunakan metode anggota getWidth untuk mengambil nilai lebar. Outputnya akan
mencetak: "Lebar kotak: 10.0". Hasil keluaran (output) dari kode Python ini akan sama
dengan kode C++ yang asli.
c. Program 3
Output program 3 pada C++
Code dan Output program 3 pada python
Ulasan: Definisi terdapat dua kelas, yaitu Box dan SmallBox. SmallBox adalah kelas
turunan dari Box yang berarti SmallBox mewarisi atribut width dari kelas Box.
Objek box dari kelas SmallBox dibuat. Lebar kotak diatur ke 5.0 menggunakan metode
anggota setSmallWidth. Kemudian, metode anggota getSmallWidth digunakan untuk
mendapatkan nilai lebar kotak yang telah diatur. Outputnya akan mencetak: "Lebar
kotak: 5.0" Hasil keluaran (output) dari kode Python ini akan sama dengan kode C++
yang asli.
2. Job: Object as Argumnet
a. Program 1
Output program 1 pada C++
Code dan Output program 1 pada python
Ulasan: Definisi kelas Demo dengan atribut a. Objek-objek d1, d2, dan d3 dari kelas
Demo dideklarasikan. Nilai-nilai diberikan ke atribut data objek-objek dengan
menggunakan metode set. Metode sum digunakan untuk menghitung jumlah a dari dua
objek yang berbeda, yaitu d1 dan d2, dan hasilnya disimpan di dalam objek d3. Metode
print digunakan untuk mencetak nilai a dari setiap objek. Hasil keluaran (output) dari
kode Python ini akan sama dengan kode C++ yang asli.
b. Program 2
Output program 2 pada C++
Code dan Output program 2 pada python
Ulasan: definisi sebuah kelas Student dengan atribut marks dan memiliki konstruktor
untuk menginisialisasi atribut tersebut. Selanjutnya, ada sebuah fungsi
calculate_average yang mengambil dua objek Student sebagai parameter, menghitung
rata-rata nilai dari kedua objek tersebut, dan mencetak hasilnya. Di dalam fungsi
main, dua objek Student dibuat, yaitu student1 dan student2, dan kemudian fungsi
calculate_average dipanggil dengan kedua objek tersebut sebagai argumen. Hasilnya
adalah mencetak rata-rata nilai dari kedua objek, yaitu 72.0.
c. Program 3
Output program 2 pada C++
Code dan Output program 2 pada python
Ulasan:
Kode Python di atas melakukan hal yang sama dengan kode C++ yang diberikan. Ini
mendefinisikan sebuah kelas Weight dengan atribut kilogram dan gram, serta memiliki
metode get_data untuk mengisi data berat, put_data untuk mencetak data berat, dan
sum_weight untuk menghitung total berat. Di dalam fungsi main, tiga objek Weight
dibuat, yaitu w1, w2, dan w3, dan kemudian data berat untuk dua objek pertama
dimasukkan oleh pengguna. Setelah itu, objek w3 digunakan untuk menghitung total
berat dari dua objek pertama dan mencetak hasilnya.
3. Object as Array
a. Program 1
Output program 1 pada C++
Code dan Output program 1 pada python
Ulasan:
Kode Python di atas melakukan hal yang sama dengan kode C++ yang diberikan. Ini
mendefinisikan sebuah kelas Student dengan atribut name dan rollno, serta memiliki
konstruktor __init__ untuk menginisialisasi atribut tersebut. Di dalam fungsi main,
sebuah daftar (list) students dibuat dengan panjang 5, dan kemudian objek Student
dimasukkan ke dalam daftar ini dengan nilai nama dan nomor roll yang sesuai.
Selanjutnya, loop for digunakan untuk mencetak detail setiap siswa dalam daftar.
b. Program 2
Output program 2 pada C++
Code dan Output program 2 pada python
Ulasan:
Kode Python di atas melakukan hal yang sama dengan kode C++ yang diberikan. Ini
mendefinisikan sebuah kelas Student dengan atribut name dan rollno, serta memiliki
konstruktor __init__ untuk menginisialisasi atribut tersebut. Di dalam fungsi main,
sebuah daftar (list) students dibuat dengan objek Student yang diinisialisasi secara
langsung menggunakan sintaksis daftar inisialisasi Python. Selanjutnya, loop for
digunakan untuk mencetak detail setiap siswa dalam daftar. Kode ini memanfaatkan
fleksibilitas bahasa Python dalam menginisialisasi objek secara langsung dalam daftar.
4. Multi Inheritance
a. Program 1
Output program 1 pada C++
Code dan Output program 1 pada python
Ulasan:
Kode Python di atas melakukan hal yang sama dengan kode C++ yang diberikan. Ini
mendefinisikan tiga kelas: A, B, dan C. Kelas A dan B memiliki metode get_x dan
get_y untuk mengambil input dari pengguna dan menginisialisasi atribut x dan y
masing-masing. Kelas C mewarisi dari kedua kelas A dan B, sehingga memiliki akses
ke atribut dan metode dari keduanya. Di dalam fungsi main, objek obj1 dari kelas C
dibuat, dan metode get_x, get_y, dan sum dipanggil pada objek ini. Hasilnya adalah
mencetak jumlah dari x dan y yang telah diinput oleh pengguna. Penerapan multiple
inheritance pada Python mirip dengan C++, dengan kelas C yang dapat mengakses
atribut dan metode dari kedua kelas A dan B.
b. Program 2
Output program 1 pada C++
Code dan Output program 1 pada python
Ulasan:
Kode Python di atas menciptakan tiga kelas: Laptop, Smartphone, dan
SmartLaptop. Kelas Laptop dan Smartphone memiliki atribut dan metode masing-
masing, sedangkan kelas SmartLaptop mewarisi dari keduanya.
Dalam fungsi main, objek smart_laptop_andi dari kelas SmartLaptop dibuat.
Kemudian, kita mencetak spesifikasi laptop dan smartphone menggunakan metode
lihat_spec yang menggabungkan atribut dari kedua kelas yang diwarisi. Selain itu,
kita juga mencetak metode dari kelas-kelas yang berbeda, seperti cek_laptop,
cek_smartphone, dan cek_smart_laptop.
Hasilnya adalah mencetak informasi spesifikasi dari smart laptop, serta pesan yang
berasal dari masing-masing kelas, yang menunjukkan bahwa multiple inheritance
berfungsi dengan baik dalam Python, akan tetapi fungsi yang menunjukkan jaringan
tidak dapat ditampilkan pada python. Bebeda dengan C++ yang dapat menampilkan
fungsi jaringan